Open
Conversation
- Add PresetDialog component with save/load UI - Implement preset management with localStorage persistence - Add Save button (floppy disk icon) to top toolbar - Support exporting/importing presets as JSON files - Allow users to save current pad configurations and global scale settings - Enable quick switching between different board setups Users can now: - Save current board configuration as named preset - Load previously saved presets - Delete unwanted presets - Export all presets to JSON file - Import presets from JSON file
Add option to automatically stop any playing chord when a new chord is pressed, useful for synths with limited polyphony that behave strangely when chords overlap. - Add singleChordMode state to useMidi composable - Persist setting in localStorage with other MIDI settings - Add checkbox toggle in MidiDialog with proper dirty state tracking - Modify onStartPad to stop all other pads when single-chord mode enabled - Automatically save setting when MIDI dialog is saved Users can now enable single-chord mode from MIDI settings to ensure only one chord plays at a time, preventing polyphony issues on hardware synths.
Allow users to set custom MIDI velocity (0-127) for each note in a chord, enabling fine-grained control over note dynamics and emphasis. Changes: - Add velocities array to pad data structure (defaults to 127 per note) - Add velocity slider UI in EditDialog for each note in the chord - Display note name above slider and velocity value (0-127) below - Apply individual note velocities in onStartPad when playing chords - Fully backward compatible - existing pads default to velocity 127 Users can now customize the volume/emphasis of individual notes within chords, useful for voice leading, bass emphasis, or creating dynamic chord voicings.
Add tempo control to Music Settings dialog (formerly Global Scale) with support for MIDI clock synchronization. Changes: - Add tempo state (20-300 BPM, default 120) with localStorage persistence - Add tempoMidiSync flag for enabling MIDI clock sync - Implement MIDI clock listener to detect tempo from MIDI input - Listens for MIDI clock messages (24 PPQN) - Calculates BPM from clock timing - Updates detectedMidiTempo in real-time - Add tempo slider with BPM display to GlobalKeyDialog - Add "Sync from MIDI clock" checkbox - Disables slider when MIDI sync is enabled - Shows detected MIDI tempo instead of manual tempo - Requires MIDI to be enabled - Rename dialog title to "Music Settings" - Add section headers for Global Scale and Tempo The tempo setting is stored but not yet used - it will be utilized by future arpeggiator functionality. MIDI clock sync automatically detects tempo from external MIDI devices sending clock messages, useful for syncing to DAWs or hardware sequencers.
- Add arpeggiator settings to pad data structure (enabled, pattern, rate) - Implement UI controls in pad editor with checkbox and two selectors - Add pattern options: up, down, up&down, random, and 2-octave variants - Add rate options: quarter, eighth, sixteenth, thirty-second notes and triplets - Implement arpeggiator timing logic using global BPM or MIDI sync - Add pattern generation for sequential and random arpeggiation - Integrate with pad playback system (replaces chord playback when enabled) - Stop arpeggiator when pad is released or another chord plays - Respect individual note velocities from velocity sliders
Several Feature Additions
This includes commits to add:
1. Presets:
- Save/Load
- Import/Export
2. Velocity control:
- Change velocity of each note in a chord
3. Arpeggiator:
- Modeled after the arpeggiator of the Roland Aira S-1
- Selectable patterns and rates
- Rates are either:
- Synced to global tempo
- Synced to MIDI in clock
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi, I really like your project! I wanted it to do a few more things. I'm not much of a web developer, so I used Claude for a lot of this. I've tested it pretty extensively with my Android tablet, my Roland AIRA S-1, and my Apple //e (with a MIDI card, sound card, and a program to join the two) and it all seems to work. I've tried to keep the UI nice, but that's certainly not my strength, so the pad settings especially are a bit crowded with these changes, unfortunately.
This includes commits to add: