POE::Framework::MIDI SYNOPSIS A framework for algorithmic MIDI composition using POE DESCRIPTION POE::Framework::MIDI is a suite of modules which aim to provide a generalized framework for writing programs to algorithmically generate MIDI music using Perl and POE The Conductor object creates Musician objects which generate MIDI event streams and run them through rules and transformations. The Conductor then renders the events down to perl code that MIDI::Simple can handle, and then runs that code to write a .mid file REQUIREMENTS POE Midi::Simple USAGE use POE::Framework::MIDI::POEMusician; # ... include your musician objects here ... # see the example scripts for more info POE::Framework::MIDI::POEConductor->spawn( { bars => 30, verbose => 1, debug => 1, filename => 'test_output.mid', musicians => [ { name => 'frank', # specify which module you want to have "play" this track. # # the only real requirement for a musician object is # that it define a 'make_bar' method. ideally that should # return (at least) POE::Framework::MIDI::Bar( { number => $barnum } ); # or a ::Phrase( { number => $barnum } ); See the example scripts # for more info. # set the package you want to generate events on this channel package => 'POE::Framework::MIDI::Musician::Your::Musicians::GuitarFreak', # which MIDI channel should these events end up on? channel => 1, # which MIDI patch should we use? frank likes the jazz guitar sound. patch => '27', }, { name => 'ike', package => 'POE::Framework::MIDI::Musician::Your::Musicians::MyOrganPlayer', channel => 2, patch => '60', }, { name => 'terry', package => 'POE::Framework::MIDI::Musician::Your::Musicians::MyFunkyDrummer', channel => 9, # drum channel - zero based patch => '58', }, ], }); $poe_kernel->run; # this is exported by POE. BUGS Probably lots. Since Gene and I are the only ones who've used the code, it might not work so well across different platforms. who knows :) Give it a shot and tell us what happens. EXAMPLES You can find some other example code for musician objects at http://justsomeguy.com/code/POE/POE-Framework-MIDI/examples/ SUPPORT comments/questions/queries: steve@justsomeguy.com AUTHORS Steve McNabb CPAN ID: SMCNABB steve@justsomeguy.com http://justsomeguy.com Gene Boggs - ology@ology.net http://ology.net CPAN ID: GENE Thanks: Rocco Caputo Gene Boggs Sean Burke Phillip Gwynn Artur Bergman rhizomatic #perl, #poe and #tempura kooks one and all COPYRIGHT Copyright (c) 2003 Steve McNabb and Gene Boggs. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. SEE ALSO perl(1). POE, MIDI-Perl 1;