Древняя тема, но все-же отмечусь. Если нужен простой "пик", но меандр не устраивает своей незатейливостью и назойливостью, его можно разнообразить добавив к нему второй тон. Если оба тона будут в косонансе, то звук получится более благозвучный и "глубокий". Можно мешать не два тона, а больше. И в разных пропорциях. Простор для фантазии.
Сигналы надо именно складывать, а не умножать. Если звук надо выводить через один логический выход, наверно можно попробовать сделать "ИЛИ", хотя я не пробовал. Если сложить два меандра, то результат будет трехуровневый. Можно 0 и 2 представить, соответсвенно, 0 и 1 на логическом выходе, а 1 представить ШИМ-ом с меандром на высокой частоте, которая после зарежется простым RC-фильтром или самим динамиком. В общем извращаться можно массой способов.
За синусоидальностью тонов гнаться, ИМХО, смысла нет. Синус сам по себе достаточно тоскливый звук.
Традиционно косонансами считаются унисон, октава, квинта, кварта, терции и т. д. Ниже пример, как эти частоты посчитать.
// Частоты тонального сигнала #define note_re 293.66 #define note_mi 329.63 #define note_fa 349.23 #define note_sol 392.00 #define note_la 440.00 #define main_tone note_fa // Частота основного тона
#define unison *1/1 // 1:1 - унисон #define octave *1/2 // 1:2 - октава #define quint *2/3 // 2:3 - квинта #define quart *3/4 // 3:4 - кварта #define tierce *4/5 // 4:5 - терция
// Частоты первого и второго тона #define F_tone1 (main_tone unison ) #define F_tone2 (main_tone tierce )
Дальше генерация этих двух тонов, кому как удобно.
|