Aloha,
Czy jest ktoś na tym forum kto programował replayera do plików midi i wie jak obsłużyć wysyłanie eventów na podstawie czasów delta? Jestem w stanie przełożyć delty na czas rzeczywisty, ale za bardzo nie mam pomysłu jak przełożyć to "na MFP".
Generalnie potrzebne mi jest obliczenie częstotliwości(w hercach) do zapodania mfp (ustawienia to już mam), żeby przerwanie wywoływało się co jedno tyknięcie delty.
Czas 1 delty (w przeliczeniu na czas rzeczywisty) jest obliczane w jakiś magiczny sposób za pomocą danych wyjętych z pliku midi (mam czas trwania ćwierć nuty w mikrosekundach oraz ilość tyknięć na ćwierć nutę (tzw. PPQN- pulses per quaternote)). Mam jeszcze sygnaturę czasową (np. 4/4, 4/8 etc), ale ona podobno jest raczej do niczego nie potrzebna(oprócz liczenia sobie barów).
Liczę sobie to obecnie tak:
float freq=500 000(czas trwania ćwierć nuty)/1000000.0f = 0,5s;
freq=freq/pCurrentSequence->timeDivision;
//calculate freq in [hz]
freq=1.0f/freq;
Problem w tym, że to tempo jest zdecydowanie za wolne (ok. ~4 razy). Niestety jestem dyslicznikiem z dyskalkulią czy ktoś może mnie oświecić jak uzyskać ludzkie tempo?
pzdr,
saulot
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl