Status update — TCP/UDP MIDI requirement unnecessary; Cholidean Harmony Structure consumes MuseScore MIDI output #29598
Replies: 1 comment
-
|
Since opening this request, I rejected TCP due to its high latency on Windows and instead implemented a UDP‑based backend in my Cholidean Harmony Structure project: It listens for raw MIDI bytes over UDP and merges them into a live note state at ~50 Hz. This has proven that a socket‑based event stream is both lightweight and reliable for real‑time visualization. ▶ See it in action: Windows demo video] The visualization does not attempt to label chords or assign harmonic functions. Instead, the 12‑tone equal temperament system is projected into 3D space, where harmonic relationships and progressions become visible as natural geometric movements. Just as theorists interpret what they hear, they can also interpret what they see — the system provides the raw, immediate structure, leaving analysis open to the observer.
The Cholidean harmonic structure operates in parallel with MuseScore, unveiling the harmony within the composition. |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Status update
I discovered a practical, working solution: my project Cholidean Harmony Structure can consume MuseScore’s real-time MIDI output and produce live visualization without any MuseScore code changes. To set this up, in MuseScore Preferences under Audio & MIDI, the MIDI Output should be set to a virtual port such as "Midi Through." On Linux, the project’s midiport backend reads ALSA MIDI output; on Windows, the udpMidi backend works with a loopback virtual MIDI port named "midiBridgePort" and a small bridge (src/backends/udpMidi/binaries/udp-midi-bridge-windows.exe). This means the original feature request can be treated as an announcement/demo of a working integration rather than a strict MuseScore-side feature request.
Background
In my previous post How MuseScore motivated me to read about harmony, I introduced a 3D harmony structure that projects notes, chords, and scales as geometric entities in real time. Despite my limited programming background, I turned that idea into a working prototype:
Cholidean Harmony Structure
https://github.com/jimishol/cholidean-harmony-structure#cholidean-harmony-structure
The Challenge
Today, no MIDI application I know—MuseScore included—ever exposes the fundamental Note On/Off (or velocity=0) events outside its own audio engine. My visualizer (written in Lua) can only abuse FluidSynth’s console output.
Feature Request
Edit: After testing, I found TCP latency on Windows too high for real‑time use, so I’ve settled on UDP as the practical solution.
Could MuseScore offer an optional TCP-based MIDI event stream? In practice, this would be a lightweight server you toggle in Preferences (or via a tiny QML plugin) that broadcasts every note-on/note-off over a socket. My Lua tool could then connect with plain TCP—no extra libraries—let the events flow, and render harmony in 3D live.
Basic Requirements
127.0.0.19000Why This Matters
Questions for the Community
1. Has anyone else needed raw MIDI event streaming from MuseScore?2. Are there hidden hooks or plugin APIs I’ve missed?
3. Would a raw-byte TCP approach fit MuseScore’s architecture?
4. What minimal UI/UX would you recommend for configuration?
Given the existing solution with Cholidean Harmony Structure, the original request no longer applies. However, if anyone is interested in improving integration, exploring plugin possibilities, or expanding backend support, I’d love to hear your thoughts.
Thank you for reading! With the current workaround via MIDI output, I believe this approach can unlock a whole new class of educational and creative tools.
Beta Was this translation helpful? Give feedback.
All reactions