MayaFlux 1.0.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 74 of file ResonatorNetwork.cpp.

78{
79 const FormantEntry* table = nullptr;
80
81 switch (preset) {
83 table = k_vowel_a;
84 break;
86 table = k_vowel_e;
87 break;
89 table = k_vowel_i;
90 break;
92 table = k_vowel_o;
93 break;
95 table = k_vowel_u;
96 break;
97 default:
98 break;
99 }
100
101 out_freqs.resize(n, 440.0);
102 out_qs.resize(n, 10.0);
103
104 if (!table) {
105 return;
106 }
107
108 const size_t defined = std::min(n, k_preset_formant_count);
109 for (size_t i = 0; i < defined; ++i) {
110 out_freqs[i] = table[i].frequency;
111 out_qs[i] = table[i].q;
112 }
113}
@ 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: