• 検索結果がありません。

マルチメディア・音声

N/A
N/A
Protected

Academic year: 2021

シェア "マルチメディア・音声"

Copied!
12
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラムの概要

マルチメディアコントロールを使用する と、アプリケーションでメディアコントロ ールインターフェイス(MCI)デバイスを 扱う事が出来る事を利用して、マルチメデ ィアプレイヤーを作成する。 此処では、ビデオファイル(AVI)、MIDI シーケンサ(MID)、WAVE オーディオ (WAV)、オーディオCDを再生するプレ イヤーを作成する。 ドライブリストボックス、ディレクトリリストボックス、ファイルリストボックスを連結して、ファイ ルを選択し、選択したファイルの拡張子よりファイルの種類を判別して、再生出来る様にする。

マルチメディア・音声

C# 2005 ⑦ □ 単純変数の宣言(Public) □ 標準コントロールの利用(DriveList、DirList、FileList、Label、Picture、Frame 等) □ プロパティの値の取得と設定(Standard: Drive、Path、FileName、Value、Caption 等) □ プロパティの値の取得と設定(MMC: Command、DeviceType、FileName、CanPlay 等) □ イベントの利用(Load、Unload、Click、Change) □ 静的メソッドの利用(Application.Exit) □ テキストファイルの読込(System.IO.StreamReader、ReadLine、Close、Encoding) □ エスケープシーケンスの無効化( @" 文字列 " ) □ 制御構造構文(条件分岐 If ( ~ ) { … } else { … }、switch) □ ActiveX コントロールの利用(アイテムの選択 → COM コンポーネント) 今回の課題項目 □ MCI コンポーネントの利用(Command、DeviceType、FileName、CanPlay) □ コントロールのハンドルの利用(hWndDisplay、hWnd) 今回の重点項目 □ 再生位置を表示し、スライドバー等で任意位置に移動出来る様にする。 □ 録音も出来る様にする。 □ グラフィックス面を改良して見栄えの良い物にする。 今回の応用項目

(2)

-2-

■ ツールボックスのカスタマイズ ■

■ マルチメディアコントロール(MCI)の追加

1.ツールボックスを右クリック→『アイテムの選択』と進む。

2.『COM コンポーネント』で Microsoft Multimedia Control, version 6.0 を選択する。

(3)

■ テキストスピーチコントロール(TextToSpeech)の追加

1.ツールボックスを右クリック→『アイテムの選択』と進む。

2.『COM コンポーネント』で TextToSpeech Class を選択する。

※ 上記のダイアログボックスに TextToSpeech が存在し無い場合、インストールする必要が有る。

下記に記すファイルは、2007 年 5 月 1 日現在、下記のサイトよりダウンロードする事が出来る。

http://www.microsoft.com/msagent/downloads/user.asp#tts

MS Speech Engine v4(actcnc.exe)をインストールすると、音声エンジンを使用する事が出来る様に 成る。但し、音声データが無い為、此の儘では、音声を発する事は出来ない(エラーが発生する)。 Tv_enua.exe をインストールすると、米国英語に対応する。 米国英語の男性:CA141FD0-AC7F-11D1-97A3-006008273000 Lhttseng.exe をインストールすると、英国英語に対応する。 英国英語の女性:227a0e40-a92a-11d1-B17B-0020AFED142E(Carol) 英国英語の男性:227A0E41-A92A-11d1-B17B-0020AFED142E(Peter) lhttsjpj.exe をインストールすると、日本語に対応する。 日本語の男性:A778E061-A936-11d1-B17B-0020AFED142E(Kenji) 日本語の女性:a778e060-a936-11d1-B17B-0020AFED142E(Naoko) 以上で、C# を含む Visual Studio から使用する事が出来る様に成る。 本プログラムを実行す る為にインストールす る必要の有るのは、下 記の通りで有る。 actcnc.eex Tv_enua.exe lhttsjpj.exe

(4)

-4- ■ オブジェクト・プロパティ一覧 ■ コントロールの種類 プロパティ プロパティの設定値 フォーム Name player Text マルチメディアプレイヤー ドライブリスト Name drvPlayer ディレクトリリスト Name dirPlayer ファイルリスト Name filPlayer ラベル1 Name lblTitle AutoSize False BackColor、ForeColor Black、White Font MS明朝、太字、24 Text、TextAlign マルチメディアプレイヤー(MiddleCenter) ピクチャーボックス Name picDisp BackColor Black グループボックス1 Name grpSelect Text 空白 ラジオボタン1 Name radFile Text オーディオファイル Checked True ラジオボタン2 Name radCD Text オーディオCD グループボックス2 ラベル1 ラベル2 ボタン1 ピクチャーボックス グループボックス1 ラジオボタン1 ドライブリストボックス ファイルリストボックス ディレクトリリストボックス マルチメディアコントロール ボタン2 テキストボックス コンボボックス TextToSpeech ラジオボタン2

(5)

コントロールの種類 プロパティ プロパティの設定値 ラベル2 Name lblKind TextAlign MiddleCenter BorderStyle FixedSingle Font MS明朝、太字、9 ボタン1 Name btnFinish Text 終了 Font MS明朝、太字、12 マルチメディア Name mmcPlayer テキストボックス Name txtSpeak Font MS明朝、標準、12 Multiline True Text 空白 グループボックス2 Name grpVoice Text 空白 コンボボックス Name cboVoice Font MS明朝、標準、9 Items 英 語(男性) 日本語(男性) 日本語(女性)

TextToSpeech Name ttsSpeak

ボタン2 Name btnSpeak Text 音声再生 Font MS明朝、太字、12 ドライブリストボックス システムの有効なドライブ一覧を表示するコントロール ディレクトリリストボックス カレントディレクトリの階層構造を表示するコントロール ファイルリストボックス 指定したディレクトリ内のファイル一覧を表示するコントロール マルチメディアコントロール(MCI) メディアコントロールインターフェイス(MCI)デバイスでのマルチメディアファイルの再生 録音や録画等を制御するコントロール。此のコントロールには幾つかのボタンが用意されて居 り、オーディオボード、MIDI シーケンサ、CD-ROM ドライバ、オーディオ CD プレイヤー、 ビデオディスクプレイヤー、ビデオテープレコーダー、及び、ビデオテーププレイヤー等のハ ードウェアを制御するデバイスドライバにMCI コマンドを送る。亦、此のコントロールは、 ビデオファイル(AVI)の再生もサポートして居る。 テキストスピーチ(TextToSpeech) テキストを音声合成に依り発声するコントロール。音声には、世界の主要言語が用意されて居 り、日本語も男女2種の音声が提供されて居る。猶、日本語では、仮名文は勿論、漢字仮名交 じり文も音読する事が出来る。音声ガイドに利用する事が出来る。

(6)

