Monday, June 9, 2014

All about Standard MIDI File Format SMFフォーマットのすべて

  スタンダードMIDIファイル(Standard MIDI FileSMF)は、MIDI用ファイルフォーマットの一つである。Format0/Format1/Format2の3タイプが存在する。一般的に用いられている拡張子は .mid。標準MIDIファイルとも呼ばれる(wikipedia)。

  DTMやMIDI コンピュータ音楽に付いてはDesk Top MusicとMusical Instrument Digital Interfaceの概略を説明してくれます。

 「SMFの基礎知識」もよくまとまったMIDIの説明です。

 C言語でMIDI(SMF)データを読んでみる!は自分で一からMIDIファイルを読み込むプロ部ラムを作成する例です。

 テキストファイルからMIDIファイルを作る方法はメモ帳などで入力したテキストファイルからMIDIファイルを作成するオンライン・ソフトウェアである。PerldocにはMIDIライブラリの使用例があります。

 PerlにはMIDIというMIDIファイルの読み込み、作成、修正、書き出し用のライブラリがあります。

 Perl and MIDI: Simple Languages, Easy MusicはPerlのMIDIライブラリの活用方法を詳細に紹介しています。特にMIDI::Simpleというサブ・ライブラリでは、以下のような記述で音楽を簡単に作成することができます。
my @phrases =(
   [ Cs, F, Ds, Gs_d1 ], [Cs, Ds, F, Cs],
   [ F, Cs, Ds, Gs_d1 ], [Gs_d1, Ds, F, Cs]
);
@bass_line = ( F, Cs, Ds, Gs_d1, Gs_d1, Ds, F, Cs);
midi<->CSVMIDICSCというプログラム(Perl)を提供し、以下のようなCSVフォーマットで記述した楽譜をMIDIフォーマットに変換できます。その逆の変換(MIDIファイルをCSVに変換)もできます。それに、簡単なコーラスを自動的に追加したり、キーを変えたりすることも簡単にできます。
 0, 0, Header, 0, 1, 480
 1, 0, Start_track
 1, 0, Tempo, 500000
 1, 0, Key_signature, 2, "major"
 1, 0, Time_signature, 9, 3, 27, 8
 1, 0, Title_t, "Another Jig Will Do"
 1, 0, Text_t, "Z:id:dc-slipjig-1"
 1, 0, Note_on_c, 0, 69, 105
 1, 239, Note_off_c, 0, 69, 0
 1, 240, Note_on_c, 0, 71, 80
 ...
 ...
 1, 34560, End_track
 0, 0, End_of_file
MIDI XML Format
 おーぷんMIDIぷろじぇくと:Windows環境で動作するオープンソースのMIDIデータ作成・編集用ライブラリ『MIDIDataライブラリ』(DLL)。ここには、世界樹(MIDIシーケンサーソフト)、MIDIてすたー(MIDIコントローラー・キーボードソフト)、自動どらむ(自動ドラム演奏ソフト)、MIDIせれくたー(MIDIマッパー出力先選択ソフト)というソフトウェアと、MIDIIOライブラリ(MIDIメッセージ入出力用ライブラリ)、MIDIDataライブラリ(MIDIデータ作成・編集用ライブラリ)、MIDIClockライブラリ(MIDI時刻計測用ライブラリ)、MIDIStatusライブラリ(MIDI音源状態管理用ライブラリ)、MIDIInstrumentライブラリ(MIDIインストゥルメントライブラリ)等のDLLライブラリがあります。

 MIDIシーケンサーソフト『世界樹』の概略については、このページで分かりやすく説明されています。

 HomeRoomからは、無料のMIDI・サウンドデータをダウンロードできます。

 ところで、日本のオープンソースのリストは大変面白いまとめで、自分で何かのアプリケーションを作りたい人には参考になるものです。

 因みに、無数な方法はあるが、MIDIファイルを再生するには TiMidity++という無料なソフトもあります。また、高機能かつ使いやすい MIDI シーケンサーとして和製のDominoもあります。詳細についてはPCユーザーなら「パソコンで作曲するための知識」は大変参考になります。

No comments:

Post a Comment