読者です 読者をやめる 読者になる 読者になる

Lynx-EyEDの電音鍵盤 新館

広帯域制御屋の駄文とか

立て続けに更新

PSoC ADPCM DL

会社帰りにふと思いついたことがあり、デコードパラメータを改良してみました。
今まではC言語で10個の増分パラメータの配列を記述していました。これはiMageCraft Cで12kHz,stereoの音声を発音するのに時間的に限界のパラメータ数だったからなのですが…
M8Cのアセンブラでは、「index」というニーモニックがあり、数値は0〜0xffまで、パラメータ数は256個までという制約があるものの、その範囲内であれば命令サイクルが10サイクル固定のようです。

たとえば

export StepTbl
.LITERAL 
	StepTbl:
	DB 0x03, 0x04, 0x04, 0x04, 0x04,
	0x05, 0x06, 0x07, 0x08, 0x09
.ENDLITERAL		;配列StepTblをROM上に配置
export hoge		;hogeをグローバル宣言

area	 bss(RAM)	;RAM上に変数を宣言
	hoge:	blk 1	;hogeは1バイトの変数

area	text(ROM,REL)
	mov	a,5
	index	StepTbl
	mov	hoge,a

と記述してやると、変数hogeには配列StepTblの5番目の0x05が代入されます。(配列の始めは0番目)
で、30個強のパラメータを作成して音を聞き比べてみたところ
ほぼ変化なし (怒)
ただし、低音の表現は良くなったようなので(定性的ですみません)エンコーダと一緒にアップしてみました。「encoder」フォルダに入ってます。
加えて、トラックスキップに対応しました。SDのCS端子の制御線とVdd(3.3V)を短絡してやるとトラック変更プロセスを実行します。
もちろんこのスイッチは無くても動作するので必要ない場合は回路の追加は必要ありません。

ADPCMプレーヤのダウンロードはコチラから(プロジェクト全部)バージョン0.01e