|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Stateful ISTFT processor for chunked frame-by-frame synthesis. More...
#include <fft.H>
Private Member Functions | |
| void | require_configured (const char *ctx) const |
| void | initialize_state () |
| void | ensure_pending_size (const size_t size) |
| void | accumulate_frame (const Array< Real > &frame) |
| Array< Real > | normalize_prefix (const size_t count) |
| Array< Real > | emit_samples (const Array< Real > &normalized, const bool final_flush) |
| Array< Real > | drain_ready_samples (const bool final_flush) |
| Array< Real > | process_frame_impl (const Array< Complex > &spectrum, ThreadPool *pool, const size_t chunk_size) |
Private Attributes | |
| Array< Real > | analysis_window_ |
| Array< Real > | synthesis_window_ |
| ISTFTOptions | options_ |
| size_t | fft_size_ = 0 |
| size_t | center_pad_ = 0 |
| Plan | plan_ |
| Array< Real > | pending_output_ |
| Array< Real > | pending_norm_ |
| size_t | frames_processed_ = 0 |
| size_t | emitted_raw_samples_ = 0 |
| size_t | left_trim_remaining_ = 0 |
| size_t | emitted_signal_samples_ = 0 |
| bool | configured_ = false |
| bool | has_seen_frame_ = false |
| bool | finalized_ = false |
Stateful ISTFT processor for chunked frame-by-frame synthesis.
|
default |
Default constructor for an unconfigured inverse processor.
|
inlineexplicit |
Construct an inverse STFT processor with custom windows.
| fft_size | Fixed FFT transform size. |
| analysis_window | Analysis window used during STFT. |
| synthesis_window | Synthesis window for reconstruction. |
| options | Overlap-add parameters. |
Definition at line 10695 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::analysis_window_, Aleph::FFT< Real >::ISTFTProcessor::fft_size_, Aleph::FFT< Real >::ISTFTProcessor::initialize_state(), Aleph::FFT< Real >::ISTFTProcessor::options_, Aleph::FFT< Real >::ISTFTProcessor::synthesis_window_, and Aleph::FFT< Real >::validate_istft_configuration().
|
inlineexplicit |
|
inlineexplicit |
|
inlineexplicit |
Construct an inverse STFT processor from any real containers.
| AnalysisContainer | Type for analysis window. |
| SynthesisContainer | Type for synthesis window. |
| fft_size | Fixed FFT transform size. |
| analysis_window | Analysis window. |
| synthesis_window | Synthesis window. |
| options | Overlap-add parameters. |
|
inlineprivate |
Definition at line 10553 of file fft.H.
References ah_invalid_argument_if, ah_runtime_error_if, Aleph::FFT< Real >::ISTFTProcessor::analysis_window_, Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::ISTFTProcessor::emitted_raw_samples_, Aleph::FFT< Real >::ISTFTProcessor::ensure_pending_size(), Aleph::FFT< Real >::ISTFTProcessor::frames_processed_, Aleph::FFT< Real >::ISTFTOptions::hop_size, offset, Aleph::FFT< Real >::ISTFTProcessor::options_, Aleph::FFT< Real >::ISTFTProcessor::pending_norm_, Aleph::FFT< Real >::ISTFTProcessor::pending_output_, Aleph::Array< T >::size(), and Aleph::FFT< Real >::ISTFTProcessor::synthesis_window_.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl().
|
inlinenoexcept |
Definition at line 10784 of file fft.H.
References Aleph::FFT< Real >::ISTFTOptions::centered, and Aleph::FFT< Real >::ISTFTProcessor::options_.
|
inlinenoexcept |
Definition at line 10769 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::configured_.
|
inlineprivate |
Definition at line 10645 of file fft.H.
References ah_runtime_error_if, Aleph::and, Aleph::FFT< Real >::ISTFTProcessor::center_pad_, Aleph::FFT< Real >::ISTFTOptions::centered, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::ISTFTProcessor::emit_samples(), Aleph::FFT< Real >::ISTFTProcessor::emitted_raw_samples_, Aleph::FFT< Real >::ISTFTProcessor::frames_processed_, Aleph::FFT< Real >::ISTFTOptions::hop_size, Aleph::FFT< Real >::ISTFTProcessor::normalize_prefix(), Aleph::FFT< Real >::ISTFTProcessor::options_, Aleph::FFT< Real >::ISTFTProcessor::pending_output_, Aleph::FFT< Real >::ISTFTOptions::signal_length, and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::flush(), and Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl().
|
inlineprivate |
Definition at line 10610 of file fft.H.
References Aleph::and, Aleph::FFT< Real >::ISTFTProcessor::center_pad_, Aleph::FFT< Real >::ISTFTOptions::centered, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::ISTFTProcessor::emitted_signal_samples_, Aleph::FFT< Real >::ISTFTProcessor::left_trim_remaining_, Aleph::FFT< Real >::ISTFTProcessor::options_, Aleph::Array< T >::reserve(), and Aleph::FFT< Real >::ISTFTOptions::signal_length.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::drain_ready_samples().
|
inlineprivate |
Definition at line 10538 of file fft.H.
References Aleph::Array< T >::append(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::ISTFTProcessor::pending_norm_, Aleph::FFT< Real >::ISTFTProcessor::pending_output_, Aleph::Array< T >::reserve(), Aleph::Array< T >::size(), and Aleph::size().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::accumulate_frame().
|
inlinenoexcept |
Definition at line 10774 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::fft_size_.
|
inlinenoexcept |
Definition at line 10789 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::finalized_.
|
inline |
Definition at line 10836 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::ISTFTProcessor::drain_ready_samples(), Aleph::Array< T >::empty(), Aleph::FFT< Real >::ISTFTProcessor::finalized_, Aleph::FFT< Real >::ISTFTProcessor::has_seen_frame_, Aleph::FFT< Real >::ISTFTProcessor::pending_norm_, Aleph::FFT< Real >::ISTFTProcessor::pending_output_, and Aleph::FFT< Real >::ISTFTProcessor::require_configured().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::pflush().
|
inlinenoexcept |
Definition at line 10764 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::analysis_window_, and Aleph::Array< T >::size().
|
inlinenoexcept |
Definition at line 10779 of file fft.H.
References Aleph::FFT< Real >::ISTFTOptions::hop_size, and Aleph::FFT< Real >::ISTFTProcessor::options_.
|
inlineprivate |
Definition at line 10525 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::center_pad_, Aleph::FFT< Real >::ISTFTProcessor::emitted_raw_samples_, Aleph::FFT< Real >::ISTFTProcessor::emitted_signal_samples_, Aleph::Array< T >::empty(), Aleph::FFT< Real >::ISTFTProcessor::finalized_, Aleph::FFT< Real >::ISTFTProcessor::frames_processed_, Aleph::FFT< Real >::ISTFTProcessor::has_seen_frame_, Aleph::FFT< Real >::ISTFTProcessor::left_trim_remaining_, Aleph::FFT< Real >::ISTFTProcessor::pending_norm_, and Aleph::FFT< Real >::ISTFTProcessor::pending_output_.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::ISTFTProcessor(), and Aleph::FFT< Real >::ISTFTProcessor::reset().
|
inlineprivate |
Definition at line 10578 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::count(), Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::drop_prefix(), Aleph::FFT< Real >::ISTFTProcessor::emitted_raw_samples_, Aleph::FFT< Real >::max_abs_value(), Aleph::FFT< Real >::ISTFTProcessor::pending_norm_, Aleph::FFT< Real >::ISTFTProcessor::pending_output_, and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::drain_ready_samples().
|
inline |
Definition at line 10857 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::flush(), and Aleph::FFT< Real >::ISTFTProcessor::require_configured().
|
inline |
Definition at line 10824 of file fft.H.
References Aleph::FFT< Real >::append_all(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ISTFTProcessor::pprocess_frame().
|
inline |
Definition at line 10807 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl(), and Aleph::FFT< Real >::spectrum().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::pprocess_block(), and Aleph::FFT< Real >::ISTFTProcessor::pprocess_frame().
|
inline |
Definition at line 10874 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::FFT< Real >::ISTFTProcessor::pprocess_frame(), and Aleph::FFT< Real >::spectrum().
|
inline |
Definition at line 10815 of file fft.H.
References Aleph::FFT< Real >::append_all(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ISTFTProcessor::process_frame().
|
inline |
Definition at line 10801 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl(), and Aleph::FFT< Real >::spectrum().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::process_block(), and Aleph::FFT< Real >::ISTFTProcessor::process_frame().
|
inline |
Definition at line 10866 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::FFT< Real >::ISTFTProcessor::process_frame(), and Aleph::FFT< Real >::spectrum().
|
inlineprivate |
Definition at line 10665 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::accumulate_frame(), ah_invalid_argument_if, ah_runtime_error_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::ISTFTProcessor::drain_ready_samples(), Aleph::FFT< Real >::ISTFTProcessor::fft_size_, Aleph::FFT< Real >::ISTFTProcessor::finalized_, Aleph::FFT< Real >::ISTFTProcessor::has_seen_frame_, Aleph::FFT< Real >::Plan::inverse_transform_real(), Aleph::FFT< Real >::Plan::pinverse_transform_real(), Aleph::FFT< Real >::ISTFTProcessor::plan_, Aleph::FFT< Real >::ISTFTProcessor::require_configured(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::spectrum().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::pprocess_frame(), and Aleph::FFT< Real >::ISTFTProcessor::process_frame().
|
inlineprivate |
Definition at line 10518 of file fft.H.
References ah_runtime_error_if, Aleph::FFT< Real >::ISTFTProcessor::configured_, and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::flush(), Aleph::FFT< Real >::ISTFTProcessor::pflush(), Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl(), and Aleph::FFT< Real >::ISTFTProcessor::reset().
|
inline |
Definition at line 10794 of file fft.H.
References Aleph::FFT< Real >::ISTFTProcessor::initialize_state(), and Aleph::FFT< Real >::ISTFTProcessor::require_configured().
|
private |
Definition at line 10501 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::ISTFTProcessor(), Aleph::FFT< Real >::ISTFTProcessor::accumulate_frame(), and Aleph::FFT< Real >::ISTFTProcessor::frame_size().
|
private |
Definition at line 10505 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::drain_ready_samples(), Aleph::FFT< Real >::ISTFTProcessor::emit_samples(), and Aleph::FFT< Real >::ISTFTProcessor::initialize_state().
|
private |
Definition at line 10513 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::configured(), and Aleph::FFT< Real >::ISTFTProcessor::require_configured().
|
private |
|
private |
Definition at line 10512 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::emit_samples(), and Aleph::FFT< Real >::ISTFTProcessor::initialize_state().
|
private |
Definition at line 10504 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::ISTFTProcessor(), Aleph::FFT< Real >::ISTFTProcessor::fft_size(), and Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl().
|
private |
Definition at line 10515 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::finalized(), Aleph::FFT< Real >::ISTFTProcessor::flush(), Aleph::FFT< Real >::ISTFTProcessor::initialize_state(), and Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl().
|
private |
Definition at line 10509 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::accumulate_frame(), Aleph::FFT< Real >::ISTFTProcessor::drain_ready_samples(), and Aleph::FFT< Real >::ISTFTProcessor::initialize_state().
|
private |
Definition at line 10514 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::flush(), Aleph::FFT< Real >::ISTFTProcessor::initialize_state(), and Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl().
|
private |
Definition at line 10511 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::emit_samples(), and Aleph::FFT< Real >::ISTFTProcessor::initialize_state().
|
private |
Definition at line 10503 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::ISTFTProcessor(), Aleph::FFT< Real >::ISTFTProcessor::accumulate_frame(), Aleph::FFT< Real >::ISTFTProcessor::centered(), Aleph::FFT< Real >::ISTFTProcessor::drain_ready_samples(), Aleph::FFT< Real >::ISTFTProcessor::emit_samples(), and Aleph::FFT< Real >::ISTFTProcessor::hop_size().
|
private |
Definition at line 10508 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::accumulate_frame(), Aleph::FFT< Real >::ISTFTProcessor::ensure_pending_size(), Aleph::FFT< Real >::ISTFTProcessor::flush(), Aleph::FFT< Real >::ISTFTProcessor::initialize_state(), and Aleph::FFT< Real >::ISTFTProcessor::normalize_prefix().
|
private |
Definition at line 10507 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::accumulate_frame(), Aleph::FFT< Real >::ISTFTProcessor::drain_ready_samples(), Aleph::FFT< Real >::ISTFTProcessor::ensure_pending_size(), Aleph::FFT< Real >::ISTFTProcessor::flush(), Aleph::FFT< Real >::ISTFTProcessor::initialize_state(), and Aleph::FFT< Real >::ISTFTProcessor::normalize_prefix().
|
private |
Definition at line 10506 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl().
|
private |
Definition at line 10502 of file fft.H.
Referenced by Aleph::FFT< Real >::ISTFTProcessor::ISTFTProcessor(), and Aleph::FFT< Real >::ISTFTProcessor::accumulate_frame().