Changeset 1851:176edc9e3957 in roaraudio
- Timestamp:
- 05/23/09 10:00:06 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/midi.c
r1850 r1851 101 101 // bridges: 102 102 int midi_check_bridge (int id) { 103 104 ROAR_WARN("midi_check_bridge(id=%i) = ?", id); 105 106 if ( id == g_midi_clock.stream ) { 107 midi_clock_tick(); 108 109 return 0; 110 } 111 103 112 return -1; 104 113 } … … 140 149 streams_set_flag(g_midi_clock.stream, ROAR_FLAG_PRIMARY); 141 150 streams_set_flag(g_midi_clock.stream, ROAR_FLAG_SYNC); 151 152 midi_clock_set_bph(3600); // one tick per sec 153 154 return 0; 155 } 156 157 int midi_clock_set_bph (uint_least32_t bph) { 158 uint_least32_t sph = g_sa->rate/2 * 75 * g_sa->channels; // samples per houre 159 160 g_midi_clock.bph = bph; 161 162 g_midi_clock.spt = sph/bph; 163 164 g_midi_clock.nt = ROAR_MATH_OVERFLOW_ADD(g_pos, g_midi_clock.spt); 165 166 return 0; 167 } 168 169 int midi_clock_tick (void) { 170 unsigned int diff; 171 172 while ( g_pos >= g_midi_clock.nt ) { 173 diff = g_pos - g_midi_clock.nt; 174 ROAR_WARN("midi_clock_tick(void): g_pos is %u samples (%5.2f%%) ahead of nt.", diff, (float)diff/g_midi_clock.spt); 175 176 g_midi_clock.nt = ROAR_MATH_OVERFLOW_ADD(g_midi_clock.nt, g_midi_clock.spt); 177 178 if ( streams_get_flag(g_midi_clock.stream, ROAR_FLAG_SYNC) ) { 179 ROAR_WARN("midi_clock_tick(void): TICK! (nt=%lu)", g_midi_clock.nt); 180 } else { 181 ROAR_WARN("midi_clock_tick(void): silent tick. (nt=%lu)", g_midi_clock.nt); 182 } 183 } 142 184 143 185 return 0;
Note: See TracChangeset
for help on using the changeset viewer.