Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joanroig/midi-to-scaler-chord-sets
Convert chord progressions from midi files to Plugin Boutique's Scaler sets.
https://github.com/joanroig/midi-to-scaler-chord-sets
chord-progression chord-set chords midi plugin-boutique scaler vst
Last synced: 2 months ago
JSON representation
Convert chord progressions from midi files to Plugin Boutique's Scaler sets.
- Host: GitHub
- URL: https://github.com/joanroig/midi-to-scaler-chord-sets
- Owner: joanroig
- License: mit
- Created: 2023-04-26T18:48:10.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-14T17:19:57.000Z (10 months ago)
- Last Synced: 2024-04-21T13:44:28.169Z (10 months ago)
- Topics: chord-progression, chord-set, chords, midi, plugin-boutique, scaler, vst
- Language: TypeScript
- Homepage:
- Size: 487 KB
- Stars: 19
- Watchers: 3
- Forks: 1
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Midi to Scaler chord sets
Convert chord progressions from midi files to Plugin Boutique's Scaler 2 sets.
This little tool iterates through all midi files from a given folder and exports the chord progressions in XML files to easily create Scaler 2 chord packs.
Considerations:
- If a midi file has multiple tracks, only the first track with notes will be used.
- Tested only with midi files that have no overlaps (further testing and pull requests are welcome!).## Example
Go to the `examples` folder to see a converted midi file like this one:
Original midi file
Converted chord set loaded in Scaler 2## Run binaries
- [Download](https://github.com/joanroig/midi-to-scaler-chord-sets/releases) the latest release for your platform (Windows or MacOS) and unzip it.
- Group your .mid or .midi files in folders and add them to the **midis** folder. Each folder will be converted to a set (a demo set with a single chord progression is provided for a quick demo).
- Continue depending on your OS:### Windows
- Open a Command Prompt (cmd.exe) and navigate to the unzipped folder, for example:
`cd C:/Users/YOUR_USER/Downloads/midi-to-scaler-chord-sets_1.0.0_windows`
- Run the tool by typing in the cmd:
`midi-to-scaler-chord-sets.exe`
- The converted files should be in the **sets** folder, copy each folder set to the custom sets folder and start using them: **C:/Users/Public/Documents/Plugin Boutique/Scaler2/Sets**
### MacOS
- Open the Terminal and navigate to the unzipped folder, for example:
`cd /Users/YOUR_USER/Downloads/midi-to-scaler-chord-sets_1.0.0_macos`
- Grant execute permission to the tool by typing in the terminal:
`chmod +x midi-to-scaler-chord-sets`
- Run the tool by typing in the terminal:
`./midi-to-scaler-chord-sets`
- The converted files should be in the **sets** folder, copy each folder set to the custom sets folder and start using them: **/Users/Shared/Plugin Boutique/Scaler2/Sets**
**⚠️Warning:** Running the tool by double clicking the executable may not work because it will look for the configuration file in the home directory.
## Run from source
Be sure to have [Node.js](https://nodejs.org/en/download/) installed, then:
- [Download](https://github.com/joanroig/midi-to-scaler-chord-sets/archive/refs/heads/main.zip) or clone the repo.
- Run `npm install` in the root folder to install dependencies.
- Group your .mid or .midi files in folders and add them to the **midis** folder. Each folder will be converted to a set.
- Run `npm run convert` to run the conversion.
- The converted files should be in the **sets** folder, copy each folder set to the custom sets folder and start using them:
- Windows path: **C:/Users/Public/Documents/Plugin Boutique/Scaler2/Sets**
- MacOS path: **/Users/Shared/Plugin Boutique/Scaler2/Sets**## Configuration
The input, output and threshold for chord detection can be changed in: [config.json](config.json)
### Configuration parameters
- **threshold:** time interval in MIDI ticks to determine the maximum amount of time between note-on and note-off events for the events to be considered part of the same chord.
- **inFolderPath:** folder used to read the midi files, it must contain subfolders with the midi files for each set. The name of each subfolder will name the set.
- **outFolderPath:** folder used to save the converted sets.