package com.netthreads.osc.note.service; import com.google.inject.Inject; import com.google.inject.Singleton; import com.netthreads.network.osc.client.OSCClient; import com.netthreads.osc.common.domain.OSCBundle; import com.netthreads.osc.common.domain.OSCMessage; @Singleton public class NoteBuilderImpl implements NoteBuilder { private static final String MESSAGE_ADDRESS_NOTEON = "/midi/note"; private OSCBundle oscBundle; private OSCClient oscClient; @Inject public NoteBuilderImpl(OSCClient oscClient) { this.oscClient = oscClient; } @Override public void begin() { // Get OSC bundle oscBundle = OSCBundle.$(); } @Override public void note(NoteDefinition noteDefinition) { OSCMessage oscMessage = OSCMessage.$(MESSAGE_ADDRESS_NOTEON); oscMessage.addArgument(noteDefinition.getNote()); // note oscMessage.addArgument(127); // velocity oscMessage.addArgument(noteDefinition.getChannel()); // channel oscBundle.addMessage(oscMessage); } @Override public void end() { // If there are messages to send then send them. if (oscBundle.getMessages().size() > 0) { oscClient.send(oscBundle); //Gdx.app.log("oscBundle", " "+System.identityHashCode(oscBundle)); oscBundle.free(); } } }