bonar note

京都のエンジニア bonar の技術的なことや技術的でない日常のブログです。

Music::Phrase::Generator

以前 coderepos に Music::Phrase::MMLGenerator というモジュールをあげたのですが、中の構成がちょっと変だなと思うところもあったり、pmmlという外部アプリケーションに依存していたりしていたので、MIDI/MIDI::Simple等のモジュールを使って書き直そうと思っています。

こんな感じで再構成して、

Music::Phrase::Generator
Music::Phrase::Generator::Beat
Music::Phrase::Generator::Code
Music::Phrase::Generator::Unit
Music::Phrase::Generator::TrackLine

こんな風に書けるようにしたい。

my $beat = Music::Phrase::Generator::Beat->new(
    [qw/4 0 0 0 4 0 0 0 4 0 4 0 4 0 4 0/]);
my $code = Music::Phrase::Generator::Code->new('Am');
my $unit = Music::Phrase::Generator::Unit->new(
    beat => $beat,
    code => $code,
);

my (@tracklines);
push @tracklines, Music::Phrase::Generator::TrackLine->new(
    instrument  => 80,
    base_volume => 65,
);
$tracklines[0]->push($unit);

Music::Phrase::Generator->generate(
    tempo      => 150,
    tracklines => \@tracklines,
    filepath   => 'hoge.midi',
);


コード進行と打鍵タイミングを与えるというコンセプトは変えずに、前後の音の関係性(前の音からどれだけ離れるのを許容するか等)を指定できるようにすると面白いかなと思っています。この本を読んで勉強してます。

というのも、sweet vacation の remix コンテストがあるらしく、それに面白いファイルを出したいなと思って最近見返しています。最初のは勢いで書いたのもあり結構直したいところが盛りだくさんですね。。

MySpace.com - "Sexy Girl" リミックスコンテスト
http://www.myspace.com/sweetvacationremix

こういう催しがもっとたくさんあると楽しいですね。