Re: multi-track things with MIDI::Simple
[email protected] (namrag) Sun, 22 Sep 2002 09:37:20 -0400
| Newsgroups | perl.midi |
|---|---|
| Message-ID | <B9B33FD0.396%[email protected]> |
Where is the midi format being set? on 9/21/02 7:34 PM, Sean M. Burke at [email protected] wrote: > Someone wrote to me with a little problem: for various complex reasons, he > wanted to compose music with MIDI::Simple, but needed its output to be a > four-track file. So I cobbled together the following, which might interest > folks on this list: > > > use MIDI::Simple; > use MIDI; > > my @Opusses; > sub save_track { > push @Opusses, Self()->make_opus; > new_score(); > return; > } > > sub save_multitrack { > my $filename = $_[0]; > my $first = shift @Opusses; > $first->format(1); # multitrack > my $tracks = $first->tracks_r; > foreach my $o (splice @Opusses) { push @$tracks, $o->tracks } > $first->write_to_file($filename); > return; > } > > > > And here's how to use it: call save_track(). That'll turn the contents of > the current score into an opus and store it in @Opusses, then reset the > score. Then once you've called save_track() for the last time, call > save_multitrack($some_filename), which'll write those all into the named file. > Trivial example: > > text_event("Stuff!"); > save_track(); > > text_event("Stuff 2!"); > save_track(); > > text_event("Stuff 3!"); > save_track(); > > save_multitrack("stuff.mid"); > exit; > __END__ > > -- > Sean M. Burke http://www.spinn.net/~sburke/ >