Ejemplo n.º 1
0
void Sequencer::executeEvent(HostEvent* c)
{
	switch (c->name)
	{
	case HC_TRANSPORT_PAUSE:
	case HC_TRANSPORT_PLAY:
	case HC_TRANSPORT_RECORD:
	case HC_TRANSPORT_REWIND:
	case HC_TRANSPORT_STOP:
		commandTransport(c);


		break;
	case HC_SONG_QUANTISENUMERATOR:
		_song.setQuantiseNumerator(c->argv[0]);
		break;
	case HC_SONG_QUANTISEDIVISOR:
		_song.setQuantiseDivisor(c->argv[0]);
		break;
	case HC_SONG_AUTOQUANTISE:
		_song.setAutoQuant(c->argv[0]==0?false:true);
		break;
	case HC_SECTION_SET_NEXT:
		_song.setNextSection(c->argv[0]);
		break;

	case HC_MIDI_EVENT:
		_song.addEvent(HostEventFactory::midiMessageFromEvent(c));
		break;

	case HC_PHRASE_MUTE_TOGGLE:
		_song.togglePhraseMute(c->argv[0]);
		break;

	case HC_REC_METSTATE:
		_song.setMetronomeState((MetronomeState)c->argv[0]);
		break;
	case HC_REC_METRONOME:
		_song.setMetronomeBars(c->argv[0]);
		break;
	case HC_PHRASE_LENGTH:
	{
		Section* section = _song.getCurrentSectionPointer();
		Phrase* phrase = section ? section->checkoutActivePhrase() : nullptr;
		if (phrase)
		{
			phrase->setLengthBars(c->argv[0]);
			section->checkinActivePhrase();
		}
		break;
	}
	case HC_CURRENT_PHRASE:
		_song.setCurrentPhrase(c->argv[0]);
		break;
	case HC_PHASE_QUANTISE:
		_song.quantisePhrase();
		break;

	default:
		break;
	}
}