summaryrefslogtreecommitdiff
path: root/Midi.hs
AgeCommit message (Collapse)Author
2015-12-07Output replayed recordings to MIDI channel 1Andrew Cady
The live output goes to channel 0. This prevents the two from messing with each other (cancelling each others' notes). Simply hard-coding channel 1 is a bad idea long-term, though. We actually could have input from more than one channel (if we pump a midi file into the program with "aplaymidi", for example). I suppose we want to map the entire range of channels based on the input source in order to prevent input sources from affecting one another. Then generated playback could be considered a separate input source. All of this will have to be done in order to deal with simultaneous looping of multiple tracks, anyway.
2015-12-07Implement playing MIDI from the databaseAndrew Cady
Currently, the "dump" command plays the entire database. Only the SQL SELECT statement needs to be changed in order to play a specific time-range.
2015-12-07Disable printing the names of keys.Andrew Cady
Also whitespace, comments, & other non-functional changes.
2015-12-06Deserialization with Sound.MIDI.MessageAndrew Cady
This format is still inefficient -- because the time is still represented as a string that is parsed as an Integer -- but it's certainly much more efficient than before. And more importantly, it can be both written and read.
2015-12-06Store recordings as Codec.Midi.MessageAndrew Cady
2015-12-06Store recordings as Sound.MIDI.Message.TAndrew Cady
My intent in doing this was to have a format suitable for reading and writing to the database; the old format (using "show" on the Sound.ALSA.Sequencer.Event.T) could not be read back. Unfortunately, this new format cannot be read back _OR WRITTEN_! At least not without more conversion (of my list of pairs into a Thielemann's specialized event-list). My new plan is to use HCodec's Codec.Midi.Message instead. But I'll commit this before I get to that.
2015-12-05start to move midi serialization into separate fileAndrew Cady