2 Commits
5e982b478c
...
6f2517f653
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
6f2517f653 |
Add Note Limit feature and fix armed system for pattern settings
Major updates: - Add Note Limit (1-7) to pattern settings - restricts which notes from scale are used - Fix pattern length and note limit to use proper armed system - Both settings now arm (orange) and apply at pattern end without interference - Add spacebar emergency stop (stop-only, doesn't start playback) - Pattern generation respects note limit for all pattern types - Note limit included in preset save/load system - Updated status bar to reflect emergency stop functionality Example: Scale=C major, Note Limit=3, Pattern Length=8 Result: C,D,E,C,D,E,C,D (then pattern repeats) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
2 months ago |
|
|
f03698ca86 |
Fix group cycling with note-based timing and GUI scaling
Major improvements to preset group functionality: - Replace timer-based cycling with accurate note counting via pattern_step signal - Group cycling now counts actual notes played (pattern_length × loop_count) - Add GUI scaling support for dynamic button sizing on different resolutions - Implement complete preset group UI with add/remove, manual controls, and status - Add master file save/load functionality for preset groups - Fix scale_note_start not saving in presets - Update button styling across all controls for consistency 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
2 months ago |
22 changed files with 1562 additions and 106 deletions
-
17.claude/settings.local.json
-
BIN__pycache__/main.cpython-310.pyc
-
BINcore/__pycache__/arpeggiator_engine.cpython-310.pyc
-
BINcore/__pycache__/output_manager.cpython-310.pyc
-
BINcore/__pycache__/volume_pattern_engine.cpython-310.pyc
-
82core/arpeggiator_engine.py
-
BINgui/__pycache__/arpeggiator_controls.cpython-310.pyc
-
BINgui/__pycache__/channel_controls.cpython-310.pyc
-
BINgui/__pycache__/main_window.cpython-310.pyc
-
BINgui/__pycache__/output_controls.cpython-310.pyc
-
BINgui/__pycache__/preset_controls.cpython-310.pyc
-
BINgui/__pycache__/simulator_display.cpython-310.pyc
-
BINgui/__pycache__/volume_controls.cpython-310.pyc
-
255gui/arpeggiator_controls.py
-
103gui/main_window.py
-
633gui/preset_controls.py
-
119gui/volume_controls.py
-
129master_files/example_master.json
-
193master_files/test master.json
-
21presets/two Copy Copy.json
-
58presets/two Copy.json
-
58presets/two.json
@ -0,0 +1,129 @@ |
|||||
|
{ |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T18:57:00.000000", |
||||
|
"type": "master_file", |
||||
|
"presets": { |
||||
|
"Slow Ambient": { |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T18:57:00.000000", |
||||
|
"arpeggiator": { |
||||
|
"root_note": 60, |
||||
|
"scale": "minor", |
||||
|
"scale_note_start": 0, |
||||
|
"pattern_type": "up", |
||||
|
"octave_range": 2, |
||||
|
"note_speed": "1/2", |
||||
|
"gate": 0.8, |
||||
|
"swing": 0.0, |
||||
|
"velocity": 60, |
||||
|
"tempo": 70.0, |
||||
|
"user_pattern_length": 8, |
||||
|
"channel_distribution": "up", |
||||
|
"delay_enabled": true, |
||||
|
"delay_length": 3, |
||||
|
"delay_timing": "1/4", |
||||
|
"delay_fade": 0.5 |
||||
|
}, |
||||
|
"channels": { |
||||
|
"active_synth_count": 4, |
||||
|
"channel_instruments": { |
||||
|
"1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, |
||||
|
"9": 0, "10": 0, "11": 0, "12": 0, "13": 0, "14": 0, "15": 0, "16": 0 |
||||
|
} |
||||
|
}, |
||||
|
"volume_patterns": { |
||||
|
"current_pattern": "swell", |
||||
|
"pattern_speed": 0.5, |
||||
|
"pattern_intensity": 0.8, |
||||
|
"global_volume_range": [0.2, 0.7], |
||||
|
"global_velocity_range": [40, 80], |
||||
|
"channel_volume_ranges": {}, |
||||
|
"velocity_ranges": {} |
||||
|
} |
||||
|
}, |
||||
|
"Fast Dance": { |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T18:57:00.000000", |
||||
|
"arpeggiator": { |
||||
|
"root_note": 64, |
||||
|
"scale": "major", |
||||
|
"scale_note_start": 0, |
||||
|
"pattern_type": "up_down", |
||||
|
"octave_range": 1, |
||||
|
"note_speed": "1/16", |
||||
|
"gate": 0.5, |
||||
|
"swing": 0.2, |
||||
|
"velocity": 120, |
||||
|
"tempo": 140.0, |
||||
|
"user_pattern_length": 4, |
||||
|
"channel_distribution": "bounce", |
||||
|
"delay_enabled": false, |
||||
|
"delay_length": 0, |
||||
|
"delay_timing": "1/8", |
||||
|
"delay_fade": 0.3 |
||||
|
}, |
||||
|
"channels": { |
||||
|
"active_synth_count": 8, |
||||
|
"channel_instruments": { |
||||
|
"1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, |
||||
|
"9": 0, "10": 0, "11": 0, "12": 0, "13": 0, "14": 0, "15": 0, "16": 0 |
||||
|
} |
||||
|
}, |
||||
|
"volume_patterns": { |
||||
|
"current_pattern": "random_sparkle", |
||||
|
"pattern_speed": 2.0, |
||||
|
"pattern_intensity": 1.0, |
||||
|
"global_volume_range": [0.6, 1.0], |
||||
|
"global_velocity_range": [100, 127], |
||||
|
"channel_volume_ranges": {}, |
||||
|
"velocity_ranges": {} |
||||
|
} |
||||
|
}, |
||||
|
"Med Groove": { |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T18:57:00.000000", |
||||
|
"arpeggiator": { |
||||
|
"root_note": 67, |
||||
|
"scale": "dorian", |
||||
|
"scale_note_start": 2, |
||||
|
"pattern_type": "down_up", |
||||
|
"octave_range": 2, |
||||
|
"note_speed": "1/8", |
||||
|
"gate": 0.7, |
||||
|
"swing": 0.1, |
||||
|
"velocity": 90, |
||||
|
"tempo": 110.0, |
||||
|
"user_pattern_length": 6, |
||||
|
"channel_distribution": "single_channel", |
||||
|
"delay_enabled": true, |
||||
|
"delay_length": 2, |
||||
|
"delay_timing": "1/8T", |
||||
|
"delay_fade": 0.4 |
||||
|
}, |
||||
|
"channels": { |
||||
|
"active_synth_count": 3, |
||||
|
"channel_instruments": { |
||||
|
"1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, |
||||
|
"9": 0, "10": 0, "11": 0, "12": 0, "13": 0, "14": 0, "15": 0, "16": 0 |
||||
|
} |
||||
|
}, |
||||
|
"volume_patterns": { |
||||
|
"current_pattern": "accent_4", |
||||
|
"pattern_speed": 1.0, |
||||
|
"pattern_intensity": 0.9, |
||||
|
"global_volume_range": [0.3, 0.9], |
||||
|
"global_velocity_range": [70, 110], |
||||
|
"channel_volume_ranges": {}, |
||||
|
"velocity_ranges": {} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"preset_group": { |
||||
|
"enabled": false, |
||||
|
"presets": ["Slow Ambient", "Med Groove", "Fast Dance"], |
||||
|
"loop_count": 2, |
||||
|
"order": "in_order", |
||||
|
"current_index": 0, |
||||
|
"current_loops": 0 |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,193 @@ |
|||||
|
{ |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T13:59:32.284079", |
||||
|
"type": "master_file", |
||||
|
"presets": { |
||||
|
"two Copy Copy": { |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T13:51:05.409379", |
||||
|
"arpeggiator": { |
||||
|
"root_note": 60, |
||||
|
"scale": "mixolydian", |
||||
|
"scale_note_start": 3, |
||||
|
"pattern_type": "down", |
||||
|
"octave_range": 1, |
||||
|
"note_speed": "1/2", |
||||
|
"gate": 0.71, |
||||
|
"swing": 0.0, |
||||
|
"velocity": 127, |
||||
|
"tempo": 120.0, |
||||
|
"user_pattern_length": 3, |
||||
|
"channel_distribution": "up", |
||||
|
"delay_enabled": true, |
||||
|
"delay_length": 2, |
||||
|
"delay_timing": "2/1T", |
||||
|
"delay_fade": 0.44 |
||||
|
}, |
||||
|
"channels": { |
||||
|
"active_synth_count": 3, |
||||
|
"channel_instruments": { |
||||
|
"1": 0, |
||||
|
"2": 0, |
||||
|
"3": 0, |
||||
|
"4": 0, |
||||
|
"5": 0, |
||||
|
"6": 0, |
||||
|
"7": 0, |
||||
|
"8": 0, |
||||
|
"9": 0, |
||||
|
"10": 0, |
||||
|
"11": 0, |
||||
|
"12": 0, |
||||
|
"13": 0, |
||||
|
"14": 0, |
||||
|
"15": 0, |
||||
|
"16": 0 |
||||
|
} |
||||
|
}, |
||||
|
"volume_patterns": { |
||||
|
"current_pattern": "static", |
||||
|
"pattern_speed": 2.0, |
||||
|
"pattern_intensity": 1.0, |
||||
|
"global_volume_range": [ |
||||
|
0.0, |
||||
|
1.0 |
||||
|
], |
||||
|
"global_velocity_range": [ |
||||
|
40, |
||||
|
127 |
||||
|
], |
||||
|
"channel_volume_ranges": {}, |
||||
|
"velocity_ranges": {} |
||||
|
} |
||||
|
}, |
||||
|
"two Copy": { |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T13:50:13.070241", |
||||
|
"arpeggiator": { |
||||
|
"root_note": 60, |
||||
|
"scale": "mixolydian", |
||||
|
"scale_note_start": 0, |
||||
|
"pattern_type": "down", |
||||
|
"octave_range": 1, |
||||
|
"note_speed": "1/2", |
||||
|
"gate": 0.71, |
||||
|
"swing": 0.0, |
||||
|
"velocity": 127, |
||||
|
"tempo": 120.0, |
||||
|
"user_pattern_length": 3, |
||||
|
"channel_distribution": "up", |
||||
|
"delay_enabled": true, |
||||
|
"delay_length": 2, |
||||
|
"delay_timing": "2/1T", |
||||
|
"delay_fade": 0.44 |
||||
|
}, |
||||
|
"channels": { |
||||
|
"active_synth_count": 3, |
||||
|
"channel_instruments": { |
||||
|
"1": 0, |
||||
|
"2": 0, |
||||
|
"3": 0, |
||||
|
"4": 0, |
||||
|
"5": 0, |
||||
|
"6": 0, |
||||
|
"7": 0, |
||||
|
"8": 0, |
||||
|
"9": 0, |
||||
|
"10": 0, |
||||
|
"11": 0, |
||||
|
"12": 0, |
||||
|
"13": 0, |
||||
|
"14": 0, |
||||
|
"15": 0, |
||||
|
"16": 0 |
||||
|
} |
||||
|
}, |
||||
|
"volume_patterns": { |
||||
|
"current_pattern": "static", |
||||
|
"pattern_speed": 2.0, |
||||
|
"pattern_intensity": 1.0, |
||||
|
"global_volume_range": [ |
||||
|
0.0, |
||||
|
1.0 |
||||
|
], |
||||
|
"global_velocity_range": [ |
||||
|
40, |
||||
|
127 |
||||
|
], |
||||
|
"channel_volume_ranges": {}, |
||||
|
"velocity_ranges": {} |
||||
|
} |
||||
|
}, |
||||
|
"two": { |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T13:49:16.446087", |
||||
|
"arpeggiator": { |
||||
|
"root_note": 60, |
||||
|
"scale": "mixolydian", |
||||
|
"scale_note_start": 1, |
||||
|
"pattern_type": "down", |
||||
|
"octave_range": 1, |
||||
|
"note_speed": "1/2", |
||||
|
"gate": 0.71, |
||||
|
"swing": 0.0, |
||||
|
"velocity": 127, |
||||
|
"tempo": 120.0, |
||||
|
"user_pattern_length": 3, |
||||
|
"channel_distribution": "up", |
||||
|
"delay_enabled": true, |
||||
|
"delay_length": 2, |
||||
|
"delay_timing": "2/1T", |
||||
|
"delay_fade": 0.44 |
||||
|
}, |
||||
|
"channels": { |
||||
|
"active_synth_count": 3, |
||||
|
"channel_instruments": { |
||||
|
"1": 0, |
||||
|
"2": 0, |
||||
|
"3": 0, |
||||
|
"4": 0, |
||||
|
"5": 0, |
||||
|
"6": 0, |
||||
|
"7": 0, |
||||
|
"8": 0, |
||||
|
"9": 0, |
||||
|
"10": 0, |
||||
|
"11": 0, |
||||
|
"12": 0, |
||||
|
"13": 0, |
||||
|
"14": 0, |
||||
|
"15": 0, |
||||
|
"16": 0 |
||||
|
} |
||||
|
}, |
||||
|
"volume_patterns": { |
||||
|
"current_pattern": "static", |
||||
|
"pattern_speed": 2.0, |
||||
|
"pattern_intensity": 1.0, |
||||
|
"global_volume_range": [ |
||||
|
0.0, |
||||
|
1.0 |
||||
|
], |
||||
|
"global_velocity_range": [ |
||||
|
40, |
||||
|
127 |
||||
|
], |
||||
|
"channel_volume_ranges": {}, |
||||
|
"velocity_ranges": {} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"preset_group": { |
||||
|
"enabled": true, |
||||
|
"presets": [ |
||||
|
"two", |
||||
|
"two Copy", |
||||
|
"two Copy Copy" |
||||
|
], |
||||
|
"loop_count": 1, |
||||
|
"order": "in_order", |
||||
|
"current_index": 0, |
||||
|
"current_loops": 0 |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,58 @@ |
|||||
|
{ |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T13:50:13.070241", |
||||
|
"arpeggiator": { |
||||
|
"root_note": 60, |
||||
|
"scale": "mixolydian", |
||||
|
"scale_note_start": 0, |
||||
|
"pattern_type": "down", |
||||
|
"octave_range": 1, |
||||
|
"note_speed": "1/2", |
||||
|
"gate": 0.71, |
||||
|
"swing": 0.0, |
||||
|
"velocity": 127, |
||||
|
"tempo": 120.0, |
||||
|
"user_pattern_length": 3, |
||||
|
"channel_distribution": "up", |
||||
|
"delay_enabled": true, |
||||
|
"delay_length": 2, |
||||
|
"delay_timing": "2/1T", |
||||
|
"delay_fade": 0.44 |
||||
|
}, |
||||
|
"channels": { |
||||
|
"active_synth_count": 3, |
||||
|
"channel_instruments": { |
||||
|
"1": 0, |
||||
|
"2": 0, |
||||
|
"3": 0, |
||||
|
"4": 0, |
||||
|
"5": 0, |
||||
|
"6": 0, |
||||
|
"7": 0, |
||||
|
"8": 0, |
||||
|
"9": 0, |
||||
|
"10": 0, |
||||
|
"11": 0, |
||||
|
"12": 0, |
||||
|
"13": 0, |
||||
|
"14": 0, |
||||
|
"15": 0, |
||||
|
"16": 0 |
||||
|
} |
||||
|
}, |
||||
|
"volume_patterns": { |
||||
|
"current_pattern": "static", |
||||
|
"pattern_speed": 2.0, |
||||
|
"pattern_intensity": 1.0, |
||||
|
"global_volume_range": [ |
||||
|
0.0, |
||||
|
1.0 |
||||
|
], |
||||
|
"global_velocity_range": [ |
||||
|
40, |
||||
|
127 |
||||
|
], |
||||
|
"channel_volume_ranges": {}, |
||||
|
"velocity_ranges": {} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,58 @@ |
|||||
|
{ |
||||
|
"version": "1.0", |
||||
|
"timestamp": "2025-09-09T13:49:16.446087", |
||||
|
"arpeggiator": { |
||||
|
"root_note": 60, |
||||
|
"scale": "mixolydian", |
||||
|
"scale_note_start": 1, |
||||
|
"pattern_type": "down", |
||||
|
"octave_range": 1, |
||||
|
"note_speed": "1/2", |
||||
|
"gate": 0.71, |
||||
|
"swing": 0.0, |
||||
|
"velocity": 127, |
||||
|
"tempo": 120.0, |
||||
|
"user_pattern_length": 3, |
||||
|
"channel_distribution": "up", |
||||
|
"delay_enabled": true, |
||||
|
"delay_length": 2, |
||||
|
"delay_timing": "2/1T", |
||||
|
"delay_fade": 0.44 |
||||
|
}, |
||||
|
"channels": { |
||||
|
"active_synth_count": 3, |
||||
|
"channel_instruments": { |
||||
|
"1": 0, |
||||
|
"2": 0, |
||||
|
"3": 0, |
||||
|
"4": 0, |
||||
|
"5": 0, |
||||
|
"6": 0, |
||||
|
"7": 0, |
||||
|
"8": 0, |
||||
|
"9": 0, |
||||
|
"10": 0, |
||||
|
"11": 0, |
||||
|
"12": 0, |
||||
|
"13": 0, |
||||
|
"14": 0, |
||||
|
"15": 0, |
||||
|
"16": 0 |
||||
|
} |
||||
|
}, |
||||
|
"volume_patterns": { |
||||
|
"current_pattern": "static", |
||||
|
"pattern_speed": 2.0, |
||||
|
"pattern_intensity": 1.0, |
||||
|
"global_volume_range": [ |
||||
|
0.0, |
||||
|
1.0 |
||||
|
], |
||||
|
"global_velocity_range": [ |
||||
|
40, |
||||
|
127 |
||||
|
], |
||||
|
"channel_volume_ranges": {}, |
||||
|
"velocity_ranges": {} |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue