humax5600
||||||||||
Ende August soll's soweit sein
Und klappt das noch ?
Oder war 2018 gemeint ?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: This feature may not be available in some browsers.
Ende August soll's soweit sein
Johann Wolfgang von Goethe :Das Ende naht..
Die Entwicklung neigt sich dem Ende entgegen. Die ersten Geräte werden wir im Dezember ausliefern. ......................................................
Gruß Rolf
ja wie, ich dachte, das wird ein diy-ding?Die ersten Geräte werden wir im Dezember ausliefern. Da wir alles selber finanzieren, werden von uns erst einmal kleine Stückzahlen von 25 Stück vorproduziert.
//*************************************************************************
// OscRender: VOWEL
//*************************************************************************
void OscRender_Vowel(uint8_t osc_nr)
{
uint8_t block_size = 40;
uint8_t parameter;
uint8_t *buffer;
uint8_t ix = 0;
if (osc_nr == 0)
{
parameter = Osc.prm[0];
if (Voice.buffer_nr == 0)
{
buffer = Voice.Buffer2a;
}
else {buffer = Voice.Buffer1a;}
}
else
{
parameter = Osc.prm[1];
if (Voice.buffer_nr == 0)
{
buffer = Voice.Buffer2b;
}
else {buffer = Voice.Buffer1b;}
}
Osc.vw_update = (Osc.vw_update + 1) & 3;
if (!Osc.vw_update) {
uint8_t offset_1 = U8ShiftRight4(parameter);
offset_1 = U8U8Mul(offset_1, 7);
uint8_t offset_2 = offset_1 + 7;
uint8_t balance = parameter & 15;
// Interpolate formant frequencies.
for (uint8_t i = 0; i < 3; ++i) {
Osc.vw_formant_increment[i] = U8U4MixU12(
pgm_read_byte (&(wav_res_vowel_data[offset_1 + i])),
pgm_read_byte (&(wav_res_vowel_data[offset_2 + i])),balance);
Osc.vw_formant_increment[i] <<= 3;
}
// Interpolate formant amplitudes.
for (uint8_t i = 0; i < 4; ++i) {
uint8_t amplitude_a = pgm_read_byte (&(wav_res_vowel_data[offset_1 + 3 + i]));
uint8_t amplitude_b = pgm_read_byte (&(wav_res_vowel_data[offset_2 + 3 + i]));
Osc.vw_formant_amplitude[i] = U8U4MixU8(amplitude_a,amplitude_b, balance);
}
}
// sample loop --------------------------------------------------------
do
{
Osc.phase[osc_nr] += Osc.phase_increment[osc_nr];
uint16_t phase_integral = Osc.phase[osc_nr] >> 8;
uint16_t phase_increment_integral = Osc.phase_increment[osc_nr] >> 8;
int8_t result = 0;
for (uint8_t i = 0; i < 3; ++i) {
Osc.vw_formant_phase[i] += Osc.vw_formant_increment[i];
result += pgm_read_byte (&((i == 2 ? wav_res_formant_square : wav_res_formant_sine)
[(((Osc.vw_formant_phase[i] >> 8) & 0xf0) | Osc.vw_formant_amplitude[i])]));
}
result = S8U8MulShift8(result, ~ (phase_integral >> 8));
phase_integral += phase_increment_integral;
int16_t phase_noise = (int8_t)(Noise.data_rng_state << 8) * 1;// (int8_t)Osc.noise_modulation;
if (phase_integral + phase_noise < phase_increment_integral) {
Osc.vw_formant_phase[0] = 0;
Osc.vw_formant_phase[1] = 0;
Osc.vw_formant_phase[2] = 0;
}
uint8_t x = S16ClipS8(4 * result) + 128;
// write sample in sound-buffer
buffer[ix++] = x;
buffer[ix++] = x;
block_size--;
} while (--block_size);
}