|
||||||||||||||||||||||||||||||||||
ここでは英語のフレーズを繰り返し聞ける Sound Player の作成について解説します。 すでに公開してあるソフト、Replayer, Repeater の元になったコードです。実際のソフトでは、それなりに拡張してありますが、指定範囲を再生するという基本的な動きは同じものです。 VCL に付属の MediaPlayer はトラックの再生は簡単にできますが、ポジションの再生はちょっと工夫が必要です。とは言えそれなりのプロパティが用意されているのですぐにできます。 ポジションの指定は、英単語やフレーズの聴き取りや書き取りなど、短い範囲を何度も繰り返し再生したいときにかなり役に立ちます。もちろんギターのフレーズコピーや歌の練習にも利用できます。今回はそのベース部分を作成してみます。 なお、Tips(CD のトラックを取得・指定トラックを再生)で CD の再生に関して記述してありますので、今回はオーディオファイルを再生する場合を取り上げてみます。 英語のヒアリング学習ソフト作成のポイント ●MediaPlayer でのポジションの扱い方 これを理解すれば作成できます。 ポイントは ファイルの任意ポジションをどうやって指定するか、です。VCL には便利なプロパティStartPos, EndPos, Position などがあります。 開始ポジションと終了ポジションを記録して、決めた回数だけ再生を繰り返せば、お題目の「英語のヒアリング学習ソフト」の出来上がりです。今回は、ストップポジションを記録して再生するところまでを解説してみます。任意のポジションからスタートさせる、希望の回数繰り返す、などでは、コードを追加する必要があります。各自工夫してみてください。 それではさっそくフォームの作成から取り掛かります。 今回は、指定範囲を再生することが目的ですので、MediaPlayer の再生に関わる細かい制御には、言及していません。そのためコンポーネントは配置後、設定を変えずそのまま使っています。実際には、このあたりもコーディングが必要になるかと思います。 また、環境によっては、取得する時間や midi ファイルなどでずれが生じるようですので、補正が必要になる場合があるかもしれません(今回は無視)。 まず新規にアプリケーションを作成して、コンポーネントを以下のように配置します。 MediaPlayer1 を配置し、その下に、StartButton と StartLabel。 間隔を適当にあけて、 EndButton と EndLabel を置きます。横には、PositionLabel を Font サイズ 12 程度の太字で配置させます。その下に RepeatButton と Timer1 を置き、他に MainMenu と OpenDialog を配置させて終了です。 Form のサイズは Width = 370, Height = 255 にしてあります。各コンポーネントの大きさは、適宜調整してください。面倒な場合は、適当に配置してもぜんぜん OK です。
コンポーネントの配置が済んだら、ヘッダーファイル
Unit1.h のコーディングを行います。
次に実際のコードを Unit1.cpp に書いていきます。 まず MediaPlayer の ポジション(ロードされているメディアの現在位置)から分と秒を計算して、文字列として返す関数 PosToTime をインプリメントします。動きを見ていきます。 最初に MediaPlayer の TimeFormat に tfMilliseconds を設定します。位置情報の形式を tfMilliseconds にすると、現在の位置はメディアに対してミリ秒で得られます。今回ファイルを扱っていますが、CD の分と秒及びフレームなどを取得する場合は、tfMSF, tfTMSF などを利用すると便利です。目的に応じてこれらの形式を上手く使い、必要な情報を取得してください。 次に取得したミリ秒を秒に変え、「分」「秒」を計算から求めています。表示用に文字列を整え、戻り値として返します。今回のアプリは、この関数だけで動いているようなもので、取得した値を上手く使いまわすかどうかがポイントになります。
続く・・・。 |