Sequencer. (fork of elaforge's karya)
root / Cmd
- Instrument
- Integrate
- Load
- Repl
- Ruler
- BlockConfig.hs
- BlockConfig_test.hs
- BlockResize.hs
- BlockResize_test.hs
- CallDoc.hs
- CallDoc_test.hs
- Clip.hs
- Clip_test.hs
- Cmd.hs
- CmdTest.hs
- ControlTrack.hs
- ControlTrack_test.hs
- Controller.hs
- Create.hs
- Create_test.hs
- DiffPerformance.hs
- Edit.hs
- EditUtil.hs
- EditUtil_test.hs
- Edit_test.hs
- Factor.hs
- Factor_test.hs
- GlobalKeymap.hs
- Im_test.hs
- Info.hs
- Info_test.hs
- InputNote.hs
- InputNote_test.hs
- Integrate.hs
- Integrate_test.hs
- Internal.hs
- KeyLayouts.hs
- Keymap.hs
- Keymap_test.hs
- Ky.hs
- Ky_test.hs
- Lilypond.hs
- MemoryLeak_profile.hs
- MidiThru.hs
- MidiThru_test.hs
- ModifyEvents.hs
- ModifyEvents_test.hs
- ModifyNotes.hs
- ModifyNotes_test.hs
- Msg.hs
- NoteEntry.hs
- NoteEntry_test.hs
- NoteTrack.hs
- NoteTrackKeymap.hs
- NoteTrack_test.hs
- Perf.hs
- Perf_test.hs
- Performance.hs
- PitchTrack.hs
- PitchTrack_test.hs
- Play.hs
- PlayC.hs
- PlayUtil.hs
- PlayUtil_test.hs
- README.md
- Repl.hs
- ReplGhc.hs
- ReplGhc_test.hs
- ReplStub.hs
- Responder.hs
- ResponderSync.hs
- ResponderTest.hs
- Responder_profile.hs
- Responder_test.hs
- Ruler.hs
- Save.hs
- SaveGit.hs
- SaveGitTypes.hs
- SaveGit_test.hs
- Selection.hs
- Selection_test.hs
- Serialize.hs
- Serialize_test.hs
- Simple.hs
- Space_profile.hs
- StepPlay.hs
- StepPlay_test.hs
- TimeStep.hs
- TimeStep_test.hs
- Track.hs
- Undo.hs
- Undo_test.hs
- ViewConfig.hs
- ViewConfig_test.hs
- Views.hs
Cmds turn user input into actions. This is mostly modifying internal application state, but may also have IO effects, e.g. reading and writing save files, or writing MIDI.
The basic unit of user input is a 'Cmd.Msg.Msg'. The toplevel cmd loop is in 'Cmd.Responder'. The top level set of Cmds is hardcoded in Cmd.Responder, and consists of these groups:
Internal housekeeping such as keeping track of which keys are held down, mostly implemented in 'Cmd.Internal'.
Global keymap, implemented in 'Cmd.GlobalKeymap'.
Track-specific Cmds, which vary based on the track type, implemented in 'Cmd.Track'.
REPL cmds, directly invoked by the user via the REPL. This could be any cmd anywhere, but there is also a library of functions meant to be invoked from the REPL in the
Cmd/Repl
directory. The REPL is evaluated in the context of 'Cmd.Repl.Environ', which basically imports everything qualified, and 'Cmd.Repl.Global' unqualified.