summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2017-02-17 23:55:28 +1100
committerDamien Zammit <damien@zamaudio.com>2017-02-17 23:55:28 +1100
commit91af4a8f922c30dcc9cf0cbd7237592b6e17ec8d (patch)
tree4d42f0cf7d8dbdaeddb61ebb8bd4e8d498a86364
parent35069083398b90e68856348cfd401e8943da9394 (diff)
Use magic start offsets for MIDI
Calculate region length in samples based on 120BPM. Signed-off-by: Damien Zammit <damien@zamaudio.com>
-rw-r--r--ptfformat.cc14
1 files changed, 8 insertions, 6 deletions
diff --git a/ptfformat.cc b/ptfformat.cc
index 0b9e873..b18cbdc 100644
--- a/ptfformat.cc
+++ b/ptfformat.cc
@@ -700,7 +700,7 @@ PTFFormat::parseaudio5(void) {
void
PTFFormat::parsemidi(void) {
- uint64_t i, k, n_midi_events, sample_time_zero;
+ uint64_t i, k, n_midi_events, zero_ticks;
uint64_t midi_pos, midi_len, max_pos;
uint8_t midi_velocity, midi_note;
uint16_t rsize;
@@ -738,22 +738,24 @@ PTFFormat::parsemidi(void) {
ptfunxored[k+2] << 16 | ptfunxored[k+3] << 24;
k += 4;
- sample_time_zero = 0xe8d4a51000;
+ zero_ticks = (uint64_t)ptfunxored[k] |
+ (uint64_t)ptfunxored[k+1] << 8 |
+ (uint64_t)ptfunxored[k+2] << 16 |
+ (uint64_t)ptfunxored[k+3] << 24 |
+ (uint64_t)ptfunxored[k+4] << 32;
for (i = 0; i < n_midi_events; i++, k += 35) {
midi_pos = (uint64_t)ptfunxored[k] |
(uint64_t)ptfunxored[k+1] << 8 |
(uint64_t)ptfunxored[k+2] << 16 |
(uint64_t)ptfunxored[k+3] << 24 |
(uint64_t)ptfunxored[k+4] << 32;
- midi_pos -= sample_time_zero;
- midi_pos /= 40;
+ midi_pos -= zero_ticks;
midi_note = ptfunxored[k+8];
midi_len = (uint64_t)ptfunxored[k+9] |
(uint64_t)ptfunxored[k+10] << 8 |
(uint64_t)ptfunxored[k+11] << 16 |
(uint64_t)ptfunxored[k+12] << 24 |
(uint64_t)ptfunxored[k+13] << 32;
- midi_len /= 40;
midi_velocity = ptfunxored[k+17];
if (midi_pos + midi_len > max_pos) {
@@ -777,7 +779,7 @@ PTFFormat::parsemidi(void) {
rsize,
(int64_t)(0),
(int64_t)(0),
- (int64_t)(max_pos*ratefactor),
+ (int64_t)(max_pos*sessionrate*60/(960000*120)),
w,
midi,
};