MIDI (.mid)

予備知識

    • MIMEタイプ:audio/midi
    • 標準的なMIDIファイル形式.
    • オーディオ形式.
    • 楽器,コンピュータサウンドカード,シーケンサの制御に使われる.
    • 音の開始,終了等離散的なサウンドのイベント,速さ,音響情報,楽器,サウンドバンクコードを格納する.
    • MIDIはMusical Instrument Digital Interfaceの頭文字である.
    • バイナリファイル形式.
    • 1983年に発表された.
    • MIDI Manufacturers Association (US)と社団法人音楽電子事業協会(日本)によって開発,発行されている.

ImportとExport

  • Import["file.mid"]はMIDIファイルをインポートし,サウンドオブジェクトを返す.
  • Export["file.mid",expr]はサウンドオブジェクトをMIDIにエキスポートする.
  • Import["file.mid",elem]はMIDIファイルから指定された要素をインポートする.
  • Import["file.mid",{elem,suba,subb,}]はサブ要素をインポートする.
  • Import["file.mid",{{elem1,elem2,}}]は複数の要素をインポートする.
  • インポート形式はImport["file","MIDI"]またはImport["file",{"MIDI",elem,}]で指定できる.
  • Export["file.mid",Sound[]]SoundNoteプリミティブから成るSound式から,MIDIファイルを作成する.
  • Export["file.mid",expr,elem]expr が要素,elem を指定するものとして扱うことにより,MIDIファイルを作成する.
  • ファイル形式は明示的にExport["file",Sound[],"MIDI"]と指定できる.
  • 一般的な情報は,以下の関数ページを参照のこと.
  • Import, Exportファイルからインポートする,あるいはファイルへエキスポートする
    CloudImport, CloudExportクラウドオブジェクトからインポートする,あるいはクラウドオブジェクトへエキスポートする
    ImportString, ExportString文字列からインポートする,あるいは文字列へエキスポートする
    ImportByteArray, ExportByteArrayバイト配列からインポートする,あるいはバイト配列へエキスポートする

