Veryl registryAkiyukiOkayasu/gndless-oscillator-veryl · gndless_oscillatorSource ↗

Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

gndless_oscillator

Periodic waveform and noise oscillators for Veryl.

Version 0.4.0
Repository https://github.com/AkiyukiOkayasu/gndless-oscillator-veryl
License MIT OR Apache-2.0

Modules

MultiWaveCore マルチ波形生成コアモジュール
MultiWaveOscillator 波形選択式オシレーター
PinkNoise ピンクノイズジェネレーター (Voss-McCartney Algorithm + Xorshift32)
PwmSquareOscillator PWM変調可能な矩形波オシレーター
SawOscillator ノコギリ波オシレーター
SawWaveCore ノコギリ波生成コアモジュール
SineOscillator サイン波オシレーター (LUTのみ)
SineOscillatorLerp サイン波オシレーター (LUT + 線形補間)
SineWaveCore サイン波生成コアモジュール (LUTのみ)
SineWaveLerpCore サイン波生成コアモジュール (LUT + 線形補間)
SquareWaveCore 矩形波生成コアモジュール
TriangleOscillator 三角波オシレーター
TriangleWaveCore 三角波生成コアモジュール
WhiteNoise ホワイトノイズジェネレーター (Xorshift32 Algorithm)

Packages

WaveTypes 波形タイプを定義するパッケージ

Modules


MultiWaveCore マルチ波形生成コアモジュール
MultiWaveOscillator 波形選択式オシレーター
PinkNoise ピンクノイズジェネレーター (Voss-McCartney Algorithm + Xorshift32)
PwmSquareOscillator PWM変調可能な矩形波オシレーター
SawOscillator ノコギリ波オシレーター
SawWaveCore ノコギリ波生成コアモジュール
SineOscillator サイン波オシレーター (LUTのみ)
SineOscillatorLerp サイン波オシレーター (LUT + 線形補間)
SineWaveCore サイン波生成コアモジュール (LUTのみ)
SineWaveLerpCore サイン波生成コアモジュール (LUT + 線形補間)
SquareWaveCore 矩形波生成コアモジュール
TriangleOscillator 三角波オシレーター
TriangleWaveCore 三角波生成コアモジュール
WhiteNoise ホワイトノイズジェネレーター (Xorshift32 Algorithm)

MultiWaveCore

マルチ波形生成コアモジュール 位相入力から4種類の波形(Sine, Triangle, Saw, Pwm)を生成し、選択出力 各波形は自然なレイテンシーのまま出力される: Sine (線形補間): 3クロック、Triangle/Saw/Pwm: 0クロック (組み合わせ) 波形切替は組み合わせmuxで即時反映される。 Sineは他波形より3クロック遅れて出力される (定数遅延)。 この差は楽器用途では音色に影響しないため、遅延整列は行わない。 可聴性の分析はREADME「レイテンシー契約」を参照。

Ports


clk input clock クロック
phase input gndless_nco Phase phase_t 位相入力 (0 ~ 2^32-1)
wave_type input WaveType 波形タイプ選択
duty_cycle input gndless_nco Phase phase_t PWMデューティ比 (Pwm以外では無視)
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

MultiWaveOscillator

波形選択式オシレーター 4種類の波形(Sine, Triangle, Saw, Pwm)を切り替え可能 波形切替は組み合わせmuxで即時反映される (Sineのみ3クロックのレイテンシー)

Ports


clk input clock クロック
phase_rst input bbool 位相ゼロリセット (同期)
phase_step input gndless_nco Phase step_t 1クロックあたりの位相ステップ量
wave_type input WaveType 波形タイプ選択
duty_cycle input gndless_nco Phase phase_t PWMデューティ比 (Pwm以外では無視)
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

PinkNoise

ピンクノイズジェネレーター (Voss-McCartney Algorithm + Xorshift32)

1/f特性を持つピンクノイズを生成する。 単一のXorshift32 RNGがフリーランし、サンプルカウンタの各ビット立ち上がりでラッチされることで1/fスペクトルを形成する。

24段構成: 行kは2^kサンプルごとに更新される 最低更新レート = sample_rate / 2^24 例: サンプルレート250kHz (50MHz/200分周) で最低更新レート約0.015Hz = サブオーディオ帯域までカバー

出力スケーリング: 各行をQ1.31として8bit算術右シフトした値 (±1.0) を32bit幅で24行加算する。 ÷8 (>>>3) で27bitへ縮小する (Q4.23の±8.0内に収まり、ピーク±3.0)。 RMS ≈ √(24/3)/8 ≈ 0.35 (-9 dBFS、WhiteNoise比 -4.2dB)

レイテンシー: 0クロック (行更新と同時に出力が更新される)

Parameters


DIV u16 クロック分周比

Ports


clk input clock クロック
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

PwmSquareOscillator

PWM変調可能な矩形波オシレーター レイテンシー: 0クロック (wave coreは組み合わせ)

Ports


clk input clock クロック
phase_rst input bbool 位相ゼロリセット (同期)
phase_step input gndless_nco Phase step_t 1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
duty_cycle input gndless_nco Phase phase_t デューティ比 位相のどこまで High にするか (0 ~ 2^32-1)
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 波形出力 (Q4.23形式)

SawOscillator

ノコギリ波オシレーター レイテンシー: 0クロック (wave coreは組み合わせ)

Ports


clk input clock クロック
phase_rst input bbool 位相ゼロリセット (同期)
phase_step input gndless_nco Phase step_t 1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

SawWaveCore

ノコギリ波生成コアモジュール 位相入力から波形を生成する純粋な変換モジュール Q4.23の値をbit sliceで直接生成する (中間のQ1.31変換を介さない) レイテンシー: 0クロック (組み合わせ)

Ports


phase input gndless_nco Phase phase_t 位相入力
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

SineOscillator

サイン波オシレーター (LUTのみ) テーブル引きのサイン波 第一象限(0~90度)の波形データ10bit分をROMに持っているので、実質的な分解能は12bit相当 レイテンシー: 1クロック (BRAM読み出し分)

Ports


clk input clock クロック
phase_rst input bbool 位相ゼロリセット (同期)
phase_step input gndless_nco Phase step_t 1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

SineOscillatorLerp

サイン波オシレーター (LUT + 線形補間) 実質12bit相当のテーブル引きに線形補間を追加することで、高精細なサイン波を生成 レイテンシー: 3クロック (ROM読み出し | diff+係数 | 乗算。加算・符号は乗算後の組み合わせ)

Ports


clk input clock クロック
phase_rst input bbool 位相ゼロリセット (同期)
phase_step input gndless_nco Phase step_t 1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

SineWaveCore

サイン波生成コアモジュール (LUTのみ) 位相入力から波形を生成する純粋な変換モジュール 第一象限(0~90度)の波形データ10bit分をROMに持っているので、実質的な分解能は12bit相当 レイテンシー: 1クロック (BRAM読み出し分)

Ports


clk input clock クロック
phase input gndless_nco Phase phase_t 位相入力 (0 ~ 2^32-1)
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

SineWaveLerpCore

サイン波生成コアモジュール (LUT + 線形補間) 位相入力から波形を生成する純粋な変換モジュール 実質12bit相当のテーブル引きに線形補間を追加することで、高精細なサイン波を生成 補間は27bit × 18bit (Q1.17係数) の乗算を使う レイテンシー: 3クロック (ROM読み出し | diff+係数 | 乗算。加算・符号は乗算後の組み合わせ)

Ports


clk input clock クロック
phase input gndless_nco Phase phase_t 位相入力 (0 ~ 2^32-1)
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

SquareWaveCore

矩形波生成コアモジュール 位相入力から波形を生成する純粋な変換モジュール レイテンシー: 0クロック (組み合わせ)

Ports


phase input gndless_nco Phase phase_t 位相入力 (0 ~ 2^32-1)
duty_cycle input gndless_nco Phase phase_t デューティ比 位相のどこまで High にするか (0 ~ 2^32-1)
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

TriangleOscillator

三角波オシレーター レイテンシー: 0クロック (wave coreは組み合わせ)

Ports


clk input clock クロック
phase_rst input bbool 位相ゼロリセット (同期)
phase_step input gndless_nco Phase step_t 1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

TriangleWaveCore

三角波生成コアモジュール 位相入力から波形を生成する純粋な変換モジュール Q4.23の値をbit sliceで直接生成する (中間のQ1.31変換を介さない) レイテンシー: 0クロック (組み合わせ)

Ports


phase input gndless_nco Phase phase_t 位相入力 (0 ~ 2^32-1)
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

WhiteNoise

ホワイトノイズジェネレーター (Xorshift32 Algorithm)

オーディオ用の高品質な疑似乱数ノイズを生成する。 リセット信号は不要で、起動後に非ゼロのシードで初期化される。

出力スケーリング: rng_state をQ1.31として解釈した値の8bit算術右シフトを直接Q4.23へ変換 RMS ≈ 1/√3 ≈ 0.577 (-4.8dBFS)

レイテンシー: 0クロック (rng_stateの更新と同時に出力が更新される)

Parameters


DIV u16 クロック分周比

Ports


clk input clock クロック
audio modport gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q4_23 output_port 出力波形 (Q4.23形式)

Module Prototypes


Interfaces


Packages


WaveTypes 波形タイプを定義するパッケージ

WaveTypes

波形タイプを定義するパッケージ