Yoshimi 0.060.12

De goeie patch gevonden voor de keyshift/microtonal bug en gelijk 0.060.12 gereleased. Heb ook beide git branches geüpdate, m’n eerste kennismaking met git op het gebied van versiebeheer. De komende tijd wil ik wat meer wegwijs worden in de master branch, dus eigenlijk de 0.062.x branch. Daar werk ik eigenlijk nooit mee terwijl Cal daar wel wat hele gave dingen heeft in gestopt, zoals het gebruik van sqlite voor de instrument banks.

Yoshimi 0.060.12

Een maandje met Lubuntu

Werk nu ruim een maand met Lubuntu 11.10 en red me er prima mee. Vooral de Openbox window manager bevalt me enorm. Openbox is snel, ziet er goed uit en is bovenal zeer goed te configureren. Ik gebruik Openbox nu als een quasi-tiling WM en kan applicaties laten openen en plaatsen (met behulp van toetscombinaties) op de desktop en monitor waar ik ze wil hebben.


http://lxde.org/

Maar Lubuntu (gebaseerd op LXDE) heeft ook zo z’n onhebbelijkheden en tekortkomingen. De standaard file manager van LXDE, pcmanfm, is best wel buggy, heeft moeite met fuse en cifs shares en ik kan niet per directory de sortering en views instellen. In plaats van de standaard terminal emulator, lxterminal, gebruik ik inmiddels rxvt-unicode (urxvt) omdat lxterminal geen UTF-8 karakters aankan. Lubuntu installeert geen PulseAudio mee en persoonlijk vind ik dat binnen een desktopomgeving eigenlijk onontbeerlijk. En ik gebruik geen compositing, krijg xcompmgr niet aan de praat en wil geen compiz gebruiken, dus geen gnome-do en heb daarom wbar als menubalk ingesteld. wbar is echter niet gemaakt voor dual head setups (twee monitoren) dus no way dat ik wbar mooi in het midden krijg van mijn eerste scherm.

Een maandje met Lubuntu

De toekomst van JACK

Paul Davis heeft de knuppel in het hoenderhok gegooid, even afgewacht en vervolgens aangegeven welke kant hij het graag op zou willen zien gaan.

This is my list of fundamental requirements for the next stage of JACK:

* the JACK 1.0 API must be defined first
* it must clearly, unambiguously and incontrovertibly be the successor
to Jack1 and Jack2
     – this probably means that it must emerge relatively quickly
once/if work begins on it
* it cannot assume that Stephane will stop working on Jack2 or that
myself will stop working on Jack1, or that anybody else will stop
      working on anything else at all BUT it hopefully will lead to a
union of efforts.
* it must recognize that neither Jack1 nor Jack2 are likely to just
“die”, so any plans must include them to some extent.
* it must provide a single soname (ABI, effectively) that identifies
any implementation and can be used by packagers and app developers
* every feature of Jack2 and Jack1 that people agree is worth
retaining should be available
* it must not increase and should preferably decrease replicated
developer effort
* it must be API and ABI compatible with current JACK releases
* it must run on Windows, OS X and Linux and preferably Solaris and
the BSD family
* it should make possible end-user features that are agreed to be important

This is what I think the future looks like:

Features

    C API/ABI
    C++ implementation
    synchronous mode (server waits for all clients)
    asynchronous mode (slow clients have no impact)
          – possible to avoid zombification, always
    parallel graph execution
    click-free connection/disconnection
    full memory locking when platform supports it
    memory use for ports proportional to number of ports
    no fixed limit on number of ports
    2 thread execution in libjack (from Jack2; one for process, one
for other callbacks)
    multiple device support handled by server (from Jack2, but with
the quality of alsa_in/alsa_out)
    full control protocol
    full support for device sharing with PulseAudio
    realtime device switching (without stopping/restarting server)

Desirable features to be merged from outside JACK “core”

   1 streaming network protocol, for LAN and WAN use, with zeroconf
discovery or similar
   bridges/routers for platform specific APIs (ALSA (pcm & MIDI),
CoreAudio, CoreMIDI, winMIDI, ASIO, other?)
   control protocol access from (at least) D-Bus, perhaps others
       – probably via helper components; not built into server but
possibly loaded by it.

Development Prerequisites

  build system: waf
  source code management: git
  single header file tree, for use by jack1, jack2 and anything else
  single tool dir tree, for use by jack1, jack2 and anything else
  **proposal** use Boost widely to accelerate development and leverage existing
      work.

User Interface

  single session manager app that can also be used to start/stop/configure JACK
  existing control apps (qjackctl, patchage, etc) continue to be options

Het hele draadje kun je volgen via Gmane. Zou fantastisch zijn als er wat constructiefs voort zou komen uit de discussie. Mijn zegen heeft ie!

De toekomst van JACK

Realtime patchset zo goed als stabiel?

Het ziet er naar uit dat de realtime patchset voor de 3.0 kernel zo’n beetje uitontwikkeld is. Gisteren is 3.0.8-rt22 gereleased en het aantal fixes is minimaal. Ook geeft de hoofdontwikkelaar aan verder te willen gaan met 3.2 zodra de 3.0 patchset echt goed stabiel is. Binnenkort zelf maar eens een 3.0 realtime kernel brouwen voor mijn Oneiric installatie. Ja, heb 11.10 geïnstalleerd op m’n notebook en ook al is Unity waarschijnlijk niet echt bruikbaar voor een Linux audio systeem was mijn eerste indruk positief (en mijn meissie was helemaal enthousiast, die wilde gelijk ook zo’n zijbalk). Op m’n nieuwe werkplek heb ik het inmiddels ook geïnstalleerd, tenminste, heb na een minimale install het lubuntu-desktop pakket erop gezet. Heb een paar keer naar AVLinux gekeken en vond dat er erg goed en werkbaar uitzien dus draai nu ook een LXDE desktop op het werk en vooralsnog bevalt het prima.

3.0.8-rt22
Realtime patchset zo goed als stabiel?

Gaat FFADO eruit?

Als het echt wat gaat worden met de ALSA firewire-kernel-streaming driver (aka Fireworks driver) dan kun je straks wellicht zonder extra drivers te hoeven installeren je FireWire geluidskaart gebruiken. Aan het FFADO front gebeurt niet zo gek veel, op wat echt grote bugs na, dus het zou me niet verbazen als deze ALSA driver het stokje op de lange termijn over gaat nemen. De oorspronkelijke git branch is recentelijk al gemerged met een ‘private’ ALSA git branch dus wie weet wordt de driver wel onderdeel van de ALSA driver stack.

Gaat FFADO eruit?

Loomer Cumulus

Het aantal aanbieders van commerciële plug-ins voor Linux is klein. Heel klein. Het zijn er eigenlijk maar vier, Loomer, LinuxDSP, Pianoteq en DiscoDSP. Daar staat tegenover dat de beschikbare plug-ins van hoge kwaliteit zijn en dat vooral Loomer en LinuxDSP niet onwelwillend staan tegenover verzoeken, vragen en eventuele bugreports vanuit de community. Voor die kwaliteit en servicegerichtheid betaal je wel wat maar alle drie de aanbieders hebben demo’s beschikbaar en Loomer heeft nu ook een magware plug-in uitgebracht, Loomer Cumulus.

De plug-in, beschikbaar als 32 en 64 bits LinuxVST en standalone JACK applicatie, staat op de DVD die bij het blad Computer Music zit. Niet echt freeware dus, je moet het tijdschrift wel eerst aanschaffen, maar Cumulus is zeker de moeite waard om eens uit te proberen. Het is, naast Loomer’s eigen Sequent, de enige goed werkende plug-in voor Linux waarmee je samples kan laden en deze realtime kan bewerken (DiscoDSP’s HighLife is een specifieke sampler maar werkt niet goed). De standalone applicatie werkt prima, met de LinuxVST plug-in heb ik nog wat problemen aangezien Qtractor wat moeite heeft met deze plug-in. Ardour 3, dat inmiddels ook ondersteuning heeft voor LinuxVST’s, doet het beter maar waarschijnlijk komt Cumulus het beste tot zijn recht in software als Renoise.

