Код: Выделить всё
{
[тиков таймера подождать до этого события]
[канал]
[нота или 0 === отключить]
}
typedef struct
{
//highest bit is highest for channel index
uint8_t m_noteNumber;
///15-3 bits - Delta value, 2,1,0 bits - channel index
uint16_t m_delta;
} TPlayerStateChange;
const TPlayerStateChange s_melody_events[123] = {
{ 42, 9 },//1-1
{ 30, 10 },//1-2
{ 49, 128 },//16-0
{ 0, 128 },//16-0
{ 56, 8 }, //1-0
{ 44, 9 },//1-1
{ 68, 266 },//33-2
{ 57, 8 },//1-0
{ 45, 9 },//1-1
{ 69, 266 },//33-2
{ 54, 8 }, //1-0
...
вот в комментариях я выписал значения delta и Nch:
как проигрывается данный файл?
1) ждем 1 тик таймера с fдискретизации
2) выдаем в канал PWM ноту №42
3) ждем еще 1 тик? или сразу добавляем на выход ноту №30?
4)ждем 16 тиков
5)....