音楽/サウンド

■ 音楽演奏言語 MPL

 本プログラム( MPLtoSMF.mcx ) は、MPL(Music Playing Language) という 音楽演奏言語(あるいは、音楽記述言語)で書かれたテキストファイルから、 SMF( Standard MIDI File ) 形式のバイナリーファイルを生成します。 この MIDI ファイルは、Windows Media Player 等で、容易に再生できます。
 MPLファイルは、MPLという音楽演奏言語の文法に基づいて記述された テキストを含む構造体を返す MikoScript のプログラムとして記述します。 これによって、MPLのテキストを生成する際に、MikoScript 言語の機能を フルに活用できるようになっています。
 MPLは、音楽演奏言語として、基本的な演奏形態は勿論、高度な演奏技法も 表現できます。また、マクロや簡易反復表記で、キー入力を省力化し、見易さが向上 しています。
 MPLの詳細な文法は、未だ明文化していません。現状、サンプルや、本プログラムの ソースを見ていただくことになります。 下記のダウンロードファイル( mpl101.zip )内には、それらが入っています。また、 以下にも幾つかのサンプルがあります。

 ダウンロード:
  ・mpl101.zip 52 KB Ver.1.01 2011.09.04
 サンプル(楽曲):
  ・エリーゼのために MPLファイル MIDIファイル
  ・かっこうワルツ  MPLファイル MIDIファイル
  ・シャボン玉    MPLファイル MIDIファイル
  ・ちょうちょ    MPLファイル MIDIファイル
 サンプル(基礎):
  ・各種音階     MPLファイル MIDIファイル
  ・基本コード進行  MPLファイル MIDIファイル
  ・基本ビート    MPLファイル MIDIファイル
 サンプル(技法):
  ・和音時差出力   MPLファイル MIDIファイル
  ・ピッチベンド   MPLファイル MIDIファイル
  ・高速線形下降   MPLファイル MIDIファイル
  ・ステレオ定位   MPLファイル MIDIファイル


■ 正弦波合成音の発生

 本プログラム( GenSineWave.mc ) は、4つの正弦波を合成した音を発生します。 各正弦波は、周波数、振幅、立ち上がり時間、減衰時間を指定できます。 楽器の音は、倍音構成になっている場合が多いので、 ここでは、最初の正弦波が基本音、残りの3正弦波が倍音になるのを前提に、 各周波数を調整するようになっています。

 ダウンロード:
  ・GenSineWave.mc  9 KB Ver.0.86 2011.09.01


■ スペクトル解析

 本プログラムは、波形データを解析して、その周波数スペクトル図を出力します。 この波形データは、WAV フォーマットのファイルで与えます。 一方、周波数スペクトル図は、BMP フォーマットのファイルで生成されます。 この処理は、SpectBmp.mc という MikoScript が行ないます。 但し、スペクトル解析の実計算は、Spectrum.dll というDLLで行なっています。 一般に、スペクトル解析には、FFT(高速フーリェ変換)を使いますが、 ここでは、LC並列共振フィルタを使ってみています。 そのほうが人間の聴覚の特性に近いと思われるからです(未確証)。 このソースプログラムは、Spectrum.c にあります。
 このスペクトル解析の実行結果のサンプルを、右図に示します。 これは、ピアノに似た電子音で「ドレミファソラシド」を演奏した時の スペクトル図です。その波形データは、Sample.wav というファイルに 入っているので、Windows Media Player 等で、実際に聞いてみることができます。 ちなみに、Apsaly から、このサンプル図を生成するコマンドは、 次のようになります。
   SpectBmp.mc Sample.wav
これを実行すれば、Sample.bmp という画像ファイルが生成されます。 なお、下記のダウンロードファイルはすべて同じディレクトリーに 入れておく必要があります。

 ダウンロード:
  ・SpectBmp.mc  波形データからスペクトル図を出力
  ・Spectrum.dll スペクトル解析用DLL
  ・Spectrum.c  スペクトル解析用DLLのソース
  ・Sample.wav  サンプル波形データ

 参考のため、本スクリプトで生成したもう少し複雑なスペクトル図の例を示しておきます。 下の最初の図は、女性が「あおいうえ」と連続的に発声したときのスペクトル図です。 また、下の2番目の図は、「あ・え・い・お・う」と各音を離して発声したときのスペクトル図です。