エンベロープ

アタックやディケイを行うためにエンベロープを生成しなければなりません。当初、16bitの積による等比数列を考えましたが、あっさり廃案。精度が足りません。次にテーブル・ルックアップによるexp関数を考えましたが、これもクロックサイクルばかり増えてうまくありません。結局32bit固定小数点数同士の積による方法を考えました。
まだ、簡単な検証しかしていませんが、こんな感じのコードです。

	a1= r1.H * r0.L(m), r2 = ( a0 =  r1.H * r0.H) ;
	r3=( a1+=r0.H * r1.L)(m);
	r3 >>>= 15;
	r2 = r2 + r3;

r0とr1にそれぞれ32bit符号無し付き固定小数点数のデータを入れておきます。出力はr2です。