Documentation
¶
Index ¶
Constants ¶
const A3Freq = float64(440.0)
A3Freq は、A3の周波数[Hz]です。
const A3Note = 9 + 12*4
A3Note は、MIDIメッセージにおけるA3のノートナンバーです。
const ChannelCount = 32
ChannelCount は、最大チャンネル数です。
const DebugDumpFPS = 30
DebugDumpFPS は、デバッグとしてダンプ表示を行う頻度 [FPS] です。
const FNUMCoef = float64(1<<19) / SampleRate * .5
FNUMCoef は、周波数とFNUMを相互に変換する際に使用する係数です。
const ModTableIndexShift = 64 - ModTableLenBits
ModTableIndexShift は、2の64乗を1周とする値からモジュレーション振幅テーブルの インデックスに変換する際、右シフトするビット数です。
const ModTableLen = 8192
ModTableLen は、モジュレーション(ビブラートやトレモロ)の振幅テーブルの長さです。
const ModTableLenBits = 13
ModTableLenBits は、モジュレーション振幅テーブルのインデックスに必要なビット数です。 2 の ModTableLenBits 乗が ModTableLen になります。
const ModulatorMultiplier = 4.0
ModulatorMultiplier は、モジュレータの出力を他のオペレータに入力する際の増幅率です。
const SampleRate = float64(48000)
SampleRate は、内部的なサンプルレート[Hz]です。
const WaveformIndexShift = 64 - WaveformLenBits
WaveformIndexShift は、2の64乗を1周とする値から波形テーブルの インデックスに変換する際、右シフトするビット数です。
const WaveformLen = 1024
WaveformLen は、波形テーブルの長さです。
const WaveformLenBits = 10
WaveformLenBits は、波形テーブルのインデックスに必要なビット数です。 2 の WaveformLenBits 乗が WaveformLen になります。
Variables ¶
var CarrierMatrix = [8][4]bool{ {false, true, false, false}, {true, true, false, false}, {true, true, true, true}, {false, false, false, true}, {false, false, false, true}, {false, true, false, true}, {true, false, false, true}, {true, false, true, true}, }
CarrierMatrix は、各 ALG でキャリアとして使用されるオペレータを表すマトリクスです。
var DTCoef = [8][16]float64{
{0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
{0.00, 0.00, 0.05, 0.05, 0.05, 0.05, 0.09, 0.09, 0.14, 0.14, 0.18, 0.23, 0.27, 0.32, 0.37, 0.37},
{0.05, 0.05, 0.09, 0.09, 0.14, 0.14, 0.18, 0.23, 0.27, 0.32, 0.41, 0.46, 0.59, 0.64, 0.73, 0.73},
{0.09, 0.09, 0.14, 0.14, 0.18, 0.23, 0.28, 0.32, 0.41, 0.46, 0.59, 0.64, 0.87, 0.91, 1.00, 1.00},
{0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
{-0.00, -0.00, -0.05, -0.05, -0.05, -0.05, -0.09, -0.09, -0.14, -0.14, -0.18, -0.23, -0.27, -0.32, -0.37, -0.37},
{-0.05, -0.05, -0.09, -0.09, -0.14, -0.14, -0.18, -0.23, -0.27, -0.32, -0.41, -0.46, -0.59, -0.64, -0.73, -0.73},
{-0.09, -0.09, -0.14, -0.14, -0.18, -0.23, -0.28, -0.32, -0.41, -0.46, -0.59, -0.64, -0.87, -0.91, -1.00, -1.00},
}
DTCoef は、DTパラメータ および BLOCKとFNUM上位1ビットによって加わる周波数差分[Hz]のテーブルです。
var FeedbackTable = [8]float64{0, 1.0 / 32.0, 1.0 / 16.0, 1.0 / 8.0, 1.0 / 4.0, 1.0 / 2.0, 1.0, 2.0}
FeedbackTable は、FBパラメータによってフィードバックされる信号の振幅にかかる係数のテーブルです。
var KSLTable = [4][8][32]float64{}
KSLTable は、KSLパラメータによる振幅の減衰量のテーブルです。 添字は順に KSL, BLOCK, FNUM上位5bit です。
var LFOFrequency = [4]Frac64{}
LFOFrequency は、LFOパラメータによって決まるビブラートやトレモロの周波数のテーブルです。 単位は、2の64乗を1周とする1サンプルあたりの増分です。
var ModulatorMatrix = [8][4]bool{ {true, false, false, false}, {false, false, false, false}, {false, false, false, false}, {true, true, true, false}, {true, true, true, false}, {true, false, true, false}, {false, true, true, false}, {false, true, false, false}, }
ModulatorMatrix は、各 ALG でモジュレータとして使用されるオペレータを表すマトリクスです。
var MultTable2 = [16]uint64{1, 1 * 2, 2 * 2, 3 * 2, 4 * 2, 5 * 2, 6 * 2, 7 * 2, 8 * 2, 9 * 2, 10 * 2, 10 * 2, 12 * 2, 12 * 2, 15 * 2, 15 * 2}
MultTable2 は、MULTパラメータによって周波数にかかる係数のテーブルです。2で割って使用します。
var PanTable [128][2]float64
PanTable は、MIDIメッセージのパンによって左右それぞれの振幅にかかる係数のテーブルです。
var Pow32Of2 = float64(1 << 32)
Pow32Of2 は、2の32乗です。
var Pow63Of2 = float64(1 << 63)
Pow63Of2 は、2の63乗です。
var Pow64Of2 = Pow63Of2 * 2.0
Pow64Of2 は、2の64乗です。
var TremoloTable [4][ModTableLen]float64
TremoloTable は、トレモロ(DAM)によって振幅にかかる係数のテーブルです。
var VibratoTableInt32Frac32 [4][ModTableLen]Int32Frac32
VibratoTableInt32Frac32 は、ビブラート(DVB)によって周波数にかかる係数のテーブルです。 整数部32bit・小数部32bitで表されます。
var VolumeTable = [...]float64{
1e30, 47.9, 42.6, 37.2, 33.1, 29.8, 27.0, 24.6,
22.4, 20.6, 18.9, 17.3, 15.9, 14.6, 13.4, 12.2,
11.1, 10.1, 9.2, 8.3, 7.4, 6.6, 5.8, 5.1,
4.4, 3.6, 3.0, 2.3, 1.7, 1.1, 0.6, 0.0,
}
VolumeTable は、MIDIメッセージのボリュームやエクスプレッションによって振幅にかかる係数のテーブルです。
var Waveforms [32][]float64
Waveforms は、波形テーブルです。
Functions ¶
This section is empty.
Types ¶
type Frac64 ¶
type Frac64 uint64
Frac64 は、0 以上 1 未満の固定小数点数を符号なし64ビット整数で表現する型です。
func FloatToFrac64 ¶
FloatToFrac64 は、float64 から Frac64 に値を変換します。
func (Frac64) MulInt32Frac32 ¶
func (v Frac64) MulInt32Frac32(rhs Int32Frac32) Frac64
MulInt32Frac32 は、Frac64 に Int32Frac32 型の値を掛けた値を返します。