MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ preset_to_vectors()

void MayaFlux::Nodes::Network::ResonatorNetwork::preset_to_vectors ( FormantPreset  preset,
size_t  n,
std::vector< double > &  out_freqs,
std::vector< double > &  out_qs 
)
staticprivate

Translate a FormantPreset into parallel frequency/Q vectors.

Parameters
presetRequested preset
nNumber of resonators to populate (may be less than preset's defined count)
out_freqsOutput frequency vector
out_qsOutput Q vector

Definition at line 73 of file ResonatorNetwork.cpp.

77{
78 const FormantEntry* table = nullptr;
79
80 switch (preset) {
82 table = k_vowel_a;
83 break;
85 table = k_vowel_e;
86 break;
88 table = k_vowel_i;
89 break;
91 table = k_vowel_o;
92 break;
94 table = k_vowel_u;
95 break;
96 default:
97 break;
98 }
99
100 out_freqs.resize(n, 440.0);
101 out_qs.resize(n, 10.0);
102
103 if (!table) {
104 return;
105 }
106
107 const size_t defined = std::min(n, k_preset_formant_count);
108 for (size_t i = 0; i < defined; ++i) {
109 out_freqs[i] = table[i].frequency;
110 out_qs[i] = table[i].q;
111 }
112}
@ VOWEL_O
Back vowel /o/ (F1≈500, F2≈900, F3≈2500, F4≈3500, F5≈4500 Hz)
@ VOWEL_I
Close front vowel /i/ (F1≈270, F2≈2300, F3≈3000, F4≈3500, F5≈4500 Hz)
@ VOWEL_A
Open vowel /a/ (F1≈800, F2≈1200, F3≈2500, F4≈3500, F5≈4500 Hz)
@ VOWEL_E
Front vowel /e/ (F1≈400, F2≈2000, F3≈2600, F4≈3500, F5≈4500 Hz)
@ VOWEL_U
Close back vowel /u/ (F1≈300, F2≈800, F3≈2300, F4≈3500, F5≈4500 Hz)

References VOWEL_A, VOWEL_E, VOWEL_I, VOWEL_O, and VOWEL_U.

Referenced by apply_preset(), and ResonatorNetwork().

+ Here is the caller graph for this function: