ドラムを演奏するには、2種類以上の楽器を同時に演奏するようになる。midiファイルの構造は知らない。それで、finale notePadで2種類の楽器で楽譜を作り、midiファイルをテキストに変換して、midiファイルの構造を確認したりして、複数のトラックに楽譜を書き込む方法を試してみた。試行錯誤の末、うまくいったのが、次のスクリプトです。
- use MIDI;
- use strict;
- use warnings;
- my @events = (
- ['text_event',0, 'MORE COWBELL'],
- ['set_tempo', 0, 450_000], # 1qn = .45 seconds
- );
- for (1..4){
- push @events,
- ['note_on' , 0, 9, 36, 127],
- ['note_off', 96, 9, 36, 127],;
- }
- for (1..3){
- push @events,
- ['note_on' , 0, 9, 42, 127],
- ['note_off', 96, 9, 42, 127],;
- }
- for (1..2){
- push @events,
- ['note_on' , 0, 9, 36, 127],
- ['note_off', 96, 9, 36, 127],
- ['note_on' , 0, 9, 42, 127],
- ['note_off', 96, 9, 42, 127],;
- }
- my $drum = MIDI::Track->new({ 'events' => \@events });
- my @events2 = (
- ['note_on' , 288, 9, 49, 127],
- ['note_off', 96, 9, 49, 127],
- ['note_on' , 480, 9, 49, 127],
- ['note_off', 96, 9, 49, 127],
- ['note_on' , 96, 9, 49, 127],
- ['note_off', 96, 9, 49, 127],);
- my $drum2 = MIDI::Track->new({ 'events' => \@events2 });
- my $opus = MIDI::Opus->new({ 'format' => 0,
- 'ticks' => 96, 'tracks' => [ $drum, $drum2 ] } );
- $opus->write_to_file( "drum.mid" );
2種の配列に、それぞれの楽器の音符を書き込み、それらの音符をはじめ、第一の配列からmidiファイルに書き込み、次に第二の配列を書き込むで2つのトラックができる。
作成された曲の楽譜。

曲を鳴らしてみます。
1)ドラム、スネアドラム、タム音を連続して鳴らします。
2)ハット、シンバル、ベル音を連続して鳴らします。
3)その他のdrum sound (60-79)が出ます。
4)Bass drum、Side stick、Acoustic Snare、Low Floor Tom、High Tom、Closed High-Hat、Open High-Hat、Crash Symbal 1、Ride Symbal-2の9音を順番に2音ずつ交互に組合わせて鳴らします。
楽譜です。

このページへの訪問者数



(since 2015/Dec/11)
音のファイルは無断では使用しないで下さい。
メール
(2015年12月11日掲載。2020年1月7日更新)
Copyright 2015-19. MiKe All rights reserved.