Вариант с вавкой сделал , сейчас хочу сделать синтезированные звуки, для различных событий, вавки требует внешней памяти, а то что осталось от программы входит только 0,12сек звука
#if SOUND_FM == 1 // Синтезированные звуки
// Длинны и частоты генерированных звуков задавать по таблице
// if (snd_length < 32) snd_length = 8000; // ~ 1sec
// llll ff vv параметры звука в таблице
// 800/8000 = 0.1sec
snd_length = (sound_table(num_sound) >> 4) * 800;
// 8000/3 = 2.6kHz или 8000/12 = 600Hz
snd_freq = ((sound_table(num_sound) >> 2) && 0x03)*3; // 3, 6, 9,12 самплов
// 8000/10 = 800нz или 8000/40 = 200Hz
snd_vibra = (sound_table(num_sound) && 0x03)*10; // 10,20,30,40 самплов
И соответствено сам код звукоизвлечения
#if SOUND_FM == 1 // Синтезированный звук
// Частота задаётся, через деление частоты дискретизации
snd_vibra_cnt ++;
snd_freq_cnt ++;
if (snd_freq_cnt > snd_freq) {
snd_freq_cnt = 0;
snd_freq_on = ~snd_freq_on;
}
if (snd_vibra_cnt > snd_vibra) {
snd_vibra_cnt = 0;
snd_vibra_on = ~snd_vibra_on;
}
if (1 == (snd_vibra_on && snd_freq_on)) {
OCR2 = 240;
} else {
OCR2 = 10;
}
if ( SOUND_RAW == snd_current ) {
// Проиграть WAV файл из памяти программ "hitraw.h"
bu = pgm_read_byte(&pSndhit[snd_tpp]);
}
#endif
может у кого есть вариант синтеза поинтерестнее ???