Closed JessyJP closed 5 months ago
Ooops apparently can't rename the branch after making a pull request.
The second commit is to improve the close functions.
Improve the MIDI module and preparing all output midi relevant methods.
The transmit connection is improved.
Get MIDI-ready state functions added
QueleaApp now has access to the Module with get and set functions.
Send midi message prototype overloaded made
Null Checks, initialization/reinitialization improved and reset to Null for the devices and the receiver.
open()
function is called we use those handles for close()
.
I wonder if we really need to open and close them though. It will work without that also ( I think )sendMidiEvenMsg
overloaded. One internal version and one with external velocity. (i.e. Data 2)
defer
to disabled by default for now.COPY-PASTE to any handler handle function the snippet that sends midi and interrupts. Only the relevant key needs to be changed. The snippet could be put into a function but it is meant to interrupt the calls to the RC in deferred mode.
public/private boolean handleMidiSend(String Midi Event , int velocity=0){ // The snippet here return isDeffered; }
or could be: that deffer is simply called externally .... ahhhh right
String ip = he.getRemoteAddress().getAddress().toString(); if (!isDeffered(ip) && RCHandler.isLoggedOn(ip))
That would be much more elegant.
That part is more invasive so it can be discussed.The defer control mode a unique feature that is not implemented in any other presentation software. The relevant calls do not make changes to quelea but inform another software that such change is requested. Then the other software makes the changes to quelea. Also, the feature has to be added to the quelea mobile app. For it to work as expected.
A working midi module. It does what I previously demonstrated via external HTTP translation but this thing is much better. It's faster and it loads up with Quelea. Right so:
The midi module class that is initialized in Main.java, similar to the server, i.e try-catch no problem it fails etc.
MidiEvent
which is a struct class.MidiInterfaceConnector
is the handler. There are 2 implementations of MIDI receiver and transmitter.The module attaches to an existing device i.e. you need loopmidi for a DAW. But that means you can directly attach to a midi controller.
NO GUI for now but everything works. (Ummm, I haven't tested it all actually, but it uses the RChandler)
The transpose song function needed an overload.
//songEntryWindow.saveSong();
This one is a bit confusing for me I haven't checked what exactly what saves what. Technically here is what should happen.The rest is the properties section. Notepad++ is amazing, wow writing code vertically? Amen!
MidiEvent
.So that's the prototype. Works awesome. The more complicated part is how to decide on the MIDI out.
The matter of the differed output is a feature that will allow Quelea to act as a controller for other software. So Quelea makes a MIDI request rather than change, and then the other software updates quelea. Hence, you use quelea as normal but multiple things could happen. We can talk about that later. For now, this is the standard thing that I think most users would expect.