Linux Audio Monthly Round-Up #2 – September 2010

Dear all,

Fashionably late, I know. As I thought August was kind of a calm month I slacked a bit. But when I started noting down all the new versions and projects I quickly realized that I was completely wrong. It was quite a busy month actually with some cool new developments.

For this Round-Up many thanks go out to the people at LinuxMAO as I based this article on their very elaborate September editorial. Thanks guys!


Jeremy (AutoStatic)

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

Linux audio news

One of the highlights of last month for me was the release of disabled's phasex-dev PHASEX Development Branch. While the PHASEX project itself seems kind of dormant he took up the task of fixing some of the most conspicuous and audible bugs like the broken System GTK+ theme and PHASEX's polyphony behavior. phasex-dev Milestone 1 is now available and the future looks bright with a roadmap that contains killer functionality like JACK thread synchronization and JACK MIDI support. Wouldn't it be amazing to have those wonderful PHASEX arpeggios staying in sync?

A lot of multimedia and audio distros are based on Debian and last month the freeze of Debian 6 “Squeeze” was announced. You might ask yourself yeah but, no but? Well, take Guitarix for example, version 0.10 was added to Squeeze just before the freeze which means that it will probably make its way into other Debian based distros like Ubuntu.

Lucky me that I got invited to attend a lecture by Robin Gareus on the upcoming video integration in Ardour 3.x because wow, that looks promising, as do the major achievements in Ardour itself. There is a draft Wiki article available on his website that gives a nice insight on all the extra functionality that the video integration will provide.

Last but definitely not least, Will Godfrey aka Folderol reorganised and slightly updated his magnificent ZynAddSubFX/Yoshimi instrument patches. Grab them here and find yourself using them exclusively after a few weeks, that's how good they are.

Music made with Linux

DoosC - When Ra Meets Anzar
An ambient track with a carefully selected intrumentarium. I really love the way this track builds up towards the end.

chr15m - Sphereflake
One of the most meticulously constructed glitchy 4/4's I've heard in quite a while.

Amplifiers - Formations
Incredibly high quality indie track completely recorded, mixed and mastered with Linux. Hats off for Mr. Engineer, faders up!

Houseman (aka Louigi Verona) - Cosmoport
One of the tracks from Houseman's new 'Tranquility' EP. To quote Houseman himself: "The style is called Progressive house, which means that it progresses. It is up to you, the listener, to explore the progress and see for your own self what is meant by that rather widely and usually incorrectly used label."

New versions, new projects

Software updates and freshly started projects.

August 4: xjadeo 0.4.13
* made portmidi optional * Thanks to Alex Stone.
* added 'mididriver' config-file option
* qjadeo * MTC menu: ALSA/JACK
* qjadeo * added OSD box toggle
* fixed remote-ctrl frame notification
* use ffmpeg fps ratio calculation functions
* fixed some spelling errors & text clarifications

August 4: Guitarix 0.11
* new version of the impulse response parameter editor. You can now graphically define a gain line to be applied to the IR data, e.g. emphasize a part of the early reflections or damping the reverb tail to make it fit to your guitar sound.
* the multi-line distortion effect now has 4 frequency bands and is better optimized
* fix regression from version 0.10.0: now the default preset file is created again if it doesn't exist (e.g. in new installations).
* the Guitarix widgets are now available into a library, with the goal of making them usable independently from Guitarix. You can build it as shared library and there's a c++ (gtkmm) wrapper, a python wrapper and glade support. Check it out and look for examples in those directories, or just build a nice looking display with the glade editor, and of course ask in our Guitarix forum (it's still alpha).

August 5: Nano-Basket 0.1 NEW!

* initial release
* feature set is limited to storing scenes to the nanoKONTROL device.

August 6: LMMS 0.4.7

* AutomationEditor: thread-safe handling of AutomationPattern pointer
* InlineAutomation: delete attached AutomationPattern immediately (fixes some random crashes when playing on virtual keyboard)
* EnvelopeAndLfoParameters: moved global instances management into helper class (fixes crashes when importing MIDI files)
* NotePlayHandle: fix broken note detuning feature
* AudioJack: do not use QVector in processCallback()

* Themes: explicitely set background and text color for tooltips
* ExportProjectDialog: guess file format from extension
* Fixed cloning of BB tracks
* When cloning BB track, indicate this fact in name of cloned BB track
* TrackContentObject: keep position in paste()
* Default theme: replaced background artwork with a more decent one
* TextFloat: fixed size calculation in simple mode
* "Save changes?" dialog: Save/Discard instead of Yes/No

* CALF LADSPA plugins: resynced with Git repository
* LadspaEffect/Controls: fixed non-working global channel link checkbox
* Sf2Player: disable per-note-panning support for the time being
* SpectrumAnalyzer: skip processing if UI is not visible
* ZynAddSubFX: new background artwork
* ZynAddSubFX: updated to version 2.4.1
* ZynAddSubFX: allow hiding UI by closing main window
* ZynAddSubFX: added window icon (win32 version only)
* ZynAddSubFX: save configuration file in LMMS working directory
* ZynAddSubFX: added knobs for MIDI controls
* ZynAddSubFX: new QtXmlWrapper, a QtXml-based XML backend for ZASF

* Improved .desktop and menu file
* Do not use -ftree-vectorize per default anymore
* Win32/Win64 installer associate LMMS project files with LMMS

August 6: JACK Network Manager
* Added makefile and ability to choose, what build it manages
* Debian rules are included. Thanks to falktx.
* Install script has one argument to override install root (default is "/").

August 9: Mudita24 1.03
* Peak-meter display is in dBFS, corresponding to displayed dBFS peak-meter value and scale-widget dB labeling.
* Hardware mixer input attenuators provide more precise control to the 0 to -48dB range of adjustment, turning the associated input "off" when the slider is moved to bottom of the scale. External MIDI control
of the hardware mixer via --midichannel and --midienhanced options unaffected by this change.
* For M-Audio Delta series, add display of "Delta IEC958 Input Status"
under "Hardware Settings."
* Command line options --no_scale_mark, --channel_group_modulus affect layout and presence of dB markings for sliders.
--channel_group_modulus allows override of Left/Right grouping of dB labels for multichannel applications.
* Control of peak-meter coloring via --lights_color and --bg_color options. Reasonable default colors used when these options are not set. (1.0.1's use of Gtk skin to provide an automatic color choice didn't work out that well on some systems.)
* Fixed command-line options --card and --device to allow valid ALSA card and CTL device names ( ).
* Profiles created in ~/.envy24control and not "~/envy24control" ( ).

Summary of previous updates from envy24control 0.6.0 (GIT HEAD) to "1.0.3":
(1) Implemented "Peak Hold" functionality in meters; reimplemented meters to do away with inefficient "faux LED" peak-meter display.
(2) Significantly reduced the number of timer interrupts generated by this program by slowing down all updates to 10 per second -- previously meters updated 25x/second!
(3) All volumes are represented as decibels, including the 0 to -48dB range of the hardware peak-meters, the 0 -to* -48dB&off attenuation for all inputs to the digital mixer, the 0 -to* -63dB attenuation of
the analog DAC, and the +18 -to* -63dB attenuation/amplification of the analog ADC.
(4) All gtk "scale" widgets have dB legends; the "PageUp" "PageDown"
keys allow rapid movement between the marked levels, and "UpArrow" and "DownArrow" allow fine-adjustment.

August 10: Traverso 0.49.2
* Cherry picked fixes from git:
* Make Traverso work with Qt version >= 4.6.2
* Correctly apply Fade In and Out curves.
* Compatibility with cmake 2.6.4
* Spanish translation added, thanks to JC!

August 10: SalamanderGrandPiano_V2
* Re-exported all notes with all lowcut filters removed and eased off some eq on some notes around C4
* Replaced all pedal noise samples, there are now two down and two up samples.
* Increased ampeg_veltrack on release harmonics from A0 to C2
* Increased ampeg_release to 0.850
* Introduced a 44.1khz16bit and an ogg vorbis version

August 11: SpectMorph 0.1.0
* file format changes
- instruments based on more than one sample can be shipped as one single file
- various performance optimizations
- store data as little endian (since this is more likely to be the host endianness)
- broken files or old files can be recognized and rejected
* automated tuning algorithm (smextract auto-tune)
* supported looping (for playing notes that are longer than the original sample)
* added beast plugin for playing SpectMorph instruments
* added jack client for playing SpectMorph instruments
* added zero padding before start of a sample to get better initial frames
* compile with -Wall
* allow single file argument for smenc (output filename will be constructed with .sm extension)
* support setting smplay decoder mode via command line parameter
* refactoring, cleanups

August 11: Bristol 0.60.6
* Was requested to implement a -geom option which would minimally allow for window placement onto the screen. This seemed very reasonable so incorporated it. The option will also take width and height parameters such as 500x200+100+100 and where necessary break aspect ratio and configure antialiasing. If only one of width/height is given then aspect ratio is maintained, and options such as +100+100 will just affect window positioning. Options like -geom 640 will just set the pixel width, maintain aspect ratio and take default placement, possibly invoking antialiasing as well.
* Randomised the TCP port numbers used to link the GUI to the bristol engine. There remained an issue with the Jack Session Manager and configurations that used multiple invocations of bristol: the TCP port identifiers would conflict causing one of them to fail on reload. I think the option '-host unix:1234' is a work around the issue as long as '1234' was always unique per bristol but this only works on localhost as it uses unix domain sockets rather than TCP domain. The longer term solution was to randomise the port numbers in the range 1024 to 16383, the transient service ports since otherwise there is still a window for error if the TCP ports are not closed down cleanly (although that is now finally a rare occurence). The port identifier can still be overridden and will be inherrited by the JSM interface.
* Resolved a few issues with different device drivers. OSS was actually broken for a while due to incorrect flags and buffers and there were a few ALSA anomalies although they were inadvertently correct.
* Was requested to add a manual page for bristoljackstats for part of the debian hurdles. Took the chance to also remove two ancillary binaries which generated notes but were only for QA testing, not general distribution.
* Added an option called -sleep which stalls the init process for seconds. This was too easy not to implement and may help to overcome what looks like a race conditition when using a session manager to restart multiple Bristol clients.
* Corrected some ./configure options so that they correctly check for jack and alsa header files rather than just the packages and libraries before including them in the build. This change included adjusting the default drivers so that OSS is configured when jack and alsa are not available.

