削除された内容 追加された内容
DTMの使い方についての記事です。シンセサイザ、シーケンサの使い方。MIDIのデータ形式など。
 
M カテゴリ。
3 行
==DTM入門==
 
[[w:DTM|DTM]](DeskTop Musicの略?)はコンピュータを使って音楽を作る活動のことです。DTMは伝統的に高価な機材とソフトウェアを用いて行う活動とされており、廉価な代替物が手に入れにくかった分野です。しかし、現在では[[w:MIDI]|]の作成から音を出力する過程までが比較的手軽にできるようになっています。(もちろん機材があればその過程が簡潔かつより高度な編集が可能であることはいうまでもありません)
 
ここでは、[[w:Linux|Linux]]を利用してMIDIを作成し、ソフトウェア音源を利用して実際に音を鳴らすまでの手順について述べます。Linuxについては[[UNIX/Linux入門]]などを参照してください。
 
 
===MIDI===
 
最初に[[w:MIDI|MIDI]]について解説します。元々計算機で音を扱う方法として、空気の振動を電気的な波形に変換し、それを離散化してデジタルデータとして扱うことができることを[[高等学校情報C]]で述べました。計算機上で、音を扱う方法は基本的にこれ1つしかありません。
 
コンピュータ上の音楽ファイルとしては[[w:WAV|WAV]]ファイル、[[w:MP3|MP3]]ファイル、[[w:Ogg Vorbis|Ogg Vorbis]]ファイルなど、様々な保存形式があり、これらはどれも異なった方法で音を扱っているように思えます。しかし、実際にはこれらはどれも同じデータ([[w:サンプルレート|サンプルレート]]などの違いはあれど)を扱っており、異なっているのはデータではなくデータを[[w:圧縮|圧縮]]する方法となっています。
 
残念なことにデータの圧縮は数学的な過程でこれらの違いを理解することは非常に困難です。フリーな圧縮形式であるOgg Vorbisの圧縮方法はWeb上で公開されているので、もしも興味があれば見てみるのもよいかも知れません。 <!-- 特に推奨はしないけれど ... 。-->( http://xiph.org/vorbis/doc/Vorbis_I_spec.html )
30 行
まず、楽譜が扱う情報は(あまり)曖昧さがありません。音の高さ1つを取っても例えばミとファの間には音は存在しないことになっています。一方、 音自体を情報として扱う視点から見れば、ミの音は周波数659Hzの音であり、ファの音は周波数698Hzの音(周波数については後述)であるので、その間には当然多くの音が存在し得ます。
 
このことから分かる通り、楽譜が扱う音は実際に音そのものとして存在し得る音よりもかなり少ない種類の音を扱います。このことは、情報をデジタル化することを考えるとありがたいことです。なぜなら、少ない種類の情報はより少ない量の情報で表すことができるからです。(より正確な議論は[[w:情報量|情報量]]を参照。)
 
 
ここまででMIDIが扱う情報の性質に付いて述べました。次に、実際のMIDIがどのような情報を扱っているかについて述べます。まず最初に、どんな情報を扱うかを直観的に述べます。そのあと実際の情報の表し方も述べますが、これは[[w:プログラマ|プログラマ]]向けの内容なのでMIDIを使うことが目的ならそこは読まなくてもよいでしょう。
 
 
楽譜を扱う上で重要な情報はある音程の音を出力することです。MIDIでは、この命令のことをNOTE_ONと呼びます。また、反対の命令として、ある音程の音の出力を取り止めることをNOTE_OFFと呼びます。
 
基本的なMIDIはNOTE_ONとNOTE_OFFの命令を繰り返すことで構成されます。しかし、楽譜に記述される情報はそれだけではありません。例えばある曲においては、楽譜の複数部分を同時に演奏する必要があります。例えば、[[w:ピアノ|ピアノ]]は両手で演奏される場合には、弾き手は楽譜の2つの部分を同時に演奏する必要があります。MIDIでは、これらの楽譜の部分をチャンネルと呼びます。MIDIを扱う場合には複数のチャンネルを扱う方法を規定する必要があります。
 
また、実際の演奏で利用される楽器の種類も、楽譜によって指定されます。そのため、MIDIではいくつかの楽器を使い分ける必要があります。<!-- これらの情報は、通常トラックの最前部に記録され、演奏を始めるときに読み出されます。 -->
51 行
チャンネルn(n<16)に対するNOTE_ON命令は次の命令で表されます。
0x9n 0x.. 0x..
ここで、nは、([[w:16進数|16進数]]で)0からfまでの値を取ります。(16進数については[[高等学校情報C]]を参照してください。)NOTE_ON命令は2バイトのデータを取ります。最初のデータは音程を表す情報です。音程はキーボードにある順で順に値がふられています。まず、真中のド(C3?)が0x60で、以降ド#:0x61、レ:0x62と続いていきます。次に、2つめのデータは、音が演奏される強さを表します。
 
NOTE_OFF命令も同じように2バイトのデータをとります。チャンネルnに対するNOTE_OFF命令は
102 行
ここまでで簡単な音楽合成を行う方法を述べました。しかし、実際の音楽演奏では音は正弦波ではなく、より複雑な波形を持っていることが普通です。
 
このような複雑な波形を合成するには、あらかじめ対応する楽器の波形を記録しておき、適宜その波形を出力することが有効な手段となります。このように波形のデータから音楽データを合成するソフトウェアをシンセサイザ([[w:en:Synthesizer|en:Synthesizer]])と呼びます。また、楽器に対応する波形データとしてサウンドフォント[[w:en:SoundFont|en:SoundFont]](.sf)が知られています。
 
ここではシンセサイザとしてTimidity++([[en:w:Timidity]])を利用します。ここからはTiMidity++の使い方を説明しますが、既に何らかの方法でMIDIが再生できる場合にはこの章はとばして次に進んでください。
114 行
ここまででMIDIを再生する方法について述べました。ここからはMIDIを作成する方法について述べます。
 
MIDIを作成するソフトウェアをMIDIシーケンサと呼びます。Linuxで動くMIDIシーケンサとして有名なものに、[[w:en:Rosegarden|en:Rosegarden]]があります。ここからはRosegardenの説明をするので、他の方法でMIDIを作成する人は別の資料を探した方がよいでしょう。
 
====Rosegarden====
128 行
Rosegarden
http://www.rosegardenmusic.com/
 
[[Category:音楽|DTM]]
[[Category:情報技術|DTM]]