Features & Issues: Post 7/8 - MIDI OSC control and the world of possibilities

Feature Improvements & Issues … let’s talk about Quelea.

Issue 7:

MIDI control and sequencing!
Here we actually come to the reason I started with the series of posts, discussing all previous issues in the first place.
This is the one I will be doing myself and submitting pull requests in the near future.

My project and idea

Recently, I have been working on something. It’s an idea, model, templates, scripts … and more.
Here is the challenge, many churches can’t afford many musicians or don’t have good musicians. Sometimes you have small groups and it’s not convenient.
How do you efficiently provide them with quality music?

Well, I have this idea for a personal setup which I will eventually share and perhaps make a website where people can freely exchange DAW projects or renders for other people to use. Free backing tracks! But actually, it’s way more. It’s free multichannel backing tracks, which can include video, lyrics and automation data. You can route them to your mixer and use them as substitute musicians.

Where does Quelea come in? The world of possibilities!

Well, let me ask you, what if you are a single keyboard player and you need to change slides but also need to see the chords for the parts of the song you play?
This is where the sequence automation comes in!

We can include Quelea sequence MIDI tracks something which I already did and demonstrated in an earlier post!

  • In the no-musician or single-musician scenario, I can have the backing tracks play, my slides are changed (quite fast at that) always on time. EPIC!

  • I can play parts out of order. i.e. my DAW controls Quelea and quelea is the slave.
    Feel like you have to repeat the chorus? I got you covered!

  • Now, let’s say you have a two-musician scenario. You do the technical stuff and play music but you have a singer who leads things overall. So the singer will look at the remote read the lyrics and change slides.
    Well, you can also do it because you are also in stage mode but your hands are busy!

  • Now, the DAW runs in a sequential mode but suddenly the musician presses the next slide out of order and wants to make a demand for the next section?
    Do you need one more remote control on stage!?
    My answer would be no!

My previous solution was one-sided love:

While I can send automation to quelea, I can’t get any feedback from it.
So I had this idea, how about we keep things simple and let Quela make a deferred request change for slide change?
You could say this is the defer master mode.
So normally we would be running Quelea in slave mode as it always should be but occasionally we want to make a request for the next second.
Essential pre-arm the section.
But the slide can’t change until it’s time.


I was thinking about this idea and decided to propose a MIDI server module. Rather simple but effective. Also later we can include OSC mode but it’s very similar in a way.
First of all, java has integrated MIDI modules, we don’t really even need a GUI, although that would be nice.
I might try to make a GUI but will for now put it all in the settings because once set up you shouldn’t need to change it.
My other work was done with a simple CSV configuration file which doesn’t change once configured.
Quelea could register as a new MIDI device but doesn’t have to.
It can grab onto a LoopMIDI virtual device (virtual midi cable/connection).
Running an RTP server would be enough to run that on the network.
Oh, how about OSC, sure same code just changes the interfaces and the tigers.
The MIDI server will register at the Quelea startup just like the HTTP server.
It will be event-driven and everything can be self-contained in one(or 2) java files.
I have already prototyped this and it works great!

Deferred mode

In slave mode (as usual) a midi trigger can call the normal Quelea API, which will update the changes and inform the server(s) of the changes which will update all clients.
Now I say server because Quelea, will have MIDI out or OSC send.
This can be used for confirmation by the DAW… also here is the interesting part: You can exchange information with the DAW. That means the DAW can process feedback from Quelea.

A Possibility

So, you are telling me, just run quelea, start my sequence in the DAW in any order and the DAW will load everything in Quelea? Yes!

Now let’s go back to the two-musician example, the singer that leads suddenly wants to repeat a section. They press Quelea remote, and now quelea checks that we are running in deferred master mode, so it doesn’t update anything but sends MIDI request information. The DAW sees what the next section is supposed to be and pre-empts(arms) the section and once the current section is done goes to the next and retriggers Quelea. Amazing!

What if you are running on a single laptop, mic, speakers and the quelea remote(Or just the laptop, no remote)?
Well, now you can just watch your lyrics and sing and make section requests from the app itself. How cool is that?!
You can’t do that with a video! You can’t very easily transpose or change the tempo of a video to smoothly play it out of order! (I mean I personally can, the average user wouldn’t be and then there are other reasons not to.)

A future

Finally, people will be able to download a bunch of free projects available on my site for you to download for your congregation!
It can have everything you need including the music Quelea and other automation. Use what you want and mute the rest.
There will be different versions of the same song in different languages and different instruments etc. on my website from contributors from all over the world … for free? YES! …