On Mon, Sep 07, 2009 at 01:57:57AM -0700, Ken Restivo wrote: > On Fri, Aug 28, 2009 at 03:11:52PM +0200, Alexandre Ratchov wrote: > > On Thu, Aug 27, 2009 at 11:06:51PM -0700, Ken Restivo wrote: > > > I'd love to find a command-line MIDI file player that will > > > use ALSA MIDI (not its own internal synth), and also will > > > accept arrow keys or some other key commands on stdin to > > > fastforward, rewind, pause, play, etc. > > > > > > > recent midish versions can almost do that, but not with the > > arrow keys, unfortunately. It's controlled from stdin, > > supports start/stop and relocate (for rewind/fastforward). > > > > ex: > > > > dnew 0 "28:0" wo # use 28:0 port for output > > import "myfile.mid" # import file to play > > p # play > > s # stop > > g 17 # go to measure #17 > > > > when you change the position, it restores the states of all > > controllers and handles the note-off events of skipped > > notes. > > > > Thanks, I've build the latest version, and used it a bit > so far, and I like it a lot, it does indeed do pretty much > what I want. > > It looks like it could also do a lot of useful stuff, but > I find it bewildering and the documentation not quite > complete. > You mean the ``manual.html'' file ? > A few questions, if I may? > > 1) How do you get it to pause? Not stop, which is "s", and > then it resets the position back to zero, but just > momentarily pause and keep the position at wherever it is > at? > there's no pause function yet; i guess because nobody needed this until now. AFAICS the code to pause would be the same as the code to stop, except that it must not restore the initial position. > 2) How can I route output to a different channel when I'm > *playing* a MIDI file? I found documentation on how to > route and filter when recording, but I need to do the > filtering/routing at playback time. > there are two options: - edit the file to change the channel of the events; possibly you can save the file, or apply the change to only a portion of the file. Ex. ct mytrack # set current track g 17 # go to measure #17 sel 16 # select 16 measures tevmap {any piano} {any organ} # map piano->organ assuming ``piano'' and ``organ'' are channel names registered with ``onew'' function (you can use dev/chan numbers instead, though; ex ``{0 1}'' instead of ``piano'') - use two midish processes, one to play the file and one to handle the routing only, handly to experiment in realtime or to use other midi software. > 3) Is there any rudimentary editing capability? i.e., cut > the file keeping only events from range X-Y and J-K? > yes, example: ct mytrack # select track ``mytrack'' g 17 # goto measure #17 sel 16 # select 16 measures ev {note {} 60..72} # select notes 60..72 tclr # delete them the following functions might be useful for editting, you could look at their description in the manual: g, sel, setq, ev, tcopy, tpaste, tclr, tcut, tins, tquant, ttransp, tevmap, tren, mcut, mins, mdup, mend, t, ls. -- Alexandre _______________________________________________ Linux-audio-user mailing list Linux-audio-user@xxxxxxxxxxxxxxxxxxxx http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user