Import要素

  • 一般的なImport要素:
  • "Elements" ファイル中の有効な要素とオプションのリスト
    "Summary"ファイルの概要
    "Rules"使用可能なすべての要素の規則のリスト
  • データ表現要素:
  • "Sound"Soundオブジェクトとして表されるMIDIファイル
    "Sound",nSoundオブジェクトとして与えられるMIDIファイルの n 番目のトラック
    "SoundNotes"MIDIファイルの全トラックの音符
    "SoundNotes",nMIDIファイルの n 番目のトラックの音符
    "RawData"MIDIファイルの全トラックの生イベント
    "RawData",nMIDIファイルの n 番目のトラックのrawイベント
  • メタデータ要素:
  • "Metadata"MIDIファイルの全トラックのメタ情報
    "Metadata",nMIDIファイルの n 番目のトラックのメタデータ
    "Duration"長さ(秒)
    "Header"MIDIファイルのヘッダ
    "TrackCount"MIDIファイルのトラック数
  • データ表現要素:
  • "Sound"SoundNoteプリミティブから成るSound
  • MIDIファイルではExportはデフォルトで "Sound"要素を使う.
  • Export["file.mid",Sound[ SoundNote[0]]]は「中央ハ」の音をデフォルトの"Piano"(ピアノ)スタイルで1秒間再生するMIDIファイルを作成する.
  • Wolfram言語でのピッチ(音程)指定の0は,MIDIのピッチレベル 60に対応している.
  • Export["file.mid",Sound[SoundNote[pitch,t,"style"]]] は持続時間 t と楽器のスタイルを指定する.以下の一般的なMIDIスタイルがサポートされている:
  • "Accordion""Agogo""AltoSax""Applause"
    "Atmosphere""Bagpipe""Bandoneon""Banjo"
    "BaritoneSax""Bass""BassAndLead""Bassoon"
    "Bird""BlownBottle""Bowed""BrassSection"
    "Breath""Brightness""BrightPiano""Calliope"
    "Celesta""Cello""Charang""Chiff"
    "Choir""Clarinet""Clavi""Contrabass"
    "Crystal""DrawbarOrgan""Dulcimer""Echoes"
    "ElectricBass""ElectricGrandPiano""ElectricGuitar""ElectricPiano"
    "ElectricPiano2""EnglishHorn""Fiddle""Fifths"
    "Flute""FrenchHorn""FretlessBass""FretNoise"
    "Glockenspiel""Goblins""Guitar""GuitarDistorted"
    "GuitarHarmonics""GuitarMuted""GuitarOverdriven""Gunshot"
    "Halo""Harmonica""Harp""Harpsichord"
    "Helicopter""HonkyTonkPiano""JazzGuitar""Kalimba"
    "Koto""Marimba""MelodicTom""Metallic"
    "MusicBox""MutedTrumpet""NewAge""Oboe"
    "Ocarina""OrchestraHit""Organ""PanFlute"
    "PercussiveOrgan""Piano""Piccolo""PickedBass"
    "PizzicatoStrings""Polysynth""Rain""Recorder"
    "ReedOrgan""ReverseCymbal""RockOrgan""Sawtooth"
    "SciFi""Seashore""Shakuhachi""Shamisen"
    "Shanai""Sitar""SlapBass""SlapBass2"
    "SopranoSax""Soundtrack""Square""Steeldrums"
    "SteelGuitar""Strings""Strings2""Sweep"
    "SynthBass""SynthBass2""SynthBrass""SynthBrass2"
    "SynthDrum""SynthStrings""SynthStrings2""SynthVoice"
    "Taiko""Telephone""TenorSax""Timpani"
    "Tinklebell""TremoloStrings""Trombone""Trumpet"
    "Tuba""TubularBells""Vibraphone""Viola"
    "Violin""Voice""VoiceAahs""VoiceOohs"
    "Warm""Whistle""Woodblock""Xylophone"
  • パーカッションの音はSoundNote["perc",t]の式で表される.以下が可能なパーカッションスタイルである:
  • "BassDrum""BassDrum2""BellTree""Cabasa"
    "Castanets""ChineseCymbal""Clap""Claves"
    "Cowbell""CrashCymbal""CrashCymbal2""ElectricSnare"
    "GuiroLong""GuiroShort""HighAgogo""HighBongo"
    "HighCongaMute""HighCongaOpen""HighFloorTom""HighTimbale"
    "HighTom""HighWoodblock""HiHatClosed""HiHatOpen"
    "HiHatPedal""JingleBell""LowAgogo""LowBongo"
    "LowConga""LowFloorTom""LowTimbale""LowTom"
    "LowWoodblock""Maracas""MetronomeBell""MetronomeClick"
    "MidTom""MidTom2""MuteCuica""MuteSurdo"
    "MuteTriangle""OpenCuica""OpenSurdo""OpenTriangle"
    "RideBell""RideCymbal""RideCymbal2""ScratchPull"
    "ScratchPush""Shaker""SideStick""Slap"
    "Snare""SplashCymbal""SquareClick""Sticks"
    "Tambourine""Vibraslap""WhistleLong""WhistleShort"
  • ImportはMIDIのインポートにデフォルトで"Sound"要素を使用する.

例題

  (6)

1.75秒間再生される音符3個のシーケンス:

これをMIDIファイルにエキスポートする:

和音をMIDIにエキスポートする:

パーカッションの音をMIDIにエキスポートする:

セルオートマトンのデータを音にマッピングしてWolframTones スタイルの部分的な音楽を作成する:

MIDIにエキスポートする:

基本的なアルゴリズムベースの作曲をして,それをMIDIにエキスポートする:

MIDIファイルをSoundオブジェクトとしてインポートする:

MIDIファイルに含まれるSoundNoteオブジェクトをインポートする:

MIDIファイルに含まれる音符を,ハープの代りにオルガンでもう一度演奏する: