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

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

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

import io.github.leovr.rtipmidi.error.AppleMidiSessionInstantiationException;
import io.github.leovr.rtipmidi.session.AppleMidiSession;

import javax.annotation.Nonnull;
import javax.sound.midi.MidiMessage;
import javax.sound.midi.Receiver;
import javax.sound.midi.Transmitter;
import java.util.Collections;
import java.util.List;

/**
 * {@link AppleMidiSession} with one or more {@link Transmitter} as the sender(s) of the MIDI messages
 */
public class MidiTransmitterAppleMidiSession extends JavaxAppleMidiSession {

    private final List transmitters;

    public MidiTransmitterAppleMidiSession(@Nonnull final Transmitter transmitter) throws
            AppleMidiSessionInstantiationException {
        this(Collections.singletonList(transmitter));
    }

    public MidiTransmitterAppleMidiSession(@Nonnull final List transmitters) {
        this.transmitters = transmitters;

        for (final Transmitter transmitter : transmitters) {
            transmitter.setReceiver(new SimpleReceiver());
        }
    }

    private class SimpleReceiver implements Receiver {

        @Override
        public void send(final MidiMessage message, final long timeStamp) {
            sendMidiMessage(message, timeStamp);
        }

        @Override
        public void close() {
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy