Lines 344-350
Link Here
|
344 |
#define SEND_LASTNOTEINFO(lni, ch) if (LASTNOTEINFO_HAS_DATA((lni)[ch])) SendLastNoteInfo(lni, ch); |
344 |
#define SEND_LASTNOTEINFO(lni, ch) if (LASTNOTEINFO_HAS_DATA((lni)[ch])) SendLastNoteInfo(lni, ch); |
345 |
#define SEND_AND_CLEAR_LASTNOTEINFO(lni, ch) if (LASTNOTEINFO_HAS_DATA((lni)[ch])) { SendLastNoteInfo(lni, ch); (lni)[ch].on = NO_LAST_NOTE_INFO; } |
345 |
#define SEND_AND_CLEAR_LASTNOTEINFO(lni, ch) if (LASTNOTEINFO_HAS_DATA((lni)[ch])) { SendLastNoteInfo(lni, ch); (lni)[ch].on = NO_LAST_NOTE_INFO; } |
346 |
|
346 |
|
347 |
inline void StoreLastNoteInfo(LastNoteInfo *info, int channel, int time, int duration, int note, int velocity) |
347 |
static inline void StoreLastNoteInfo(LastNoteInfo *info, int channel, int time, int duration, int note, int velocity) |
348 |
{ |
348 |
{ |
349 |
info[channel].on = time; |
349 |
info[channel].on = time; |
350 |
info[channel].off = time + duration; |
350 |
info[channel].off = time + duration; |
Lines 352-358
Link Here
|
352 |
info[channel].velocity = velocity; |
352 |
info[channel].velocity = velocity; |
353 |
} |
353 |
} |
354 |
|
354 |
|
355 |
inline void SendLastNoteInfo(const LastNoteInfo *info, int channel) |
355 |
static inline void SendLastNoteInfo(const LastNoteInfo *info, int channel) |
356 |
{ |
356 |
{ |
357 |
NOTE_BUF_EV_DEBUGSTR(channel, info[channel].on, note_name[info[channel].note % 12], info[channel].note / 12, info[channel].velocity, info[channel].off); |
357 |
NOTE_BUF_EV_DEBUGSTR(channel, info[channel].on, note_name[info[channel].note % 12], info[channel].note / 12, info[channel].velocity, info[channel].off); |
358 |
MIDIEVENT(info[channel].on, ME_NOTEON, channel, info[channel].note, info[channel].velocity); |
358 |
MIDIEVENT(info[channel].on, ME_NOTEON, channel, info[channel].note, info[channel].velocity); |