Skip to content

ColorChord is a real-time chromatic music visualizer. Based on cnlohr's work, ported to C#.NET and improved.

License

Notifications You must be signed in to change notification settings

CaiB/ColorChord.NET

Repository files navigation

ColorChord.NET

⚠️ Photosensitivity Warning: This is a music visualizer tool, so the documentation, demos, and program have bright, coloured, potentially fast flashing lights.

See the ColorChord.NET Website for documentation/install instructions.

Info

My port and enhancement of cnlohr's ColorChord 2.

Uses Vannatech/dorba's netcoreaudio for WASAPI support.

Somewhat different from cnlohr's version, I divided components into 5 categories:

  • Audio Sources: Pipes audio data from some location into the NoteFinder. (e.g. WASAPI Loopback)
  • Note Finder: Turns raw audio data into note information.
  • Visualizers: Takes note info from the NoteFinder, and turns it into a format that is outputtable via some method. (e.g. Linear)
  • Outputs: Takes data from a visualizer, and actually displays/outputs it somewhere. (e.g. UDP packets)
  • Controllers: Edits the behaviour of any of the above system components during runtime.

A single instance of the application supports a single audio source, any number of visualizers, each with its own set of (any number of) outputs. This allows for a single audio stream to be processed and displayed in almost any desired combination of ways.

Only some sources, visualizers, and outputs from the base version have been implemented, but some new additions are also available.

The system performs very well, requiring negligible CPU and RAM, especially if only network output is needed.

I try to maintain the same behaviour given the same inputs as cnlohr's version. If you notice an undocumented difference, please let me know.

Development

I work in Visual Studio 2022, and auto-builds are done by AppVeyor.
To prevent a commit from triggering an auto-build and release, prepend the commit message with [NAB].

Random other notes for myself:

Compiling .so from C source on Linux:
gcc [Input File].c -shared -fpic -o [Output File].so