Igevorse Otonnoleare

JACK Transport: code published

29 June 2014 | 10:52 pm

Overview of work this week

In short:

  • JACK Transport reposition: code published.
  • Found two bugs with repeats.
  • New ideas about Timebase slave.
  • Ideas about hot switching of audio drivers.

As i wrote in previous post, my code of JACK Transport reposition worked, but wasn't ready for merging and could break working with other sound-systems (ALSA, Pulseaudio, etc.). Also, there were some bugs with loops and repeats. I fixed these bugs, and after testing and talking with my mentor I got that bug with repeats was not my - I haven't broke anything. Anyway, I fixed it.

You can find code of my implementation of JACK Transport reposition here. (I was amending this commit repeatedly, but it still has a date "19th of June". Is it ok?)

If you're interested, you could test it and write me about bugs.

We got a long test of audio drivers from daeavelwyn (Thank you). Looking at tests #2, 5 I could say that it is correct behavior (it's not a joke). We can't use more than one driver at the same time. I've discussed it with my mentor and decided that it is ok: we could use "JACK midi + JACK audio" instead of "JACK midi + ALSA" and "JACK midi + PortAudio". So, now I should change user interface to forbid selecting more than one driver.

When I started to work on this project, I noticed that I have to restart MuseScore if I want to switch an audio driver. It was too annoying and took some time. So, now I can fix it. As my mentor said, "it would be a huge gain of usability".

Also, daeavelwyn gave me another idea about Timebase slave. In short, it will give an ability to change speed of playback with external midi controllers or prerecorded midi track. Here is my retelling of the use case:

Suppose we have a score in MuseScore and an external synth (generates some sounds that couldn't be written as score, for example, Zebra VSTi). We're writing a music for a film, so we're also using a xjadeo. Now suppose we want to send an orchestra hit and a synth sound to underline some action in the film. We want tempo to be a bit slower at this moment because our sync with the movie isn't as good as we would like. We could manage tempo (make a rallentando) in Qtractor - it lets us draw a tempo map, we can slow down or accelerate the music to have a more living/realistic interpretation:
"with this mechanism, there is no limit to the interpretation and if you work on music scores, it's really important to sync everything to the movie" © daeavelwyn

I've already implemented JACK Timebase Master - now JACK Transport and all other application get a signal when tempo changes in MuseScore. To implement described feature I should make an "invert" - read signals about changing tempo in JACK Transport and change tempo in MuseScore. Of course, I am talking now about relative tempo while playback, not about appearing tempo mark in the score.

Key tasks that stalled

Can't solve problem with marked notes. When I seek backward while playbacking, last played chord stays marked (blue notes).

Also I am still getting a crash: open MuseScore and press "Play" on JACK Transport. This worked well before, seems like I broke something.

Upcoming tasks this week

Solve problem with marked notes described above.

Change a UI of "Preferences->I/O": add new checkboxes "JACK Transport", "JACK Timebase Master" and forbid selecting more than one driver.

Implement "Timebase slave" feature described above.

Think about hot switching audio drivers.

As usual, you can find me on IRC #musescore as igevorse.

Also feel free to write me about implementing some JACK-related features that you need and want.

« Seek from JACK Transport: video demo · JACK Transport: code published · New UI: improved usability »

Leave your response!

Style `onWall HashCode` by Lited & Sayori
Get your own blog immediately for free with Lited!