static int _testAppendMidiEventToSequence(void) {
  MidiSequence m = newMidiSequence();
  MidiEvent e = newMidiEvent();
  appendMidiEventToSequence(m, e);
  _assertIntEquals(numItemsInList(m->midiEvents), 1);
  return 0;
}
static int _testFillEventsFromEmptyRange(void) {
  MidiSequence m = newMidiSequence();
  MidiEvent e = newMidiEvent();
  LinkedList l = newLinkedList();
  e->status = 0xf7;
  e->timestamp = 100;
  appendMidiEventToSequence(m, e);
  _assert(fillMidiEventsFromRange(m, 0, 0, l));
  _assertIntEquals(numItemsInList(l), 0);
  return 0;
}
static int _testFillMidiEventsFromRangeStart(void) {
  MidiSequence m = newMidiSequence();
  MidiEvent e = newMidiEvent();
  LinkedList l = newLinkedList();
  e->status = 0xf7;
  e->timestamp = 100;
  appendMidiEventToSequence(m, e);
  _assertFalse(fillMidiEventsFromRange(m, 0, 256, l));
  _assertIntEquals(numItemsInList(l), 1);
  _assertIntEquals(((MidiEvent)l->item)->status, 0xf7)
  return 0;
}
static int _testFillEventsFromMiddleOfRange(void) {
  MidiSequence m = newMidiSequence();
  MidiEvent e = newMidiEvent();
  MidiEvent e2 = newMidiEvent();
  LinkedList l = newLinkedList();
  e->status = 0xf7;
  e->timestamp = 100;
  e2->status = 0xf7;
  e2->timestamp = 300;
  appendMidiEventToSequence(m, e);
  appendMidiEventToSequence(m, e2);
  _assert(fillMidiEventsFromRange(m, 100, 256, l));
  _assertIntEquals(numItemsInList(l), 2);
  return 0;
}
示例#5
0
static ReturnCodes setupMidiSource(MidiSource midiSource, MidiSequence* outSequence) {
  if(midiSource != NULL) {
    if(!midiSource->openMidiSource(midiSource)) {
      logError("MIDI source '%s' could not be opened", midiSource->sourceName->data);
      return RETURN_CODE_IO_ERROR;
    }

    // Read in all events from the MIDI source
    // TODO: This will not work if we want to support streaming MIDI events (ie, from a pipe)
    *outSequence = newMidiSequence();
    if(!midiSource->readMidiEvents(midiSource, *outSequence)) {
      logWarn("Failed reading MIDI events from source '%s'", midiSource->sourceName->data);
      return RETURN_CODE_IO_ERROR;
    }
  }

  return RETURN_CODE_SUCCESS;
}
static int _testNewMidiSequence(void) {
  MidiSequence m = newMidiSequence();
  _assertNotNull(m);
  _assertIntEquals(numItemsInList(m->midiEvents), 0);
  return 0;
}