パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)

CD Player
(準備中)

1 CD Player(CDプレーヤー)について
Visual BasicでマルチメディアMCIコントロールの使い方を勉強するために作成した習作です。
シンプルなCDプレーヤーです。

メインフォームのデザイン


使い方(というか仕様)
@ファイルリストBOXでファイルを選択して、[open」ボタンをクリックする。
AテキストBOXに選択したファイルが表示される。これが開始時の音楽ファイルになる。
B再生ボタンをクリックすると開始時音楽ファイルから再生が始まる。
CBack, Next, Stop, Ejectのボタンはその通りの機能
D再生ボタンをクリックするといつでも開始時音楽ファイルから再生が始まる。
E開始時音楽ファイルを変更したい時は@の操作をあらためて行う。

ナニナニ、一時停止がないって? ハイ。それは仕様です。

2 CD Playerプログラム
若干、プログラムについて説明しておきます。非常にシンプルな作りです。
コードはプログラム作成時に参考になりそうな部分だけ抜粋して説明します。

(1) ドライブリストBOXとディレクトリリストBOX
ここはお決まりのコードです。

ドライブリストBOX
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

ディレクトリリストBOX
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

(2) コマンドボタン([open]ボタン)


Private Sub Command1_Click()
MMControl1.Command = "Close" '・・・@
MMControl1.Notify = False '・・・A
MMControl1.Wait = True '・・・B
MMControl1.DeviceType = "CDaudio" '・・・・C
' Dファイル名の取得(フルパスで)
f$ = File1.Path
If Right$(f$, 1) = "\" Then f$ = Left$(f$, 2)
Text1.Text = f$ & "\" & File1.filename
MMControl1.filename = f$ & "\" & File1.filename
MMControl1.Command = "Open" '・・・E
MMControl1.TimeFormat = mciFormatTmsf '・・・F
' Gエラーメッセージの表示
If MMControl1.Error <> 0 Then
ret = MsgBox(MMControl1.ErrorMessage, 48, "error")
End If
End Sub

@MCIコマンドのcloseを送る。まず前にオープンされているデバイスをCloseしておく。
AMCIコマンドの終了でDoneイベントを発生させない(=False)。
BMCIコマンドの実行が終了してから、マルチメディアMCIコントロールからアプリケーションに制御を戻す(=True)
CデバイスタイプとしてCDを設定
Dファイル名をフルパスで取得するときのお決まりの方法
EMCIコマンドのopenを送る。デバイスがオープンされる。
Fメディアの位置や時間を表す時の時刻形式を設定する。
デバイスとしてCDを選択する場合は、mciFormatTmsfにする。
mciFormatTmsfのフォーマット

最上位バイト 最下位バイト
フレーム トラック

このプログラムではトラック(CDのtラックNo.)しか使わない。

Gエラーメッセージの表示

(3)MMControl
再生(Play)ボタンが押された時は、テキストボックスに表示している音楽ファイルを再生するようにする。

Private Sub MMControl1_PlayClick(Cancel As Integer)
' @ファイル名の取得
f$ = File1.Path
If Right$(f$, 1) = "\" Then f$ = Left$(f$, 2)
Text1.Text = f$ & "\" & File1.filename
MMControl1.filename = f$ & "\" & File1.filename
Text1.Text = f$ & "\" & File1.filename
MMControl1.From = File1.ListIndex + 1 ' ・・・A
End Sub

@ファイル名の取得
コマンドボタン([open]ボタン)をクリックした時に、ファイル名の取得をしていますが、
再生(Play)ボタンが押された時にもあらためてファイル名を取得しています。
途中で別の音楽ファイルを選択した場合に、その音楽ファイルから再生をするため。

A開始時の音楽ファイルの取得
マルチメディアMCIコントロールには、FileNameというプロパティがあり、
Openコマンドの対象となるファイルを設定するようになっていますが、デバイスとしてCD(.DeviceType = "CDaudio")
を選択した場合、再生時のファイルとしてこのFileNameプロパティは参考にされないようです。
CDの場合は、Fromプロパティ(再生開始位置)にCDのトラックNo.を指定します。従ってファイルリストBoxから
選択されているファイルのListIndexを参照して指定します。ListIndexは最初のファイルが0になるので、トラックNo.
の指定をする時は+1します。


なおPlay, Back, Next, Stop, Ejectの各ボタンは何もコードを書かなくても、それぞれの機能に応じた
MCIコマンドを送っているようです。
従ってこのプログラムでは、Playボタン以外には何もコードを書いていません。

Play中の動画は以下

TopPage/Visual Basic&Excel活用研究目次