Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ifimust/chordless
Analyze MIDI notes. Display which notes/chords are played.
https://github.com/ifimust/chordless
alsa boost cmake-presets gtest midi music qml qt6
Last synced: 3 months ago
JSON representation
Analyze MIDI notes. Display which notes/chords are played.
- Host: GitHub
- URL: https://github.com/ifimust/chordless
- Owner: ifIMust
- License: mit
- Created: 2024-07-17T17:18:36.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-07-31T15:20:53.000Z (6 months ago)
- Last Synced: 2024-09-29T07:41:41.547Z (4 months ago)
- Topics: alsa, boost, cmake-presets, gtest, midi, music, qml, qt6
- Language: C++
- Homepage:
- Size: 188 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# chordless
## Description
chordless is a MIDI note analyzer that runs on Linux.
Any modern Linux version (i.e. with ALSA) should work.The initial project goals are partially completed.
### Project Goals
- Display currently "on" notes from a MIDI instrument (DONE)
- Display chord names matching the note structure (DONE)
- Flesh out supported chords with all typical chord types and inversions (IN PROGRESS)
- Customize displayed info using GUI controls (NOT done)
- Conform to the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html).## Compiling
Requirements (with example Debian/Ubuntu package names):
- CMake 3.25+ (cmake)
- Qt 6.3 dev files (qt6-base-dev, qt6-declarative-dev)
- OpenGL dev files required by Qt6 (libgl1-mesa-dev)
- ALSA dev files (libasound2-dev)
- Boost program_options and json dev files (libboost-json1.81-dev, libboost-program-options1.81-dev)
- An internet connection, since gtest 1.15.0 is downloaded from github during the buildBuild instructions
```
cmake --workflow --preset release
```
The output binary is created at `build/release/chordless`.## Usage
In addition to compile dependencies, `qml6-module-qtquick-templates` is used at runtime.Running `build/release/chordless` from the project root will use the provided `chords.json` config file.
Use `chordless -c FILE_NAME` to specify a different chord configuration or path.An ALSA MIDI input port is opened when the application launches.
Use an ALSA utility such as `aconnectgui` to connect your MIDI instrument to chordless.
Notes are read from all MIDI channels, and all other MIDI traffic is ignored.![chordless and aconnectgui](/screenshot.png?raw=true "Screenshot")
## Planned steps
- Deploy a package that includes most/all dependencies.
- Create a .deb package.
- Toggle numeric subscript visibility with a UI widget.
- Use a config file for general progam settings.## Further work
- Select key/mode, for improved chord naming/analysis.
- JACK MIDI input
- Sustain checkbox: Keep notes on, respecting sustain pedal.
- Bass chords only
- Apply chord detection only to lowest matching pattern.
- Would match chords to the prevailing harmony (left hand) without being muddled by the melody (right hand).
- Control this setting with a UI widget.