All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.leovr.rtipmidi.JavaxMidiMessageConverter Maven / Gradle / Ivy

The newest version!
package io.github.leovr.rtipmidi;


import io.github.leovr.rtipmidi.adapter.ShortMessageAdapter;
import io.github.leovr.rtipmidi.adapter.SysexMessageAdapter;
import io.github.leovr.rtipmidi.model.ShortMessage;
import io.github.leovr.rtipmidi.model.SysexMessage;

import javax.sound.midi.MidiMessage;

/**
 * Converter class to convert from {@link io.github.leovr.rtipmidi.model.MidiMessage} to {@link MidiMessage}
 */
class JavaxMidiMessageConverter {

    MidiMessage convert(final io.github.leovr.rtipmidi.model.MidiMessage message) {
        if (message instanceof ShortMessage) {
            return handleShortMessage((ShortMessage) message);
        } else if (message instanceof SysexMessage) {
            return handleSysexMessage((SysexMessage) message);
        }
        throw new IllegalArgumentException("Message could not be converted");
    }

    io.github.leovr.rtipmidi.model.MidiMessage convert(final MidiMessage message) {
        if (message instanceof javax.sound.midi.ShortMessage) {
            final javax.sound.midi.ShortMessage shortMessage = (javax.sound.midi.ShortMessage) message;
            return new ShortMessage((byte) shortMessage.getCommand(), (byte) shortMessage.getData1(),
                    (byte) shortMessage.getData2());
        } else if (message instanceof javax.sound.midi.SysexMessage) {
            final javax.sound.midi.SysexMessage sysexMessage = (javax.sound.midi.SysexMessage) message;
            return new SysexMessage(sysexMessage.getMessage(), sysexMessage.getLength());
        }
        throw new IllegalArgumentException("Message could not be converted");
    }

    private MidiMessage handleSysexMessage(final SysexMessage message) {
        return new SysexMessageAdapter(message);
    }

    private MidiMessage handleShortMessage(final ShortMessage message) {
        return new ShortMessageAdapter(message);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy