morgentaudv / Noizegarden

Tiny node based procedural sound creation and analysis program using Rust.
0 stars 0 forks source link

FP-1 新規DFT分析機の実装 #1

Closed morgentaudv closed 2 months ago

morgentaudv commented 2 months ago

概要・経緯

soundprog::wave::analyze::analyzer::FrequencyAnalyzer

が汎用的ではないので、もっと汎用的なサウンドAnalayzerを作ります。 作ったAnalyzerはAnalyzerV2として命名します。

詳細

タスク

現在はFFTは後にする。

morgentaudv commented 2 months ago
824fd670bd954e6ef523144094fdabe8d0392ac6

で FrequencyAnalyzerV2と WaveContainerSettingを追加する

f227c54dfe0ad9714f706563a61cd4872f1f0be8

DFTロジックの実装完了。 ただしFrequencyTransformerが振幅に変換するときのサンプル長さが指定できないので、 これを拡張して指定ができるようにする必要があり

morgentaudv commented 2 months ago
f0a1c254c07531b074dc30a3a7b384e44fa72fd7
    let samples_count = wave_container.uniformed_sample_buffer().len();
    let frequencies = {
        let analyzer = FrequencyAnalyzerV2 {
            analyze_method: EAnalyzeMethod::DFT,
            frequency_start: 0.0,
            frequency_width: 44100.0,
            frequency_bin_count: 16384,
            window_function: EWindowFunction::None,
        };

        let setting = WaveContainerSetting {
            container: &wave_container,
            start_sample_index: 0,
            samples_count,
        };
        analyzer.analyze_container(&setting).unwrap()
    };

image

DFTのテスト完了。

後やること