┌─────────────────────────────────┐ │ BlueWave PCM8ライブラリ ver.0.05 (WWGP2001版) nn ▲ │ for WonderSwan with WonderWitch (^^) 〓 │ Copyright(C)2001 AOI☆(aoi@i.am) (x )o ▼ └─────────────────────────────────┘ ----------------------------------------------------------------------------- #1・はじめに ----------------------------------------------------------------------------- 本ソフトは、WonderWitch版LSI-C用のPCMライブラリ(bwpcm8.lib)です。 以下の機能を提供します。 ・最大8音合成 ・長時間再生に適した 4bitADPCM形式(X68k形式)に対応 (8音合成との選択) ・サンプリングレート選択可能(12kHz、6kHz、4kHz、3kHz) ・64KB以上のPCMデータ再生可能 ・ループ再生、ループ回数カウント機能装備 本ライブラリは以下のファイルから構成されています。 README.txt … ドキュメント bwpcm8.lib … ライブラリ bwpcm8.h … ヘッダファイル bwcnv.exe … BWPCM8リソースコンバータ pcm8demo.fx … デモプログラム source/ pcm8demo.c … デモプログラムソース pcm8demo.cf … cfファイル makefile … pcm8demo.fx のmakefile(LSI-C用) bwcnv.c … bwcnv.exe のソース(LSI-C用) 他のソースは現時点では非公開です。 ※デモプログラムについて Aボタンで、PCMの合成再生テスト(12kHz, MAX5音合成) Bボタンで、ADPCMの長時間再生テスト(6kHz,293,584byteで、約1分30秒) ※制限事項 現バージョンでは、12kHzで処理落ちなしで再生出来るのは残念ながら5音までです。 6kHz以下では、8音まで処理落ちなしで再生できます。(とても重いですが) なお、このバージョンにおけるデモプログラムは、フリーの音声データを使用させて いただいています。評価対象はLIB自体で、デモプログラムはあくまで動作評価用の 試作サンプルということでお願いします。 ----------------------------------------------------------------------------- #2・動作環境 ----------------------------------------------------------------------------- 動作機種 : ワンダースワン、ワンダースワンカラー OS バージョン: WonderWitch 1.1.0 FreyaOS 1.1.0 FreyaBIOS 1.0.0 c/w Meg 1.1.0 コンパイラ : LSI C-86 for WonderWitch 動作確認環境 : MS Windows98のDOS窓 ----------------------------------------------------------------------------- #3・ライブラリの使い方 ----------------------------------------------------------------------------- (1)対応フォーマット bwpcm8.lib は以下の形式の音声データを扱えます。 ・sndcnv で作成したリソースファイル中のPCMデータ 8bit モノラルPCM、 最大64KB(sndcnvの制限による) ・bwcnv で作成したリソースファイル中のPCMデータ 8bit モノラルPCM、 最大1MB(メモリサイズに制限される) 4bit モノラルADPCM、最大1MB(メモリサイズに制限される) ・メモリ上のPCMデータ 8bit モノラルPCM or 4bit モノラルADPCM (2)使用方法 ソースファイルに”bwpcm8.h”をインクルードします。 リンクファイルとして”bwpcm8.lib”を指定します。 実行時にサウンドドライバ(sound.il)は不用です。 (3)注意事項 HBLANK割りこみを使用している為、HBLANK割りこみを使用している関数や il(sound.il等)とは同時に使用出来ないもとと思われます。 (4)提供される関数 ◆PCMドライバの使用開始(PCM8_OPEN) C言語呼び出し形式 void near pcm8_open( int pcm_id, int freq_id ); 引数: pcm_id: 0= 8bit モノラルPCMモード 1= 4bit モノラルADPCMモード freq_id: PCM_FREQ_12K= サンプリング12kHz PCM_FREQ_6K = サンプリング 6kHz PCM_FREQ_4K = サンプリング 4kHz PCM_FREQ_3K = サンプリング 3kHz 戻り値: (なし) 機能詳細: HBLANKタイマー・カウント終了の割り込みハンドラとしてPCMドライバを 登録します。 8bit モノラルPCMモードでは最大8音合成が可能です。 4bit モノラルADPCMモードでは単音のみですが、長時間の再生が可能です。 備考: 現バージョンの実力値として、12kHzで処理落ち無しで再生出来るのは5音 までです。 ◆PCMドライバの使用終了(PCM8_CLOSE) C言語呼び出し形式 void near pcm8_close(int last_intcall_interval); 引数: last_intcall_interval: 0= HBLANKタイマー割り込み禁止 1以上= プリセットカウンタ値 戻り値: (なし) 機能詳細: HBLANKタイマー・カウント終了の割り込みハンドラを元に戻します。 last_intcall_intervalに 0を指定すると、以降のHBLANKタイマー割り込み を禁止(DISABLE)します。1以上を設定するとこの値をプリセットカウンタ値 として、オートプリセットモードを設定します。 ◆PCMリソースの再生(PCM8_START) C言語呼び出し形式 int near pcm8_start(int channel, int id, int flag); 引数: channel: 0= 空いているチャンネルを使用する 1〜8= チャンネル1(〜8)を使用してPCMを再生する id: リソースid flag: 0= 通常再生 FLG_LOOP= ループ再生 戻り値: チャンネル番号(1〜8)。エラー時は0。 機能詳細: リソースファイル中のPCMデータを再生します。 PCM再生に成功した時は、戻り値として使用したチャンネル番号を返します。 sndcnv形式とbwcnv形式は、自動的に判定されます。 4bit モノラルADPCMモードでは、channelは無視されて常にチャンネル1を 使用します。 8bit モノラルPCMモードでは、channelに0を指定した時は、空いているチャ ンネルを使用します。空きチャンネルが無い場合には、任意のループ再生を していないチャンネルを止めてそのチャンネルを使用します。全てのチャン ネルがループ再生であった時は何もせずに終了し、戻り値0を返します。 ◆メモリ上のPCMの再生(PCM8_START_MEM) C言語呼び出し形式 int near pcm8_start_mem(int channel, int flag, BYTE far *dat, DWORD size); 引数: channel: 0= 空いているチャンネルを使用する 1〜8= チャンネル1(〜8)を使用してPCMを再生する flag: 0= 通常再生 FLG_LOOP= ループ再生 dat: データの先頭アドレス(farポインタ) size: データの長さ(32bit) 戻り値: チャンネル番号(1〜8)。エラー時は0。 機能詳細: メモリ上のPCMデータを再生します。 PCM再生に成功した時は、戻り値として使用したチャンネル番号を返します。 sndcnv形式とbwcnv形式は、自動的に判定されます。 4bit モノラルADPCMモードでは、channelは無視されて常にチャンネル1を 使用します。 8bit モノラルPCMモードでは、channelに0を指定した時は、空いているチャ ンネルを使用します。空きチャンネルが無い場合には、任意のループ再生を していないチャンネルを止めてそのチャンネルを使用します。全てのチャン ネルがループ再生であった時は何もせずに終了し、戻り値0を返します。 ◆PCM再生の終了待ち(PCM8_WAIT) C言語呼び出し形式 void near pcm8_wait(int channel); 引数: channel: 1〜8= チャンネル番号 戻り値: (なし) 機能詳細: 指定したチャンネルのPCM再生が終了するまで待ちます。 ループ再生しているチャンネルでは、ループ再生を解除します。 ◆PCM再生の停止(PCM8_STOP) C言語呼び出し形式 void near pcm8_stop(int channel); 引数: channel: 1〜8= チャンネル番号 戻り値: (なし) 機能詳細: 指定したチャンネルのPCM再生を止めます。 ◆指定チャンネルのステータスリード(PCM8_READ_STATUS) C言語呼び出し形式 unsigned near pcm8_read_status(int channel); 引数: channel: 1〜8= チャンネル番号 戻り値: ステータス: 以下の論理和になります。 FLG_PLAY= PCM再生中 FLG_LOOP= ループ指定あり FLG_NEXT= 再生予約あり(未対応) 機能詳細: 指定したチャンネルのステータスを返します。 ◆指定チャンネルのループ回数リード(PCM8_READ_LOOP_COUNT) C言語呼び出し形式 unsigned near pcm8_read_loop_count(int channel); 引数: channel: 1〜8= チャンネル番号 戻り値: ループ回数 機能詳細: 指定したチャンネルがループ再生している時のループ回数を返します。 65536回で0に戻ります。 ----------------------------------------------------------------------------- #4・リソースファイルの作り方 ----------------------------------------------------------------------------- bwcnvを使って、8bitモノラルのWAVファイルを bwpcm8.lib で扱えるリソースファイル に変換します。サンプリング周波数変換機能はありませんので、必要なサンプリング 周波数のWAVファイルをご用意ください。 DOSのコマンドラインから以下のように実行します。 bwcnv [] [] には、元になるWAVファイル名を、 には、リソースファイル名を指定します。 リソースファイル名は省略します。省略時は WAVファイル名.fr となります。 オプションは、以下の通り。 -f: フォーマットを指定します。 -f1で8bit PCM, -f2で4bit ADPCMです。 省略時は、-f1 です。 -d : リソースIDを指定します。省略時は -d0 です。 ----------------------------------------------------------------------------- #5・免責 ----------------------------------------------------------------------------- このソフトは、無償であり、無保証です。 運用結果については、一切責任を負いかねますのでご了承ください。 (お約束なので書いておきます:-) ) ----------------------------------------------------------------------------- #6・作者情報、その他 ----------------------------------------------------------------------------- 作者名 : AOI☆ メールアドレス: aoi@cds.ne.jp ホームページ : http://www.vector.co.jp/authors/VA004239/ #本パッケ−ジ中の商品名、会社名は、各社の商標および登録商標です。 2001/ 1/31 written by AOI☆(あおいほし) [EOF]