I worked a bit on preset handling in gstreamer. Now machines with variable number of parameters with save their properties correctly. One example is the parametric equalizer. I needed this for sidsyn in buzztard too. I also updated the preset handling for buzzmachines. They now store presets in user-data-dir. This avoids that those get overwritten when the plugins get updated. The preset handling logic will read user-presets first and then merge in system wide presets. One shortcoming here is that we would need a flag on each preset whether it comes from a preset file in user-data-dir (and thus is writable) or comes from a system dir (and thus is read-only). This would allow the UI to require that users pick a new uniqe name when changing a system preset.
Songs in buzztard now also store their non-dynamic settings. This will fix fluidsynth forgetting the selected patch file and is also needed for e.g. setting the chip-type in sidsyn. I refactored the code a bit and now we don’t show empty properties dialogs anymore and instead gray out the menu item that would invoke them.
The build system now can show the class-coverage of the tests. As this is just a few shell commands it quickly shows untested classes. It relies on naming conventions for tests. To make that work I also cleaned up the whole UI tests. Those are now more robust and actually verify a lot more things (we went from 54 to 92 ui tests).
77 % (24/31) lib/core/
40 % ( 4/10) lib/ic
100 % ( 1/ 1) ui/cmd
51 % (27/52) ui/edit
The last thing I worked was to progress on live machine playback. And hell yes, it works! One can bind e.g. midi keyboards to machines and play them live. This includes a round-robin voice management for polyphonic generators. It is a lot of fun to play with.
Tom made good progress on the pattern control source. Most of the tests now pass. We hope to be able to merge it soon and to remove the complicated 2step controller updating code.
151 files changed, 8453 insertions(+), 6451 deletions(-)