JavaとMIDI:概要

スポンサーリンク

今まではオーディオの情報を直接作り出して音楽を製作していましたがここから話題を変えてMIDIで音楽を作りたいと思います。MIDIとは1980年代ころから広まった音楽の演奏情報を交換する規格でMusical Instrument Digital Interfaceの略です。ミディと発音しますがこれはフランス語の「正午」を表すmidiと同じ音です。

MIDIとオーディオ情報の違い

ではMIDIはオーディオ情報と何が違うのでしょうか?

文書をスキャンした画像とテキストを想像してください。画像は元の文書の見え方をそのまま正しく伝えています。しかしコンピューターで検索をかけるのは難しいです。一方テキストはフォントや文字の大きさが変わったり改行したりで元の文書を「見えたまま」には伝えていませんが「何が書かれたか」の情報を持っているため検索することができます。

オーディオ情報をこの画像に例えると、MIDIの情報はテキストの情報に対応することができます。オーディオは「聞こえたまま」の情報ですが「何が演奏されたか」の情報は持ってはいません。MIDIはこの「何が演奏されたか」の情報を持っています。ただ音に変換するときには音源が必要でこの種類や品質によって再現される音が変わります。

便利な点としてまずあげられるのは情報量がすくないことです。例えば1秒間ピアノを弾いた音のサイズはオーディオ情報ではCDの音質で176,400バイト必要ですがMIDIの場合は音を引くときに3バイト、音を止めるときに3バイトの合計6バイトです。情報量に圧倒的に差があります。MIDIの普及した1980年代の技術ではオーディオ情報のリアルタイムの通信は不可能でした。

Javaのオーディオフォーマット

現在でも使われるMIDI規格

現在ではリアルタイムで動画の通信もできるようになり1980年代のような制限はなくなりました。でも未だにMIDIはいたるところで使われています。あまり機械の性能が高くないような環境である場合がありますがカラオケなどでも使われます。

カラオケの機械は決して性能の低いものではありませんがMIDIの「何が演奏されたか」の情報を積極的に利用しています。歌う人によってキーを上下したり速さを変えたりするのはオーディオよりMIDIの方がずっと楽に行えます。それはテキストのフォントやサイズを変えて見え方を変えるのが画像より楽なのと同じです。

JavaでのMIDIの取り扱い

Javaではオーディオと同じくMIDIを扱うためのAPIが用意されています。javax.sound.midiというパッケージです。

Javaを実行する環境でのMIDI関連の入出力をコントロールして音楽を演奏したりMIDIの情報を加工したりすることができます。

https://docs.oracle.com/javase/jp/8/docs/api/javax/sound/midi/package-summary.html

次回はJavaを実行するコンピューター上のMIDIの環境を調べます。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。