-6- ■ プログラムリスト ■ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace player {

public partial class player : Form { public player( ) { InitializeComponent( ); } // フォームが読み込まれた時の処理

private void player_Load( object sender, EventArgs e ) { // デバイスのオープン mmcPlayer.Command = "Open"; // 音声の初期設定(英語の男性の声) cboVoice.SelectedIndex = 0; } // フォームが閉じられた時の処理

private void player_FormClosed( object sender, FormClosedEventArgs e ) { // デバイスのクローズ mmcPlayer.Command = "Close"; } // ボタン(終了)がクリックされた時の処理

private void btnFinish_Click( object sender, EventArgs e ) { this.Dispose( ); Application.Exit( ); } // ドライブリストボックスの選択項目が変化した時の処理

private void drvPlayer_SelectedIndexChanged( object sender, EventArgs e ) {

dirPlayer.Path = drvPlayer.Drive; }

// ディレクトリリストボックスの内容が変化した時の処理

private void dirPlayer_Change( object sender, EventArgs e ) { filPlayer.Path = dirPlayer.Path; } ネームスペース(名前空間)の使 用を宣言して居る。 此の部分は、エディタが、自動的 に記述して下れる。 クラス名と同じ名前のメソッド は、コンストラクタと呼ばれ、ク ラスのインスタンスを生成し、初 期化するメソッドで有る。 フォームのLoad イベントは此の フォームがメモリに読み込まれた 時に発生する。アクティブに成っ た時ではない事に注意が必要。 コンボボックスの SelectedIndex プロパティを設定する事に依り選 択項目を指定する事が出来る。 アプリケーションを終了する場 合、使用したデバイスは閉じてか ら終了する事が望ましい。 アプリケーションを終了する場 合、正しくプログラムをメモリか ら消去して終了する。 ドライブの変更をディレクトリに 反映させる。 SelectIndexChange で は な く Change でないと、ファイルリス トボックスと連動しない。

(7)

// ファイルリストボックスの選択項目が変化した時の処理

private void filPlayer_SelectedIndexChanged( object sender, EventArgs e ) { string f = "", s = ""; // オーディオ CD 選択時の処理 if ( radCD.Checked ) return; // デバイスのクローズ mmcPlayer.Command = "Close"; // フルパスのファイル名の取得

if ( filPlayer.Path.EndsWith( @"¥" )) f = filPlayer.Path + filPlayer.FileName; else f = filPlayer.Path + @"¥" + filPlayer.FileName;

s = f.Substring( f.LastIndexOf( "." ) + 1 ).ToLower( ); switch ( s ) { case "mid": lblKind.Text = "MIDIシーケンサ"; mmcPlayer.DeviceType = "Sequencer"; mmcPlayer.FileName = f; break; case "avi": lblKind.Text = "ビデオファイル"; mmcPlayer.DeviceType = "AVIVideo"; mmcPlayer.FileName = f; // ビデオファイルの表示デバイスの設定 // 設定しない場合は、新しいフォームで表示される。 mmcPlayer.hWndDisplay = picDisp.Handle.ToInt32( ); break; case "wav": lblKind.Text = "WAVEオーディオ"; mmcPlayer.DeviceType = "WaveAudio"; mmcPlayer.FileName = f; break; case "txt": lblKind.Text = "音声再生テキスト"; txtSpeak.Text = "";

System.IO.StreamReader sr = new System.IO.StreamReader( f, Encoding.Default ); while (( s = sr.ReadLine( )) != null )

{ txtSpeak.Text += ( s + "¥r¥n" ); } sr.Close( ); sr.Dispose( ); return; } // デバイスのオープン mmcPlayer.Command = "Open"; // デバイスのチェック if ( !mmcPlayer.CanPlay ) { lblKind.Text = "デバイス『" + mmcPlayer.DeviceType + " 』は使用不可"; } } ビデオファイルの場合の拡張子は avi で、デバイスの指定文字列は AVIVideo。 MIDI シーケンサの場合の拡張子 はmid で、デバイスの指定文字列 はSequencer。 ファイル名の最後のコンマ以降の 部分(拡張子)を調べ、ファイル の種類を判別して居る。 オーディオCDは再生時にデータ ファイルを必要としないデバイス なので、ファイルを指定する必要 は無い。 パス名の末尾に区切記号¥が付か 無い事が有る為、パス名とファイ ル名を正しく区切る為に、パス名 の末尾の1文字を調べて、フルパ スのファイル名を設定して居る。 デバイス変更時には、一旦デバイ スを閉じる。 WAVE オーディオの場合の拡張 子はwav で、デバイスの指定文字 列はWaveAudio。 拡張子がtxt のテキストファイル は、読み込んでテキストボックス に表示する。 Open コマンドを実行すると再生 機能が有るか調べる事が出来る様 に成る。 CanPlay プロパティが True の場 合は使用可能、False の場合は使 用不可で有る。

(8)

-8- // ラジオボタンがクリックされた時の処理

private void OptionClick( object sender, EventArgs e ) { // デバイスのクローズ mmcPlayer.Command = "Stop"; mmcPlayer.Command = "Close"; if ( radFile.Checked ) { drvPlayer.Enabled = true; dirPlayer.Enabled = true; filPlayer.Enabled = true; } else { drvPlayer.Enabled = false; dirPlayer.Enabled = false; filPlayer.Enabled = false; mmcPlayer.DeviceType = "CDAudio"; mmcPlayer.Command = "Open"; } } // ボタン(音声再生)がクリックされた時の処理

private void btnSpeak_Click( object sender, EventArgs e ) { // 読上速度の設定 ttsSpeak.Speed = 120; // 音声の設定 switch ( cboVoice.SelectedIndex ) { case 0: // 英語の男性の声 // ttsSpeak.TTSMode = "C5C35D60-DA44-11D1-B1F1-0000F803E456" ttsSpeak.TTSMode = "CA141FD0-AC7F-11D1-97A3-006008273000"; break; case 1: // 日本語の男性の声 ttsSpeak.TTSMode = "A778E061-A936-11d1-B17B-0020AFED142E"; break; case 2: // 日本語の女性の声 ttsSpeak.TTSMode = "A778E060-A936-11d1-B17B-0020AFED142E"; break; } // 音声の再生 ttsSpeak.Speak( txtSpeak.Text ); } } } オーディオファイルとオーディオ CDを切り替える時は、一旦デバ イスを閉じる。 オーディオファイルの場合は、フ ァイルを選択する事が出来る様に する。 オーディオCDの場合は、ファイ ルを選択する事が出来ない様にす る。猶、オーディオCDの場合は、 デバイスの種類を指定して開け ば、各トラックの再生、巻き戻し、 早送りが出来る様に成る。 TTSMode プロパティの値には使 用する音声を示す値を指定する。 TextToSpeech コ ン ト ロ ー ル の Speak メソッドで引数に指定した 文字列を発声する。 インストールされて居ない音声を 指定すると、エラーが発生する。 読み上げ速度は、TextToSpeech コントロールのSpeed プロパティ で指定する。値が大きい程、早口 に成る(WinXP ではエラー)。 音声値は、音声コード.txt を参照 され度い。

(9)

MCI オブジェクトの DeviceType プロパティに依るデバイスの指定 MCI デバイスのデバイスタイプを指定するプロパティ

Object.DeviceType = 引数

MCI デバイスを引数で指定したデバイスの種類に設定する。

オブジェクトにはMCI(Media Control Interface)コントロールを指定する。 引数にはMCI(Media Control Interface)デバイスの種類を指定する。

単純型デバイス(CD プレイヤー等の様にファイルを使用し無いデバイス)を開く場合は、此のプロパ ティでデバイスタイプを指定する必要が有る。亦、ファイルの拡張子でデバイスを識別出来ない場合に 複合型デバイス(再生時にデータファイルが必要なデバイス)を開く時も、此のプロパティを設定する 必要が有る。 下記に、マルチメディアコントロールでサポートされるデバイスの一部と、其等のデバイスを使用する 為にDeviceType プロパティに設定する指定文字列を示す。猶、ファイルの種類が記述されて居るデバ イスは、複合型のデバイスで有る。 デバイスの種類 指定文字列 ファイルの種類 説明 CD audio CDAudio オーディオCDプレイヤー

Digital Audio Tape DAT デジタルオーディオテーププレイヤー

Digital video DigitalVideo デジタルビデオ(非GDI ベース)

Other Other 未定義のMCI デバイス

Overlay Overlay オーバーレイデバイス

Scanner Scanner イメージスキャナ

Sequencer Sequencer .mid MIDI シーケンサ ※

Vcr VCR ビデオテープレコーダー・プレイヤー

AVI AVIVideo .avi ビデオファイル

Videodisc Videodisc ビデオディスクプレイヤー

Wave audio Waveaudio .wav Waveform オーディオデバイス

※ Visual Studio 2005 では、エラーは発生しないが、反応しない。

MCI オブジェクトの FileName プロパティに依るファイルの指定 ファイルを指定するプロパティ

Object.FileName = 引数

Open コマンド、又は、Save コマンドの対象と成るファイルを指定する。

オブジェクトにはMCI(Media Control Interface)コントロールを指定する。 引数には、対象と成るファイル名を指定する。 実行時にFileName プロパティの値を変更するには、マルチメディア MCI(MMControl)コントロー ルを一度閉じてから、再度開く必要が有る。 機 能 書 式 解 説 機 能 書 式 解 説

(10)

-10-

MCI オブジェクトの Command プロパティに依るコマンドの実行 MCI コマンドの種類を指定して実行するプロパティ

Object.Command = 引数

引数で指定したMCI コマンドを実行する。

オブジェクトにはMCI(Media Control Interface)コントロールを指定する。 引数には、実行するMCI コマンドを指定する。 指定したコマンドは直ぐに実行される。コマンド実行中にエラーが発生した時は、其のエラーコードが Error プロパティに返される。此のプロパティは、デザイン時には使用出来ない。 下記に、使用出来るMCI コマンドを示す。 コマンド 内容 Open デバイスを開く Close デバイスを閉じる Play デバイスを再生する Pause 再生・録音・録画を一時停止する(一時停止中は再生・録音・録画を再開する) Stop 再生・録音・録画を停止する Back 逆方向にフレームを再生する Step 順方向にフレームを再生する Prev カレントトラックの先頭に移動する Next 次のトラックの先頭に移動する Seek 再生中は指定した位置から再生を続け、其れ以外は位置を検索する Record 録音・録画を実行する Eject メディアを排出(イジェクト)する Sound 音を鳴らす Save 現在開いて居るファイルを保存する MCI オブジェクトの CanPlay プロパティに依る再生機能の確認 MCI デバイスに再生する機能が有るかを示すプロパティ Object.Canplay MCI デバイスに再生する機能が有る場合は真(True)を、無い場合は偽(False)を返す。

オブジェクトにはMCI(Media Control Interface)コントロールを指定する。

Open コマンドを実行すると、MCI デバイスに再生する機能が有るか何うかが MCI_GETDEVCAPS コ マンドを使用してチェックされ、其の結果が CanPlay プロパティに返される。此のプロパティは、デ ザイン時には使用出来ず、実行時に値の取得のみ可能で有る。 機 能 書 式 解 説 機 能 書 式 解 説

(11)

MCI オブジェクトの hWndDisplay プロパティに依る出力先の変更

ウィンドウ出力するデバイスで出力するウィンドウを示すプロパティ

Object.hWndDisplay

ウィンドウを使用して出力を表示するMMMovie デバイス、又は、Overlay デバイスで、出 力を表示するウィンドウを返す。亦、出力先を変更する事も出来る。

オブジェクトにはMCI(Media Control Interface)コントロールを指定する。

此のプロパティは、MCI デバイスが出力を表示する場合に使うウィンドウのハンドルを表す。ハンドル が0の時は、既定のウィンドウを使う事を示す。猶、MCI デバイスが出力を表示する場合にウィンドウ を使用するか何うかを調べるには、UsesWindows プロパティを使う。 フォームのハンドルを取得するには、其のフォームのhWnd プロパティの値を調べる。此のプロパティ は、デザイン時には使用出来ない。 hWnd プロパティに依るハンドルの取得 フォーム、又は、コントロールのハンドル示すプロパティ Object.hWnd Microsoft Windows では、アプリケーション内の各フォーム、及び、コントロールを識別す る為に、各オブジェクトにハンドルを割り当てる。hWnd プロパティは、其のフォームやコ ントロールのハンドルを取得するプロパティで有る。

hWnd プロパティは Windows API の呼出で使用される。Windows で使用される多くの関数は、引数と して現在のウィンドウのhWnd を必要とする。猶、hWnd プロパティの値はプログラムの実行中に変更 される可能性が有る為、値は変数に格納しないで、直接参照する様にする。 此処では、MCI コントロールの hWndDisplay プロパティに、ピクチャーボックスの hWnd プロパテ ィを設定して、既定の新しいウィンドウを開かずに、AVI 画像の出力先をピクチャーボックスに変更し て居る。但し、Visual Studio 2005 では、hWnd はサポートされない為、此処では、ピクチャーボック スのハンドルを取得する為に、Object.Handle.ToInt32 を使用して居る。 機 能 書 式 解 説 機 能 書 式 解 説 SelectedIndexChanged と Change イベント

ドライブリストボックス、ディレクトリリストボックスに於いて、Bisual Basic 6.0 では、Change イベントしか提供されて居なかったが、.NET 以降では、SelectedIndexChanged イベントも提供 され居る。SelectedIndexChanged イベントが、此等のリストボックスで項目を変更した時而巳に 発生するのに対して、Change イベントは、コードでドライブやディレクトリを変更した時に発生 する様で有る。此等を連動させる時には、適切なイベントを選択する必要が有る。亦、ファイルリ ストボックスでは、Click イベントが無く成り、同等の事を行うには、SelectedIndexChanged イ ベントを使用する。

(12)

-12- MCI イベント ButtonClick 各ボタンをクリックした時に発生 ButtonCompleted 各ボタンをクリックする事に依り実行される MCI コマンドの終了時に発生 ButtonGotFocus 各ボタンがフォーカスを得た時に発生 ButtonLostFocus 各ボタンがフォーカスを喪失した時に発生

Done MCI コマンドの終了時に発生(Notify プロパティが真の時) StatusUpdate UpdateInterval プロパティで設定した間隔で自動的に発生 MCI プロパティ AutoEnable 各ボタンの有効・無効の自動設定 ButonEnabled 各ボタンの有効・無効の設定 ButtonVisible 各ボタンの表示・非表示を設定 CanEject メディアのイジェクト機能の有無を取得 CanPlay メディアの再生機能の有無を取得 CanRecord メディアの録音・録画機能の有無を取得 CanStep メディアのフレーム再生(コマ送り)機能の有無を取得 Command MCI コマンドの種類を指定して実行 DeviceID 現在開いて居る MCI デバイスのデバイス番号を取得 DeviceType MCI デバイスのデバイスの種類を設定 Enabled ユーザー操作でのイベント認識の設定 Error 直前に実行した MCI コマンドのエラーコードを取得 ErrorMessage エラーコードの内容を示す文字列の取得 FileName 操作対象と成るファイルの設定 Frames フレーム再生する場合のフレーム数の設定 From 再生・録画・録音を行う開始位置の設定 hWndDisplay 出力を表示するウィンドウの取得と設定 Length MCI デバイスのメディアの長さを取得 Mode MCI デバイスの現在の状態を取得 Notify MCI 通知サービスの使用の設定

NotifyMessage Notify プロパティに依り発生した Done イベントの通知内容を取得 NotifyValue 通知メッセージを要求した最後の MCI コマンドの実行結果を取得 Orientation ボタンの配置を設定 Position MCI デバイスの現在の位置を取得 RecordMode 現在の記録モードを設定 Shareable MCI デバイスの共有の設定 Silent 音の出力の設定 Start メディアの開始位置を取得 TimeFormat メディアの長さや位置を表す時刻形式を設定 To 再生・録画・録音を行う終了位置の設定 Track トラックの設定 TrackLength トラックの長さを取得 TrackPosition トラックの開始位置を取得 Tracks 現在の MCI デバイス上のトラックの総数を取得 UpdateInterval StatusUpdate イベントが発生する時間間隔を設定 UsesWindows 出力表示ウィンドウの使用の設定 Wait MCI コマンドの実行終了後のアプリケーションへの制御の復帰を設定

参照

関連したドキュメント

画像の参照時に ACDSee Pro によってファイルがカタログ化され、ファイル プロパティと メタデータが自動的に ACDSee

大声なし ※1 100%以内 大声あり ※2 50%以内. 5,000人 ※1

業種 事業場規模 機械設備・有害物質の種 類起因物 災害の種類事故の型 建設業のみ 工事の種類 災害の種類 被害者数 発生要因物 発生要因人

具体音出現パターン パターン パターンからみた パターン からみた からみた音声置換 からみた 音声置換 音声置換の 音声置換 の の考察

がれき類の処理体制 1.不明者捜索に係るがれき類の撤去(人命隊)

・ 改正後薬機法第9条の2第1項各号、第 18 条の2第1項各号及び第3項 各号、第 23 条の2の 15 の2第1項各号及び第3項各号、第 23 条の

太陽光(太陽熱 ※3 を含む。)、風力、地熱、水力(1,000kW以下)、バイオマス ※4.

<RE100 ※1 に参加する建設・不動産業 ※2 の事業者>.