Perl, musica automagica

24
Perl Musica Automagica!

description

An algorithmic approach to music generation

Transcript of Perl, musica automagica

Page 1: Perl, musica automagica

Perl Musica Automagica!

Page 2: Perl, musica automagica

Andrew Plotkin

Page 3: Perl, musica automagica

Nel mezzo del cammin di nostra vita

mi ritrovai per una selva oscura

ché la diritta via era smarrita.

Ahi quanto a dir qual era è cosa dura

esta selva selvaggia e aspra e forte

che nel pensier rinova la paura!

Tant'è amara che poco è più morte;

ma per trattar del ben ch'i' vi trovai,

dirò de l'altre cose ch'i' v'ho scorte.

Io non so ben ridir com'i' v'intrai,

tant'era pien di sonno a quel punto

che la verace via abbandonai.

Ma poi ch'i' fui al piè d'un colle giunto,

là dove terminava quella valle15che m'avea di paura il cor compunto,

guardai in alto, e vidi le sue spalle

vestite già de' raggi del pianeta

che mena dritto altrui per ogne calle.

Page 4: Perl, musica automagica

Nel mezzo del cammin di nostra vita

mi ritrovai per una selva oscura

ché la diritta via era smarrita.

Ahi quanto a dir qual era è cosa dura

esta selva selvaggia e aspra e forte

che nel pensier rinova la paura!

Tant'è amara che poco è più morte;

ma per trattar del ben ch'i' vi trovai,

dirò de l'altre cose ch'i' v'ho scorte.

Io non so ben ridir com'i' v'intrai,

tant'era pien di sonno a quel punto

che la verace via abbandonai.

Ma poi ch'i' fui al piè d'un colle giunto,

là dove terminava quella valle15che m'avea di paura il cor compunto,

guardai in alto, e vidi le sue spalle

vestite già de' raggi del pianeta

che mena dritto altrui per ogne calle.

Page 5: Perl, musica automagica

Nel mezzo del cammin di nostra vita

mi ritrovai per una selva oscura

ché la diritta via era smarrita.

Ahi quanto a dir qual era è cosa dura

esta selva selvaggia e aspra e forte

che nel pensier rinova la paura!

Tant'è amara che poco è più morte;

ma per trattar del ben ch'i' vi trovai,

dirò de l'altre cose ch'i' v'ho scorte.

Io non so ben ridir com'i' v'intrai,

tant'era pien di sonno a quel punto

che la verace via abbandonai.

Ma poi ch'i' fui al piè d'un colle giunto,

là dove terminava quella valle15che m'avea di paura il cor compunto,

guardai in alto, e vidi le sue spalle

vestite già de' raggi del pianeta

che mena dritto altrui per ogne calle.

Page 6: Perl, musica automagica

Page 7: Perl, musica automagica
Page 8: Perl, musica automagica
Page 9: Perl, musica automagica

while( @notes ) {

if( scalar @notes >= $tuple_size + 1 ) {

my $key = join ' ', @notes[0 .. $tuple_size-1];

push @{ $tuples{ $key } } , $notes[$tuple_size]; } shift @notes;}

Page 10: Perl, musica automagica

Markov Chaindi grado N

Page 11: Perl, musica automagica

Algorithm::MarkovChain

Page 12: Perl, musica automagica

$chain->seed( symbols => \@notes , longest => $tuple_size)

Page 13: Perl, musica automagica

MIDI / MIDI::Simple

• read, compose, modify, and write MIDI files

• Sean Burke++

Page 14: Perl, musica automagica

while( $n-- ) { my @tuple = @{ $tuples{ $k } }; my $last = $tuple[ int rand scalar @tuple ];

n( $last, $tempo[ rand scalar @tempo ], 'f' );

my @next_tuple = split / /, $k; shift @next_tuple; push @next_tuple, $last;

if (defined $tuples{ join ' ', @next_tuple }) { $k = join ' ', @next_tuple; ++$hit; } else { $k = ( keys %tuples )[ int rand $l ]; ++$miss; }}

Page 15: Perl, musica automagica

hobbes:~/Desktop larsen$ perl mozart.pl \ -f peaches.mid -t 6 -s 4 -n 100 Fetching info from MIDI file... # Type Track Name Instrument 1 MTrk 2 MTrk Peaches en Regalia original 3 MTrk Drums Drums 4 MTrk Saxes Saxes 5 MTrk Brass Brass 6 MTrk Bass Bass 7 MTrk Piano Piano 8 MTrk Synth Synth 9 MTrk Clarinet Clarinet 10 MTrk Guitar Guitar 11 MTrk M-Playback*recorded M-Playback

Page 16: Perl, musica automagica

Fetching track 6...I've learnt 376 tuples...Average number of buckets per key: 1.90159574468085... 1. '38 41 29 34' => 35 2. '43 35 35 42' => 47 3. '41 42 43 46' => 38 38 4. '40 35 42 47' => 42 42 42 42 42 42 5. '46 38 39 40' => 41 6. '40 42 40 40' => 35 47 35 35 35 35 35 7. '42 40 37 36' => 40 40 40 40 40 40 40 40 8. '54 52 49 42' => 49 9. '42 47 42 35' => 35 35 35 35 35 35 35 3510. '40 42 40 43' => 4311. '46 33 33 33' => 4512. '45 51 52 45' => 4413. '48 40 40 44' => 3214. '53 41 41 41' => 43

Page 17: Perl, musica automagica

Demo

Page 18: Perl, musica automagica

I am quite struck by them.. from listening to them you can tell they

are meant to have musical structure, and they sound like

they are intentionally musical, but they contain no coherent musical "thought"

Page 19: Perl, musica automagica

“Peaches en regalia”

Page 20: Perl, musica automagica

“Frame by frame”

Page 21: Perl, musica automagica

“Epitaph”

Page 22: Perl, musica automagica

MIDIMIDI::SimpleAlgorithm::MarkovChainGetopt::*

Page 23: Perl, musica automagica

どうもありがとう

Page 24: Perl, musica automagica

http://larsen.perlmonk.org/perl/mozart.html