Linux Audio Monthly Round-Up #3 – October 2010

Dear all,

Actually I wanted to attempt to mix a new track from my band tonight when I realised that I really had to write the monthly round-up. A bit of a bummer because I wanted to do the mixing with the shiny new Qtractor 0.4.7 Furious Desertrix release. With the Furious Desertrix I can now use more than 16 tracks on my Behringer BCF2000 with the new Track Offset MIDI functionality and I really wanted to play around with the MIDI learn functionality for plugins. Bummer, bummer.



PS. Again many thanks to the people @ LinuxMAO!

1. Linux audio news
2. Music made with Linux
3. New versions, new projects

Linux audio news

September was the month of Yoshimi trying to battle the huge pink robot that is called MIDI implementation. The battle is not won yet but slowly we'll force the robot on its knees. And then there were the big JACK latency and tempo changes and JAMin discussions on the JACK-devel and Linux Audio user mailinglists, worth mentioning because those discussions are crammed with a lot of practical and useful information on how processing audio works in JACK and Linux in general.

September was also the month that four, yes four, new releases of multimedia distributions saw the light: Dream Studio 1.0, AV Linux 4.1, GNUGuitarINUX 0.04 and Tango Studio Karmasutra 1.0. It makes me wonder, why so many multimedia distro's? Are the main distro's that bad? Is it really to allow a smooth transition into using Linux for audio? Is it really to offer something that just works? Why not help out the main distro's to allow such a smooth transition and to make them just work?

Enough questions, apparently there is a need for those distro's which is a good sign, though I personally question the existence of this need. But it's a sign nonetheless that could be interpreted as the multimedia user base getting bigger.

And then there was Flattr which seems to interest more and more FLOSS developers. You might want to take a peek and while you're at it, just flattr some of your favorite projects. I recently signed up too and so far I quite like the idea. My first clicks are well spent I think.

Music made with Linux

ORLANDOviols - Doulce Memoire
I admit not having any affection with classical music so I can't really say much about this and I'll let the music speak for itself.

Soda P - Pent-Up
Yours truly, guitar and vocals. So I won't elaborate on this one either for the sake of objectivity. Just one thing, it's completely recorded and mixed with Linux.

Jaycapela - Winging It
This is more my style. IDM'ish repetitive dreampop with the emphasis on dream. This is the stuff I'd like to dream away on. It has that right feel that makes me wonder off to beautiful places. Not released in September though but since September did not yield a lot of new releases I can safely include this track.

Gilles - Bologne
As I really like George Brassens I can't omit this track that is written, performed, recorded and mixed in the same feelgood tradition. Chapeau et bravo!

New versions, new projects

September 1: FluidSynth 1.1.2
Big changes:
* New CMake build system [plcl]
o Winbuild and Macbuild directories dropped
o Autotools build system is deprecated, but is still working
* Rewriting of thread safety [diwic]
o Two new settings control the thread safety mode. The default is to be backwards compatible.

Smaller changes:
* Voice overflow settings [diwic]
* Possible to update polyphony, up to 65536 (and beyond initial setting) [diwic]
* Possible to update sample rate (jack driver updates sample rate correctly) [diwic]
* MIDI Bank Select handling fixed [plcl]
* Source files moved into different subdirectories [diwic]
* Can use RealTimeKit (on Linux) to get real-time priority [diwic]
* Shell commands for pitch bend and pitch bend range [monk]
* PulseAudio driver: specify media role, and allow pulseaudio to adjust latency [diwic]
* Bug fixes [diwic, plcl, KO Myung hun, Felix Krause, laurent, nshepperd

September 2: Emutrix 0.1 NEW!
* Sane/safe initial settings
* Card selection
* Read initial ALSA element values
* Callbacks to react to outside changes (pads don't work yet, alsa lib or driver bug?) Works now, was a driver bug, now fixed. Implemented a workaround in the meanwhile.

September 3: QmidiCtl & QmidiNet 0.1.0
* Standard desktop icon fixing (Fremantle/Hildon).
* MIDI note and controller names (GM) added.
* Logarithmic scale configure option added.
* Message box title confidence fix (whatever it be:)
* MIDI controller assignment, any other than mostly MMC, is now user configurable for all widgets, buttons, sliders and knobs, through the novel "Configure..." menu item. (EXPERIMENTAL)
* Dropped the "About Qt..." menu item.
* Use standard dialog buttons as provided by QDialogButtonBox.
* Attempt to comply with extras-testing promotion.

* Attain micro-second precision for JACK MIDI timing, through home-brew queue sorting pool =)
* Enabling ALSA MIDI and/or JACK MIDI devices is now optional.
* Transparent JACK MIDI support is being introduced. (EXPERIMENTAL)
* Use standard dialog buttons as provided by QDialogButtonBox.
* Context menu is now also triggered when left-clicking on the system tray icon.
* Message box title confidence fix (whatever it be:)

September 3: Patchage 0.4.5, Raul 0.7.0 & FlowCanvas 0.6.4
* Install SVG icon
* Fix compilation without Jack
* Improve performance when dragging modules
* Bump FlowCanvas dependency to 0.6.0
* Upgrade to waf 1.5.18

* Add several unit tests
* Use malloc'd memory for RingBuffer/SRSWQueue (instead of a new'd array)
* Fancy coloured console/logging I/O (raul/log.hpp)
* More flexible Path and better URI support
* Atom updates, including new "Blank" Atom for storing dictionaries with URI keys (ala JavaScript "objects", but RDF compatible)
* Remove stack stuff from Array and create new ArrayStack
* Make Symbol and URI more opaque and use Glib string interning
* Add Configuration class for app command line option handling
* Use < operator in TableImpl instead of > so it needn't be defined
* Add IntrusivePtr, a trivial #define of boost::intrusive_ptr which is useful for hard realtime things (since adding and dropping refs is realtime safe, which is not true of shared_ptr)
* Remove TimeSlice

* Consistently call Item::store_location when items are moved, previous versions didn't on arrange or when dragging a selection
* Fix centering (e.g. on arrange, initial view)
* Upgrade to waf 1.5.18

September 4: Nano-Basket 0.2
* Do not use raw device but ALSA.

September 5: Darkice 1.0
* fixed a bug in BufferedSink.cpp that leads to some buffers being written twice, causing corruption of datastream, closes ticked #20 thanks to Edwin van den Oetelaar
* implemented samplerate conversion for all codecs using libsamplerate, and keeping internal aflibConverter as fallback, thanks to Sergiy
* bugfix: fix for alsa driver - closes ticked #8 thanks to Clemens Ladisch

September 5: Ghostess 20100905
* Configuration file saving and loading is more locale-flexible: floating-point numbers are always written using '.' for the decimal point, regardless of locale setting, and when they are read, either '.' or the locale-specific decimal point may be used.
* Added a manual page.

September 8: Jackbeat 0.7.6
* #61: fix compiling on recent x86_64 Linux systems such as Fedora 13
* do not try and connect to PulseAudio by default, it may deadlock

September 9: Bigband 1.2
* MIDI output to ALSA sequencer bus, so soft-synth's can be controlled real-time.
* Audio via ALSA or Jack

September 9: Drumstick 0.5.0
* OVE file format support, contributed by Rui Fan
* Optional RealtimeKit support for MIDI input thread
* guiplayer simplified and optimized, with OVE format playback
* Build system fixes: using visibility=hidden if it is available, exceptions, static build.

September 10: Beast 0.7.2
BEAST/BSE 0.7.2:
* Moved Beast/BSE to GNU LGPL, use AS-IS license for examples
* Module changes and additions:
ArtsCompressor - Relicensed to LGPL with permission from Matthias Kretz
BseContribSampleAndHold - Relicensed to LGPL with permission from Artem Popov
DavXTalStrings - Use deterministic random numbers for unit tests
BseNoise - Improved random number generator
* Switched to autogenerated ChangeLogs
* Error bell can be muted in beast preferences dialog
* Added multisample creation/editing command line tool: bsewavetool
* Support adjustable volume, pitching and drum envelopes in .bsewave files
* Added Retro Acoustic drum kit [Tim, Stefan]
* New loadable Instruments/Effects:
- BQS Bass Drum E8012 [Tim, Stefan]
- BQS Slow Hum [Stefan, William DeVore]
- FSM Fresh Water Bass instrument [Krzysztof Foltman]
- FSM Growl Bass instrument [Krzysztof Foltman]
- FSM Synth String Sweep [Krzysztof Foltman]
* Added support for loading 32bit and 24bit PCM-format WAV files
* Added support for gcc-4.4 and automake-1.10
* Added support for guile-1.8, guile-1.6 remains as minimum requirement
* Various fixes, improvements and much improved test coverage.
* Bug fixes: #452604, #468229, #344388, #451086, #450724, #454121, #491552, #450490, #441936, #336766, #433431, #474332, #474244, #456879, #456408, #424897 [Tim Janik, Stefan Westerfeld]
* Migrated translation support to use awk, sed and po/
* Updated German translation [Mario Blättermann]
* Updated Italien translation [Michele Petrecca]
* Updated Occitan translation [Yannig Marchegay]
* Updated Brazilian Portugues translation [Leonardo Ferreira Fontenelle]
* Updated British English translation [David Lodge]
* Updated Spanish translation [Jorge Gonzalez]
* Updated Slovenian translation [Andrej Znidarsic]
* Updated Danish translation [Joe Hansen]
* Updated French translation [Bruno Brouard]
* Added Norwegian bokmal translation [Kjartan Maraas]
* Added Ukrainian translation [Maxim V. Dziumanenko]

BSE-ALSA 0.7.2:
* Fixes for automake-1.10 builds
* Moved Beast/BSE to GNU LGPL

September 17: KMidimon 0.7.4
* requires Drumstick >= 0.5
* load and play OVE files (Overture), contributed by Rui Fan
* option to request real-time priority on MIDI input thread
* option to (not) resize columns while recording
* better reporting of file loading errors
* revised universal sysex messages translation

September 17: NtEd 1.10.15
* No start bar line in single staff systems.

September 18: Snd 11.9
No changelog :(

September 19: Gnome Wave Cleaner 0.21-11
* Amplify had a bug when only amplifying a single channel.
* Alpha code -- trying to read MP3's and OGG file types.
* Experimental -- defining click detector in terms of decibles rather than the previous unintuitive values
* Ifdefs for DENOISE_TRY_ONE_SAMPLE. Generally a horrendously bad idea to denoise using a window width of 1.
* Started playing around with code to restore harmonic content on very old recordings (aka harmonic exciters...)
* disallow closing while file is being processed (preventing segfault)
* long filenames handled better
* removed some buffer overruns in sprintfs and probably aboided somemore
* disallow closing while processing in batch mode (preventing segfault)
* return EXIT_SUCCESS on success instead of 1 for better batch integration
* allow selection of hpf declick for batch processing
* end keyword to set stop_position to end of file for batch processing
* usage message explaining batch mode for batch processing

September 19: Hydrogen
* hydrogen compiles now with QT 4.7 and recent portmidi versions
* added /usr/lib64/ladspa and /usr/local/lib64/ladspa to the ladspa plugin path
* fixed the linking of the wasp plugins
* Bugfix: Show only readable ports in the midi input dialog

September 19: DSSI 1.1.0
* New jack-dssi-host command line option '-c' to set the ALSA and JACK client names.
* New 'dssi_list_plugins' and 'dssi_analyse_plugin' command line tools.
* Example GUIs have been updated to Qt 4.

* Fixed jack-dssi-host ALSA client ports to be of type 'application'.
* Fixed the MIDI CC mapping in trivial_synth.
* Fixed an uninitialized variable bug in less_trivial_synt.

September 21: Jacker 2010.9.21
* Command-Line support. If a song name is passed to Jacker at startup, it will load it.
* "install" command. You can now install Jacker globally.
* New logo. Less glossy, more elegant.
* Fixed a terrible timing error that introduced a jitter as big as the current latency.
* Default number of tracks raised from 8 to 16.
* Tracks can be renamed. Double-click track to pick a new name.
* Mute buttons for each track. Not that reliable at the moment. Last played sound may hang. In this case, stop, then continue playing.
* MIDI input to connect your keyboard, to test sounds before you track them. Click on a track label to route your keyboard to the particular output.
* Initial JACK transport support. It's useful for synchronizing a recording to a DAW like Ardour. Can be switched on with the "Sync" button in the toolbar. Not too stable on start-up and loop borders. When in trouble, stop, seek, then start.

September 23: Xsynth-DSSI 0.9.4, WhySynth 20100922 & Ghostess 20100923
* GUI knobs now use cairo (when available) for smooth, anti-aliased rendering.
* Patch and configuration file handling is now more graceful in its handling of different locales.
* WhySynth: new minBLEP oscillator waveform (Clipped Saw).
* WhySynth: new effect (Sean Costello's Csound reverb).
* Six months' to a year's worth of unreleased bug fixes and code cleanups.

September 24: QmidiNet 0.1.1
* Fixed serious JACK-MIDI DoS bug, now working as advertised.
* Minor debug mode JACK-MIDI event print out fix.

September 27: MusE 1.1
* Jack midi support.
* Allow native VST guis for plugins
* Audio and midi routing popup menus now stay open, for making rapid connections.
* MusE now has two mixers, with selectable track type display.
* External midi sync fixes and improvements, should be very stable
* Some pianoroll improvements
* Some crash fixes
* Drum editor fixes
* Various arranger fixes and improvements
* Various improvements for plugin guis
* Routing fixes
* Stability fixes for plugins
* Various DSSI fixes
* Rec enabled track moves with selection when only one track is rec enabled
* Jack midi, routing system, multichannel synth ins/outs, midi strips and trackinfo pane.
* Dummy audio driver: Added global settings for sample rate and period size.
* Arranger track list: Quick 'right-click' or 'ctrl-click' or 'ctrl-mouse-wheel' toggling of Track On/Off.
* Allow changing timebase master
* Option to split imported midi tracks into multiple parts.
* Several new keyboard shortcuts for various operations, see shortcut editor
* Several colour tweaks and other cosmetic changes
* Various stability fixes
* Countless fixes and tweaks, about a 300 lines in the Changelog, check it for a complete list of blood sweat and tears

September 28: NtEd 1.10.16
* Bugs fixed

September 28: MuseScore
* fix #6775: Seg. fault by double clicking any element twice
* fix #7233: Transpose by diminished second doesn't work (0.9.6 branch regression)
* fix #7232: D.S. after coda sign freezes playback
* fix #7167: Time signature change causes triplets to corrupt score
* fix #7211: Copy/Paste notes over rest of diff. durations in staves
* fix #7142: Crescendo & delete measures problems
* fix #7197: MuseScore fails to open MSCZ files with capitals
* fix #6932: Changing notehead of a breve crash
* fix #7077: Applying double-note tremolo to dotted notes fails and alter measure duration
* fix #6937: Measure Properties should be modal dialog
* fix #6888: When exchanging voice, voice 1 is removed
* fix get keysig from plugin when concert pitch mode is set
* fix #6735: C# for AltoSax in default soundfont is silent
* add access to DPI and notehead, note boundingbox and note position from plugin framework
* fix #7150: Changing soundfont does not work for audio export

September 30: Qtractor 0.4.7
* While moving multi-selected MIDI events around the clip editor (aka piano-roll), with help of keyboard arrow keys, that is, was not clear which one was the so-called "anchor" event, the one which positioning gets honored for snap-to-beat business. Not anymore: the anchor event now defaults to the earliest in time or the one the user's last point(-click)ed.
* MIDI control observer pattern implementation has sneaked in, making it ready for the so-called and long-awaited "MIDI Learn" feature and arbitrary MIDI controller assignment, for plugin parameters in particular.
* MMC DEFERRED PLAY doesn't cause transport state to stop if currently rolling (mitigating bug #3067264).
* Audio clip merge processing might have been skipping a few initial frame blocks, now fixed.
* Clip selection and plugin parameter hash optimization.
* Anti-glitch audio clip macro fade-in/out fixed again.
* New clip fade-in/out slopes (curves) are introduced, partially adapted and refactored from those easing equations of Robert Penner's fame.
* Clip fade-in/out non-linear slopes are now shown as actual WYSIWYG curves.
* Escape key now closes generic plugin widgets as ever found usual elsewhere.
* Picking nits: unselect current track when clicking on any gray empty area, also accessible from a new menu item: Track/Navigate/None.
* A nasty and deadly MIDI resolution overflow has been finally fixed, allowing for long MIDI sequences (1h+) to load correctly on 32bit machines from now on (was perfectly fine on 64bit though).
* MIDI editor selection hash optimization in face of reasonably huge event sequences.
* MIDI controller mapping finally refactored to support some other MIDI event types than just CC (0xBn) ones.
* Nitpicking fix: corrected main track-list (left pane) display when no track is currently selected.
* libX11 is now being added explicitly to the build link phase, as seen necessary on some bleeding-edge distros eg. Fedora 13, Debian 6. (fixing bug #3050944).
* New audio metronome bar and beat sample gain options.
* Progressively, the observer pattern is being finally introduced, targeting all potentially automation controls and widgets as plain ground-zero for the (ultra-)long overdue automation feature.
* MIDI controller mapping of still non-existing tracks were being implicitly assigned to the last, highly numbered, existing track. Now fixed.
* Moving from old deprecated Qt3'ish custom event post handling into regular asynchronous signal/slot strategy.
* Muting/soloing tracks while playback is looping was leaving current audio clip out-of-sync whenever that same track is later un-muted on any other preceding clip. Now hopefully fixed.
* MIDI Clock support makes its first appearance.
* All tempo (BPM) calculations are now compliant to the MIDI conventional equivalence between beat and quarter note (1/4, crotchet) as common standard time division.
* Automatic audio time-stretch option is not enabled by default anymore.
* Standard warning Apply button is now only shown when dismissing dialog changes are actually valid.
* Make sure non-dedicated metronome and player buses are properly reset and reopen when changing regular audio buses (hopefully fixing bug item #3021645 - Crash after changing audio bus).
* Hopefully, an outrageously old bug got squashed away, which was causing random impromptu crashes, most often when importing audio clips while looping and play-head is any near the loop end point.
* General standard dialog buttons layout is now in place.
* Fixed main track view off-limits play-head positioning.
* Main tool-bar Time and Tempo spin-boxes, may now have their colors correct, as for most non-Qt based theme engines (ie. Gnome). Green text on black background has been and still is the the intended aspect design ;)
* MIDI file import and internal sequence representation has been changed to be inclusive on all bank-select (CC#0,32) and program-change events which were previously discarded while honoring MIDI track properties. Interleaved SysEx events are now also preserved on their original sequence positions instead of squashing a duplicate into the MIDI bus SysEx setup.
* Attempt to include the VeSTige header by default, as for minimal VST plugin support.
* JACK transport support has been slightly rewritten, in fact the sync callback is now in effect for repositioning.
* The MIDI clip editor (piano roll) widget won't be flagged as a tool window anymore.
* A tempo adjustment tool is making inroads from the menu, as Edit/Clip/Tempo... (factory shortcut: F7).
* Audio tracks auto-monitoring is now effective on playback.
* Make sure to ask whether a dirty MIDI clip should be saved, upon resizing or stretching its edges (fixes bug #3017723).
* Backward and Forward transport commands are now taking additional stops on loop points.
* Attempt to optimize track solo/mute redundant transactions, in special regard to MIDI track events which were being duplicated on soloing and temporarily muted on unsoloing.