音楽CDを再生してみる
普通、音楽CDをCDドライブ・・・(古い)。今はDVDドライブやBluelayドライブなんかの光学ドライブに挿入すると、Windows Media Playerなんかが起動して、自動再生が始まります。 Media Playerが使っている機能を、Iron Pythonで直接操作して再生してみましょう。
CDの中身は音楽ファイル(*.cda)
光学ドライブに音楽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 |