Het is goed om te zien dat een blad als Computer Music Linux als audio platform serieus begint te nemen. Niet alleen staan er Linux binaries op de DVD maar ook staat er een positieve review van Harrison Mixbus 2 in het laatste nummer van het magazine zelf en staan er Linux demo’s van Mixbus en energyXT op de DVD.

Loomer Cumulus

Nog meer mididings

Mididings script voor 29 oktober is klaar:

#!/usr/bin/python

from mididings import *
from mididings.extra import *

config(
    backend='jack',
    client_name='sodap-live',
    data_offset=0,
)

run(
    Filter(PROGRAM) >> [
        [
            ProgramFilter(0) >> NoteOn(64,50),
            ProgramFilter(7) >> NoteOn(69,86),
            ProgramFilter(0) >> NoteOn(72,60),
            ProgramFilter(1) >> NoteOn(74,62),
            ProgramFilter(2) >> NoteOn(76,64),
            ProgramFilter(3) >> NoteOn(71,30),
            ProgramFilter(7) >> NoteOn(77,88),
            ProgramFilter(8) >> NoteOn(79,96),
            ProgramFilter(9) >> NoteOn(81,84),
        ] >>
        LatchNotes() >> [
            KeyFilter(64) % NoteOff(69,0),
            KeyFilter(69) % NoteOff(64,0),
        ],
        ProgramFilter(4) >> Panic(),
        ProgramFilter(10) >>
        Channel(2) >>
        NoteOn(36,64),
    ]
)

Met dit script kan ik nu de strijkers spelen in Soda P – Icon of your Time en heb een Vibraslap sample van Freesound.org in een soundfontje gezet met Swami zodat ik deze met de FluidSynth DSSI plug-in ook vanuit Qtractor kan triggeren met behulp van de Boss FC-50. De strijkers gaan via het eerste paralelle ‘blok’ waarin Program Changes worden omgezet in Note Ons, daarna gaan ze door de LatchNotes Unit en daarna worden in een genest parallel blok nog twee Note Offs gedefinieerd. Stuurt de FC-50 Program Change 4 uit dan worden alle noten uitgezet (‘Panic’), bij Program Change 10 stuurt mididings een MIDI noot 36 op MIDI kanaal 2 naar Qtractor voor de Vibraslap. Het config deel aan het begin van het script vertelt mididings dat er JACK MIDI poorten aangemaakt moeten worden met als naam ‘sodap-live’. data_offset=0 is nodig omdat de FC-50 bij 0 begint met tellen en niet bij 1.

Nog meer mididings

Boss FC-50 en mididings

De Boss FC-50 doet alleen aan MIDI Program Changes en wat Control Changes. Maar ik wil er noten mee kunnen spelen. Dat zou op zich kunnen met QMidiRoute maar het mooiste zou zijn als ik ook Note Off events zou kunnen genereren, of nog beter, als een volgende noot de vorige af zou kunnen kappen. mididings heeft deze functionaliteit en heb een scriptje gemaakt dat precies doet wat ik wil:

#!/usr/bin/python

from mididings import *
from mididings.extra import *

run(
    Filter(PROGRAM) >>
    NoteOn(EVENT_VALUE,100) >>
    Transpose(36) >>
    LatchNotes(),
)

Wat dit mididings scriptje doet is de Program Changes eruit filteren, deze omzetten naar Note On events, de gegenereerde noten 3 octaven omhoog gooien en met de LatchNotes Unit ‘latch’ je de noten (je laat ze aanhouden) en zet je elke vorige noot uit bij een nieuwe noot. Dit scriptje maakt van de FC-50 een mooi footkeyboardje.

mididings kun je vinden in de lucid-unstable repository van Tango Studio.

Boss FC-50 en mididings