Ejemplo n.º 1
0
uint16_t MDSong::toSysex(ElektronDataToSysexEncoder &encoder) {
	encoder.stop7Bit();
	encoder.pack8(0xF0);
	encoder.pack(machinedrum_sysex_hdr, sizeof(machinedrum_sysex_hdr));
	encoder.pack8(MD_PATTERN_MESSAGE_ID);
	encoder.pack8(0x04); // version
	encoder.pack8(0x01); // revision
	
	encoder.startChecksum();
	encoder.pack8(origPosition);
	encoder.pack((uint8_t *)name, 16);
	
	for (uint8_t i = 0; i < numRows; i++) {
		encoder.start7Bit();
		encoder.pack((uint8_t *)&rows[i].pattern, 4);
		encoder.pack16(rows[i].mutes);
		encoder.pack16(rows[i].tempo);
		encoder.pack(&rows[i].startPosition, 2);
		encoder.stop7Bit();
	}
	
	uint16_t enclen = encoder.finish();
	encoder.finishChecksum();
	
	return enclen + 5;
}
Ejemplo n.º 2
0
uint16_t MDKit::toSysex(ElektronDataToSysexEncoder &encoder) {
	encoder.stop7Bit();
	encoder.pack8(0xF0);
	encoder.pack(machinedrum_sysex_hdr, sizeof(machinedrum_sysex_hdr));
	encoder.pack8(MD_KIT_MESSAGE_ID);
	encoder.pack8(0x04); // version
	encoder.pack8(0x01); // revision
	
	encoder.startChecksum();
	encoder.pack8(origPosition);
	
	encoder.pack((uint8_t *)name, 16);
	name[16] = '\0';
	
	encoder.pack((uint8_t *)params, 16 * 24);
	encoder.pack(levels, 16);
	
	encoder.start7Bit();
	encoder.pack32(models, 16);
	encoder.stop7Bit();
	encoder.start7Bit();
	for (uint8_t i = 0; i < 16; i++) {
//        encoder.pack((uint8_t *)&lfos[i], 36);

		encoder.pack((uint8_t *)&lfos[i], 5);
        encoder.pack((uint8_t *)&lfo_statestore[i], 31);

	}
	encoder.stop7Bit();
	
	encoder.pack(reverb, 8);
	encoder.pack(delay, 8);
	encoder.pack(eq, 8);
	encoder.pack(dynamics, 8);
	
	encoder.start7Bit();
	encoder.pack(trigGroups, 16);
	encoder.pack(muteGroups, 16);
	
	uint16_t enclen = encoder.finish();
	encoder.finishChecksum();
	
	return enclen + 5;
}
Ejemplo n.º 3
0
uint16_t MDGlobal::toSysex(ElektronDataToSysexEncoder &encoder) {
	encoder.stop7Bit();
	encoder.pack8(0xF0);
	encoder.pack(machinedrum_sysex_hdr, sizeof(machinedrum_sysex_hdr));
	encoder.pack8(MD_GLOBAL_MESSAGE_ID);
	encoder.pack8(0x05); // version
	encoder.pack8(0x01); // revision
	
	encoder.startChecksum();
	encoder.pack8(origPosition);
	
	encoder.pack(drumRouting, 16);
	
	encoder.start7Bit();
	encoder.pack(keyMap, 128);
	encoder.stop7Bit();
	
	encoder.pack8(baseChannel);
	encoder.pack8(unused);
	encoder.pack16(tempo);
	encoder.packb(extendedMode);
	
	uint8_t byte = 0;
	if (clockIn)
		SET_BIT(byte, 0);
	if (transportIn)
		SET_BIT(byte, 4);
	if (clockOut)
		SET_BIT(byte, 5);
	if (transportOut)
		SET_BIT(byte, 6);
	encoder.pack8(byte);
	encoder.packb(localOn);
	
	encoder.pack(&drumLeft, 12);
	
	uint16_t enclen = encoder.finish();
	encoder.finishChecksum();
	
	return enclen + 5;
}