August 13: jack_capture 0.9.54
* Removed jack_capture_gui from the target list since it uses Xdialog, which again belongs to a package requiring gtk1. (This should make things simpler for package managers)
* Made meterbridge optional during compilation.
* Added the option --filename-prefix / -fp for setting the prefix for autogenerated filenames. The default is "jack_capture_".
* Made jack_capture_gui2 use the -fp option to avoid overwriting files from older sessions.
* Changed jack_capture_gui2 to use "-f ogg" instead of piping through oggenc. Did not do the same change for mp3 files, since liblame is not always available.
* Added code to jack_capture_gui2 to create uniqe filenames when creating mp3 files.
* Smaller fixes
* Smaller reorganizing of buffer handling, disk handling and exit handling.
* Only print warning if unable to set nice value less than 0 (-10 is okay now).
* Added JackPortIsTerminal as jack port flag.
* Various cleanups.
* Let the jack process thread trigger the buffer check thread instead of using usleep.
* Added the -jt option to let jack transport trigger when to start and stop recording.
* Fixed possible bug when finishing the recording if user has specified a duration.
* When allocating buffer, do not zero it out, only touch all pages belonging to it to make sure all memory is mapped into physical memory before it is used by the realtime process. This avoids hogging the memory bus unnecessarily. The first 8 blocks are still zeroed out during initialization though, for the CPU cache. (Might create a less shocking startup.)
* Push back the '\n' character after reading it from stdin. For some unknown reason this seems to fix the occational problem of mixed up characters in the console when exiting (if only ncurses worked in non-fullscreen mode...).
* Only call sem_post if waiting. In extremely extreme situations, this avoids the sem value to overflow. Don't know what happens then.
* Reduced chance of cache misses in the buffering scheme.
* Replaced the two lockless fifo/lifo queues with three lockless ringbuffers. (CPUs without CAS2 instruction are now supported.)
* Only increase buffer by two blocks at the time between soundcard interrupts. This should decrease the chance of jack_capture hogging the memory bus for too long. (Which in theory can lower the chance of xruns in memory intensive realtime processes.)
* Changed buffering incrementing scheme. If, at any time, the amount of free buffer is smaller than the initial buffer size, increase the buffer a little bit. Only do this if the buffer is less than maxbuffer. Buffer is never decreased.
* Replaced all posix pthread_cond variables with posix semaphores. Far simpler code and much easier to understand.
* Increased default buffer time from 4 seconds to 8 seconds for mp3 files.
* Fixed correct autogenerated file suffix for mp3 files.
* Updated --advanced-help option and README file
* Added missing link libraries to the makefile. Caused by Fedora not supporting indirect linking anymore. Patch from Orcan Ogetbil (
* Applied patch from Orcan Ogetbil to fix 64 bit PowerPC compilation.

August 13: Ceres 0.55
* Compiles on Ubuntu 10, Debian/SID and Fedora, both 32 bit and 64 bit OS. Huge thanks to Menno, Hermann Brummer, Dave Phillips and Ebrahim Mayat!
* Various build improvements
* Fixed a couple of crashes when playing.

August 13:
Ceres 0.56
* Changed default resynthesis save type to IFFT.
* Small build fix.

August 15: KMid 2.4.0
* New kmid_part. It is a KPart implementing KMediaPlayer interfaces. This component can be integrated easily in any KDE program as a simple ReadOnlyPart; for instance Konqueror can play MIDI files with it.
* New DBus interfaces org.kde.KMid and org.kde.KMidPart
* libkmidbackend has some new methods, soversion bumped to 1.0.0
* New and updated translations
* Assigned default shortcuts to keyboard media keys
* Fix in vumeter widget: drawing errors and CPU usage
* Fixes in all backends for initial MIDI program changes
* Fix in ALSA sequencer backend: bug 242912 (requires Drumstick >= 0.4) Drumstick shared libraries v0.4.1 are recommended.

August 16: Frescobaldi 1.0.3
* Bugfixes:
- fix flicker on startup
- fix losing paths of hyphenation dictionaries on recent PyQt4 versions
- work-around crash on smart Point&Click introduced in KDE 4.5
* Improvements:
- Repeat last expression: don't append space
- Installation: LilyPond and gettext are not needed anymore when installing from tarball. (Prebuilt icons and translations are the prebuilt directory.)
* Translations:
- French updated by Valentin Villenave

August 18: NtEd 1.10.14
* persistent lyrics editor
* enable Muting of single voices
* enable A5 paper format
* Chinese GUI translation update. Thanks to Tian Shixiong.

August 18: jack_capture 0.9.55
* Don't hardcode meterbridge path during compilation. Thanks to Adrian Knoth for fix.
* Avoid killing random process at exit in case meterbridge couldn't be started.

August 19: MuseScore
* fix #6597: Close/reload crash on XP
* fix #6658: Natural in every keysig on mac PPC
* fix #6508: Crash removing instrument with volta
* fix #6706: Crash when inserting slurs from palette while editing text
* fix #6740: Autosave works only the first time
* fix #6479: Crash when closing score during playback
* fix #6624: Crash when deleting a tuplet from a MusicXML import
* fix #5667: Font problem (quarternote looks too big in text on Linux)
* fix #6620 : Crash on changing dynamics font size

Plugin framework
* fix cursor move on repeatmeasure in plugin framework
* fix instrument name containing flats for plugin framework

* fix #6505: Mixer is not refreshed when scores are switched
* fix mouse wheel handling for mixer elements
* fix repeat command (ctrl+r) for staves > 1

* New language: Asturian
* All other languages are updated from

August 19: Ecasound 2.7.2
* Manual gate (-gm) added. See ecasound(1) for docs.
* liboil now enabled by default if its development files are found when running configure.
* Bugfixes.

August 20: GNU Solfege 3.17.0
* Resize main window when selecting exercises to use the scrollbars less.
* The statistics page of exercises will show the 10 latest test results.
* Front page editor: option to search for strings in lesson file titles when selecting lesson files.
* Export Exercises to Audio Files: add checkbutton that names the generated audio files after the answer of the question.
* Spelling fixes by Ruslan Fedyarov and dougkerns
* Preferences window: Add gui to delete statistics.
* Works with Swig 2.0
* Bug fix to the statistics table, and documented the statistics tables in the user manual.
* Profile manager
* Lots of minor bug fixes and improvements to the code.

August 22: Calf
* LADSPA: do not delete singletons after .so is unloaded
* Rotary speaker: fix spelling of plugin class

August 24: Guitarix 0.11.1
* fix Bug Echo/Chorus/Delay/Slooper don't work
* add pre/post processing switch to all mono Effects

August 24: jack_capture 0.9.56
* Fix for possible error when trying to connect to a non-existing port.

August 27: phasex-dev Milestone 1 NEW!
* Added LASH support.
* Added sustain pedal support.
* Fixed behavior of NOTE_OFF in attack.
* Fixed system GTK theme.
* Added 'Panic' button.
* Fixed behavior of polyphony limit.
* Fixed ADSR calculation.
* Fixed chorus interpolation.
* 'Feedback' chorus and delay setting renamed to 'Feedback Mix'.
* Added DC blocking filter.
* Fixed MIDI learn for BPM parameter.
* Changed naming scheme of multiple instances.
* Added -n (--name) option to set name of PHASEX instance.

August 30: JACK 1.9.6
* Improve JackCoreAudioDriver and JackCoreAudioAdapter : when no devices are described, takes default input and output and aggregate them.
* Correct JackGraphManager::DeactivatePort.  
* Correct JackMachServerChannel::Execute : keep running even in error cases.  
* Raise JACK_PROTOCOL_VERSION number. Arnold Krille firewire patch.  
* Raise JACK_DRIVER_PARAM_STRING_MAX and JACK_PARAM_STRING_MAX to 127 otherwise some audio drivers cannot be loaded on OSX.  
* Fix some file header to have library side code use LGPL.  
* On Windows, now use TRE library for regexp (BSD license instead of GPL license).  
* ffado-portname-sync.patch from ticket #163 applied.  
* Remove call to exit in library code.  
* Make jack_connect/jack_disconnect wait for effective port connection/disconnection.  
* Add tests to validate intclient.h API.  
* On Linux, inter-process synchronization primitive switched to POSIX semaphore.  
* In JackCoreAudioDriver, move code called in MeasureCallback to be called once in IO thread.  
* David Garcia Garzon netone patch.  
* Fix from Fernando Lopez-Lezcano for compilation on fc13.  
* Fix JackPosixSemaphore::TimedWait : same behavior as JackPosixSemaphore::Wait regarding EINTR.  
* David Garcia Garzon unused_pkt_buf_field_jack2 netone patch.  
* Arnold Krille firewire snooping patch.  
* Jan Engelhardt patch for get_cycles on SPARC.  
* Adrian Knoth hurd.patch, kfreebsd-fix.patch and alpha_ia64-sigsegv.patch from ticket 177.  
* Adrian Knoth fix for linux cycle.h (ticket 188).  
* In JackCoreAudioDriver, fix an issue when no value is given for input.