音楽CDを再生してみる

 普通、音楽CDをCDドライブ・・・(古い)。今はDVDドライブやBluelayドライブなんかの光学ドライブに挿入すると、Windows Media Playerなんかが起動して、自動再生が始まります。 Media Playerが使っている機能を、Iron Pythonで直接操作して再生してみましょう。

 CDの中身は音楽ファイル(*.cda)

 光学ドライブに音楽CDを入れて、光学トライブをエクスプローラでアクセスする次のように表示されます。

CD縺ョ繝輔か繝ォ繝萓

これにより、CDの中身に4曲入っていることがわかると思います。この音楽ファイルにアクセスして、音楽を再生します。
PresentationCore.dllを参照する
 フライングです。後で説明するはずのWPFのライブラリを使用します。
実はwavファイルだったらSystem.Media.SoundPlayerクラス、mp3ファイルだったらゲームプログラムで使われるDirectXというライブラリを使うことを考えたのですが、まだDirectXがNetFramework4.0に対応していません。その問題を回避する方法はあるのですが、かなり複雑です。本来は音楽再生だけを取り上げるトピックで、Windowsのバージョンの確認など、余分な話が増えてしまうため、包括的に音楽ファイルを扱えるWPFライブラリの説明をしていきます。

 WPFライブラリを使うためには、次のようにPresentationCoreをリファレンスに指定します。

import clr
clr.AddReference('PresentationCore')

これで"System.Windows.Media"という名前空間のクラスが使用可能になりました。
そこでMediaPlayerクラスをimportしてやります。

from System.Windows.Media import MediaPlayer

このMediaPlayerを使ってファイルにアクセスするためには次のように記載します。

   MediaPlayer.Open(uriクラス)
昔であれば、ファイル名の文字列を渡してOpenすれば良いと思うんですが、今はuriクラスを指定してやります。じゃあuriクラスはどうやって作ればよいかというと次のようにします。
   System.Uri(ファイルのフルパス名)
ファイルのフルパス名をUriクラスにすることによってファイルはローカルPCのファイルだけでなく、インターネット上のファイルの再生も可能にしています。
 またファイルをフルパスで指定する場合、必ず"\"を使用しますが注意が必要です。Windows パスの処理では、 "\" はエスケープ文字として処理されます。文字列に"\"を使用する必要がある場合は、"\"を 2重 (\\) にして記述します。

実際にやってみると次のようになります。

import clr
clr.AddReference('PresentationCore')
import System
from System.Windows.Media import MediaPlayer

mp = MediaPlayer()

#光学ドライブがEドライブの場合
u= System.Uri('E:\\Track01.cda')←"\"が2重になっていることがポイント
mp.Open(u)

mp.Play()
print "CDを再生しています。"
raw_input()

mp.Stop()
print "CD再生を停止しました。"
raw_input()

出力画面:
 CDを再生しています。

 CD再生を停止しました。
音楽ファイルの再生、停止、一時停止はPlay()、Stop()、Pause()のメゾットで操作できます。

 ネットワーク上の音楽ファイルの再生

 System.Uri()で指定する記述をURLにすれば出来ます。簡単ですね。やってみましょう。

import clr
clr.AddReference('PresentationCore')
import System
from System.Windows.Media import MediaPlayer

mp = MediaPlayer()
#Uriの指定がURLになるだけです。
u= System.Uri('http://www.ops.dti.ne.jp/ironpython.beginner/tt.mid')

mp.Open(u)
mp.Play()
print "再生しています。"
raw_input()
mp.Stop()
print "再生を停止しました。"
raw_input()

出力画面:
 再生しています。

 再生を停止しました。
 こんな感じでMediaPlayerで再生できる音楽ファイルは次のようなものがあります。参考までに。
ファイル形式の種類 対応拡張子
CDオーディオトラック .cda
MIDIファイル .mid, .rmi, .midi
Windows Media ファイル .wma
オーディオファイル .wav, .snd, .au, .aif, .aifc, .aiff, .mp3
mpeg ファイル .mpa