━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   MikoVoice プログラミング
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 MikoVoice の API は、MikoVoice.dll という DLL に実装しています。この API の各
関数の仕様は、「API仕様」で説明しています。

 C言語や C++言語で、MikoVoice の API を使うときは、MikoVoice.h というファイルを
インクルードしておく必要があります。このファイルには、各関数のプロトタイプ宣言や
各種の定数定義などがあります。

 MikoVoice の API を使っているソースプログラムをコンパイルして、実行形式を生成
する際には、MikoVoice.lib というライブラリーファイルをリンクする必要があります。
( MikoVoice.dll を LoadLibrary() 関数等で動的にリンクして使う場合、その必要は
ありません。)

 MikoVoice の API を使っているプログラムを実行する際には、MikoVoice.dll が、
「 DLL の検索パス」内で見つかる必要があります。通常、そのプログラムの実行形式
ファイルと同じディレクトリー内に、MikoVoice.dll を入れておきます。

 MikoVoice の API は、マルチスレッドで使用しても安全なように設計されています。

≪注意≫
 MikoVoice.dll を使ったプログラムが終了する前に、あるいは、MikoVoice.dll の
動的リンクを解除する前に、念のために、必ず、MikoVoice の全ポートの音声出力を
停止状態にしてください。全ポートの音声出力を停止するには、
      MikoVoiceOutStop( -1 );
を実行します。

 以下に、MikoVoice の API を使ったプログラム例を示します。

────────────────────────────────────────

●プログラム例(1)

 次は、MikoVoice に「こんにちわ」と発声させる C言語のプログラムです。
    #include "MikoVoice.h"

    main()
    {
        MikoVoiceOutSync( L"こ[んにちわ]" );
    }
このプログラムのソース( Hello.c )と実行形式( Hello.exe )等のファイルは、
本書庫ファイル( mvoice140.zip )内にあります。

────────────────────────────────────────

●プログラム例(2)

本書庫ファイル( mvoice140.zip )には、もう1つのサンプルプログラムが入っています。
そのソースファイルは、MVBox.c で、実行形式のファイルは、MVBox.exe です。これは、
MikoVoice API のほとんどの関数を使っているので、いろいろと参考になります。また、
実用性もあります。

このサンプルプログラムは、単に話すだけでなく、早口言葉を早口で言ったり、関西の
アクセントでしゃべったりします。さらに、いろいろな歌を、いろいろな歌い方(斉唱、
ビブラート、エラー付き)で歌います。これらのほとんどは、女性の声ですが、子供や
男性の声もあります。

このプログラムを実行して表示されるウィンドウには、「音声記号テキスト入力」の
ボックスがあるので、ここに、発声させたい音声記号を入れます。この入力は、任意
に行えますが、メニューから選ぶこともできます。

ウィンドウのサイズは、自由に変更できます。音声記号の入力ボックスのサイズも、
それに応じて変わります。

「発声」ボタンを押すと、音声記号ボックスに入力されている内容に基づいて音声が
合成されて、発声されます。

現在の発声が終わらないうちに再度「発声」ボタンを押すと、現在の発声に今回の
発声が重なります。さらにもう一度「発声」ボタンを押すと、3つの音声が重なり
ます。最大で8音声まで重ねられます。

「発声」ボタンの右側には、0 〜 7 の番号が付いた8個のボタンがありますが、
これらのボタンは、その番号に対応する音声出力ポートが使用中の時に有効になり、
不使用中の時に無効になります。

これらのボタンが有効な時、その番号に対応する音声出力ポートの発声と全音声出力
ポートの発声の「停止」「休止」「再開」が行えます。

音声の波形データをファイルに保存したい時は、メインメニューの「ファイル」下の
「合成音声を保存...」を選びます。

────────────────────────────────────────

●プログラム例(3)

 MikoVoice の API は、C言語や C++言語以外からでも使えます。次のプログラムは、
MikoScript言語(インタプリター)で使う例です。
     // MikoVoice の DLL をリンク
     ::File.GetNamePart( ::File.GetProgramPath(), ProgDir'new! );
     ^MikoVoice = ::DLL.Link( ProgDir + $"Tools\MikoVoice.dll" );
     if( ! ^MikoVoice )
         goto ERR_NO_DLL;
 
     // MikoVoice の DLL 内の関数を取得
     ^OutSync = ^MikoVoice.GetEntry( "MikoVoiceOutSync" );
     if( ! ^OutSync )
         goto ERR_NO_ENTRY;
 
     // 読み上げを実行
     if( ^OutSync( 
         "S3.4 は[じ P1 めま]して P0、S3.5 P0 よ[ろ P1 しく], S3.5 S3.4 お[ねがいしま] s4.3 す。。S3.4 P0"
         "S3.6 ^いま、P1 ミ[コボイ]スで, S3.6 は[なし]て S3.6 S3.4 い^ます。S3.4 P0"
         "S3.6 い^か P1 がですか? P0"
       ) < 0 )
         call ERR_VOICE_OUT;
 
   FIN:
     delete ^MikoVoice;      // MikoVoice の DLL を解放
     return;
 
   ERR_NO_DLL:
     ::Alert( "MikoVoice の DLL が、Tools フォルダー内にありません!" );
     return;
 
   ERR_NO_ENTRY:
     ::Alert( "MikoVoice の DLL 内に、所定の関数がありません!" );
     goto FIN;
 
   ERR_VOICE_OUT:
     ::Alert( "MikoVoice の発声が正常に終了しませんでした!" );
     back;
このプログラムのソースファイルは、テキストエディタ Epsaly( Version 2.00 以降)
のサンプルスクリプトのディレクトリー内に、MVoiceS1.mc という名前で入っています。

────────────────────────────────────────