まず、第5章で紹介されている譜面からいくつかピックアップし、MIDI音源を用意しました。実感をつかむために、以下から聞いてみてください(ブラウザ上でのMIDIの再生は簡便さを優先したものですので、できれば読者の方ご自身の環境で再生をお試しいただくことをおすすめします)。
- オルガヌム(図5-3)
- ダウンロード
- 第7旋法(図5-8)
- ダウンロード
- 第8旋法(図5-8)
- ダウンロード
- ベートーヴェン交響曲第1番冒頭(図5-13)
- ダウンロード
- ブラームス交響曲第4番第2楽章より(図5-24)
- ダウンロード
- ブラームス交響曲第3番第4楽章より(図5-25)
- ダウンロード
- ワーグナーによるトニックの拡張(図5-32)
- ダウンロード
- 半音進行の例(図5-33)
- ダウンロード
- トリスタン和音(図5-34)
- ダウンロード
- 全音音階による旋律(図5-36)
- ダウンロード
- 十二音技法の音列(3つ)(図5-38)
- ダウンロード
- 十二音技法の音列(c)を使った例(図5-39)
- ダウンロード
- モーツァルトのサイコロ遊びの実施例(図5-42)
- ダウンロード
-
- ライヒのピアノフェイズ風(図5-58)
- ダウンロード
-
鼻歌のドレミ認識プログラム
近年人気となっている、プログラミング言語のPythonを使った体験プログラムを用意しました。Orpheusのようなシステムとまではいきませんが、簡易的に入力した音声のピッチからドレミに変換する体験的プログラムです。つまり、鼻歌などを入力データとしてプログラムを実行すると、それがドレミの何の音であるかが分かります。PythonにはLibrosaという、音声処理をするためのライブラリがあります。その中に、入力した音声からクロマベクトルを表示する関数があるので、今回はそれを使います。
Python言語を実行するには、自分のパソコン内の環境構築がけっこう大変です。しかしGoogle Colaboratoryというサービスを利用すると、難しい環境構築をしなくても、ウェブブラウザ上でプログラムを実行することができます。最初にGoogleのアカウントを用意する必要がありますが、諸々の手順についてはウェブ検索すると解説しているページが多くありますので、それを参考にしてください。言語仕様についても他の書籍・サイトをご参照ください。
下記にGoogle Colaboratoryで入力して実行できるプログラムをアップしました。実行の手順は以下の通りになります。
- Googleアカウントの取得
- Colaboratoryの使用に先だってGoogleアカウントを取得します。
- Google Colaboratoryの起動
- ウェブブラウザからGoogle Colaboratoryを検索します。
リンクが表示されるのでクリックして、新規ノートブックを作成します。 - コードの入力
- 下記は入力した音源(WAV形式)のメルケプストラムとクロマベクトルを表示するプログラムです。前もって、解析したい(鼻)歌をパソコンやスマホで録音して、WAV形式で保存しておきます。ファイル名はとりあえず「filename.wav」として説明しますが、別の名前をつけたい場合は後のコード中の「filename.wav」を書き替えてください。
コード入力の□欄にテキストをコピペして、左の矢印もしくは[Shift]+[Enter]で実行します。
最初に、必要なライブラリをインポートします。
※次のテキスト欄は、画面左上にある「+コード」を押すと出てきます。
WAVファイルをアップロードします。
「参照」ボタンを押してファイルを選択します。
以降、下記にあるプログラム(with open…以降)をコピペして実行してください。
#インポート import numpy as np import matplotlib.pyplot as plt import IPython.display import librosa import librosa.display # ファイルをアップロードする from google.colab import files files.upload() with open("filename.wav", 'r') as f: # アップロードしたファイルの名前を指定 fname = f.name print(fname) # librosaへロード y, sr = librosa.load(fname) # メルケプストラム S = librosa.feature.melspectrogram(y, sr=sr, n_mels=128) log_S = librosa.amplitude_to_db(S, ref=np.max) plt.figure(figsize=(12, 4)) librosa.display.specshow(log_S, sr=sr, x_axis='time', y_axis='mel') plt.title('mel power spectrogram') plt.colorbar(format='%02.0f dB') plt.tight_layout() #クロマベクトル C = librosa.feature.chroma_cqt(y=y, sr=sr) #クロマベクトルの表示 plt.figure(figsize=(12,4)) librosa.display.specshow(C, sr=sr, x_axis='time', y_axis='chroma', vmin=0, vmax=1) plt.title('Chromagram') plt.colorbar() plt.tight_layout()