#!/usr/bin/perl # use POE; use strict; use lib '../..'; use POE::Framework::MIDI::POEConductor; use POE::Framework::MIDI::POEMusician; use POE::Framework::MIDI::Musician::Probability; # override the default probabilities for both musicians my $m1_note_weights = { C => 1, Cs => 1, D => 1, Ds => 1, E => 1, F => 1, Fs => 1, G => 1, Gs => 1, A => 1, As => 1, B => 1, }; my $m1_octave_weights = { same => 10, up => 3, down => 3 }; my $m1_duration_weights = { qn => 5, en => 12, sn => 10, tsn => 11, wn => 8, }; ### my $m2_note_weights = { C => 1, Cs => 1, D => 1, Ds => 1, E => 1, F => 1, Fs => 1, G => 1, Gs => 1, A => 1, As => 1, B => 1, }; my $m2_octave_weights = { same => 10, up => 3, down => 3 }; my $m2_duration_weights = { qn => 5, en => 12, sn => 10, tsn => 11, wn => 8, }; POE::Framework::MIDI::POEConductor->spawn( { bars => 30, verbose => 1, debug => 1, filename => 'probability.mid', musicians => [ { name => 'frank', package => 'POE::Framework::MIDI::Musician::Probability', channel => 1, patch => '9', note_weights => $m1_note_weights, duration_weights => $m1_duration_weights, octave_weights => $m1_octave_weights, debug => 1, }, { name => 'ian', package => 'POE::Framework::MIDI::Musician::Probability', channel => 2, patch => '10', debug => 1, note_weights => $m2_note_weights, duration_weights => $m2_duration_weights, octave_weights => $m2_octave_weights, }, ], } ); $poe_kernel->run;