Veel gebeurd

Een alleszeggende titel. Vorige week kennis gemaakt met iemand die bij mij om de hoek woont (en dan ook echt om de hoek) die een complete educatieve muziekomgeving onder Linux heeft gebouwd met behulp van JACK, mididings, QMidiRoute, QmidiNet, Qsynth en Bash scripts. Waanzinnig. En werken als een trein. Hele klassen kunnen via het netwerk met elkaar muziek maken, meespelen met backing tracks of gewoon lekker rommelen met diverse instrumenten. Heel bijzonder en je begrijpt wel dat ik heel graag wil meewerken aan het verder perfectioneren en professionaliseren van deze leeromgeving.

M’n Raspberry Pi’s lagen wat stof te happen maar daar is sinds een paar weken wel een einde aan gekomen. Werd eigenlijk getriggered door een post op de Jack-Devel mailinglist met een patch voor ARM platformpjes zoals de RPi. Een vergelijkbare patch was maanden geleden al een keer gepost maar is bijkans niet meer googlebaar dus aan mijn aandacht ontglipt. Door de patch op Jack-Devel kon ik weer verder als in JACK (zowel Jack1 als Jack2) draait prima op de RPi met deze patch. In eerste instantie kreeg ik de boel niet goed draaiende (vooral full-duplex kreeg ik niet voor elkaar) maar na me goed ingelezen te hebben heb ik mijn RPi zo weten te tweaken dat deze bruikbaar is voor real-time, low-latency audio. Afgelopen woensdag m’n bevindingen laten zien en horen op een Horus meeting en de RPi hield zich prima als virtuele gitaarversterker. En dat allemaal op een ontwikkelboardje van nog geen €30,-. Mijn bevindingen heb ik neergepend in de linuxaudio.org Wiki: http://wiki.linuxaudio.org/wiki/raspberrypi

Ook op mijn werk heb ik het erg druk. Heb me gestort op het WebRTC gebeuren en dat begint nu wel te lopen. Klanten zijn bijzonder geïnteresseerd in het videobelplatform dat we aan het ontwikkelen zijn en het werkt gewoon goed. Ook is het altijd fijn om nieuwe dingen te leren (WebRTC, WebSocket, STUN/TURN/ICE) of je meer te kunnen verdiepen in dingen waar je al wel wat van af wist maar die je nooit echt praktisch hebt hoeven toepassen (audio- en videocodecs, encrypten van datastromen, iptables). Ondertussen zijn we al weer verder aan het kijken naar een volgend project waarbij de focus ligt op router-achtige hardware en software, oftewel we gaan proberen zelf eenvoudige network appliances te gaan bouwen. Onze bureaus worden inmiddels bevolkt door RPi’s, MikroTik RouterBoards en PC Engines Alix boardjes. En die mag je dan onder de baas z’n tijd gaan zitten hacken. Hoe vet is dat. Vooral als het werkt en je met elkaar kunt bellen via een boardje met een 400MHz MIPS processor waar zelfgebouwde OpenWRT firmware op draait.

Oh ja, en maandag gaan we trouwen.

Veel gebeurd

De wederopstanding van PHASEX

PHASEX leeft weer! De oorspronkelijke ontwikkelaar heeft de draad weer opgepakt en een nieuwe release uitgebracht. Heb er nog niet uitgebreid naar kunnen kijken maar hij heeft de boel flink onder handen genomen. Uiteraard zijn de nodige bugs gefikst maar daarnaast is de functionaliteit van PHASEX flink uitgebreid: je kan nu meerdere parts tegelijkertijd gebruiken (dus geen losse instances meer), support voor JACK MIDI en JACK Transport en PHASEX kan nu zonder GUI gebruikt worden. Ook heeft de GUI een update gehad en zijn er de nodige filters toegevoegd en bestaande filters verbeterd.

Al met al goed nieuws, PHASEX is een erg goed klinkende synthesizer waar je echt heel veel uit kan halen. Als de ontwikkelaar dit alles nou ook nog in een LV2 plug-in zou kunnen stoppen…


PHASEX-0.14.97

PHASEX 0.14.97

De wederopstanding van PHASEX

Tijden veranderen

De vraag: Linux Audio 2012: Is Linux Audio moving forward?

De antwoorden:

I’d pose a different question:

Is OSX/Win Audio moving _backward_?

If OSX continues to move towards iOS, and Win continues to move towards Metro, and Thunderbolt stalls, and screens get smaller, and expansion ports get scarcer, then Linux might become the de-facto “pro” multimedia platform simply because the other choices have become too dumbed down.

Of course _most_ users will be happy with the ease and power of the tools that will be available on iOS/Metro. And _most_ users is where the money is, so Apple/Microsoft are chasing the right users. But there will be some serious users that need a powerful production system with big screens and big peripherals, and for these users, Linux might become the standard.

Ben Loftis – Harrison Consoles

… if you’re on the “inside” of Apple audio development its clear that their focus is really shifting away from “creative/professional audio” toward “consumer audio”. i’m talking about the OS infrastructure here, not the existing apps. now, traditionally, Apple has done an amazing job of creating technology that manages to serve the needs of both audiences, and they *may* manage to carry on doing that. but there are few signs from things going on in both iOS and the latest versions of OS X that this might not carry on. personally, i’d probably put my money on apple, but there is a real question what their (infrastructure) focus is going to be in a year or two.

Paul Davis – Ardour/JACK

Elders op het web ving ik naar aanleiding van dit topic een glimpje op van deze toekomst.

Prism Sound Lyra USB audio interface

Tijden veranderen

De beer is los

En hij heet KLANG – Kernel Level Audio Next Generation. Een medewerker van een universiteit In München vindt de hele Linux audio stack maar niks, al dat user space gedoe, dat moet allemaal in kernel space gebeuren. En op basis van OSS want ook de ALSA driver stack is natuurlijk helemaal crap. En omdat het allemaal fundamenteel verkeerd is gaat hij van de grond af iets nieuws bouwen. Dus hij legt een websiteje aan, doet een aankondiginkje en verwondert zich er vervolgens over dat het wordt opgepikt.

En als vervolgens Phoronix en zelfs Paul Davis (de belangrijkste man achter Ardour en JACK) er aandacht aan gaan besteden heeft datenwolf heel wat uit te leggen. Ik wens hem heel veel succes, zowel met KLANG als met het uitleggen waar hij nou mee bezig denkt te zijn.

De beer is los

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

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

Pneuman Remix

Vorder maar langzaam met de remix van Pneuman’s Move Along track. Komt vooral door Hydrogen. Goeie sampler, past perfect in m’n workflow maar de tekortkomingen van Hydrogen beginnen me enorm tegen te staan. De irritantste tekortkomingen:

  • JACK transport werkt niet goed, vooral niet icm seq24. Dit ligt hoogstwaarschijnlijk aan seq24 maar dan nog is het hoogst irritant dat Hydrogen vaak gewoon zwijgt zodra je JACK transport start.
  • Toevoegen van nieuwe of het wijzigen van instrumenten is een drama. Ik moet bij het toevoegen van een instrument iedere keer een extra instrument toevoegen anders wordt de poortnaam niet geüpdate. Wat betreft het wijzigen, dan wordt de poortnaam pas gewijzigd na het opnieuw opstarten van de audio engine maar kennelijk op zo’n manier dat JACK er niks mee kan en Hydrogen geen geluid produceert via de hernoemde poorten. Alleen een herstart brengt soelaas maar hoe onhandig is dat.
  • Hydrogen crasht vaak. Vooral met het toevoegen of verwijderen van instruments en als JACK transport loopt kun je maar het beste helemaal niet aan Hydrogen zitten.
  • De sample-editor is fantastisch maar produceert wel ontzettend veel xruns, vooral als je intensief met rubberband aan de slag gaat.

Misschien moet ik de 0.9.6 ontwikkelaarsversie maar eens proberen. De versie die ik nu gebruik beperkt me enorm in m’n productiviteit. En ik heb al niet zo gek veel vrije tijd. Hydrogen is niet de enige applicatie die dwars ligt trouwens. Qtractor knalt er ook regelmatig uit wat waarschijnlijk komt door buggy plug-ins. Ook kan ik de nieuwste versie niet gebruiken omdat de verbeterde VST support iets heeft veranderd aan Qtractor waardoor de MDA JX10 VSTi plug-in die ik gebruik totaal anders klinkt.

Ok, dat is er uit. Heb nog wel wat kunnen doen, heb in ieder geval iets van een coupletje:

Pneuman Remix

Cannot deliver port registration request

M’n Pneuman remix sessie wilde niet meer opstarten, alles deed raar, Qtractor segfaulde, Hydrogen klapte er tijdens het opstarten uit. En ik kon de oorzaak maar niet traceren. Dus dan ga je alles maar één voor één troubleshooten. Uiteindelijk spuugde Hydrogen de volgende melding uit:

Cannot deliver port registration request

Oftewel, Hydrogen vraagt Jack poortjes aan maar krijgt van Jack nul op het orkest. Deze melding nog nooit eerder gezien en Google bracht me ook niet verder. Toch maar even in QjackCtl m’n Jack setup gecheckt. Hmmmm, Port Maximum staat op 256, wat nu als ik deze op 512 zet? Kan het me nauwelijks voorstellen dat ik al zoveel poorten in gebruik heb maar baat het niet dan schaadt het niet. Je raadt het al, sessie start weer moeiteloos op en ik kan weer verder.

Omdat ik toch benieuwd was hoeveel poorten ik nou in gebuik heb met deze sessie heb ik ze even geteld met jack_lsp | wc -l De uitkomst? 258. 258 Jack poortjes in gebuik, net 2 meer dan de Port Maximum van 256 die ik voorheen altijd gebruikte. En het worden er gestaag meer. Gelukkig ben ik gek op spaghetti, zowel analoog als digitaal.

Cannot deliver port registration request

Flux

  • Aanbieding geaccepteerd voor een nieuwe baan. Oftewel, word een Linux beheerder. Dat wil ik al sinds ik in de automatisering zit dus lijkt me een goeie stap.
  • Meissie is weer zwanger. Tweede kiddo wordt verwacht rond 19 februari.
  • Eerste kiddo kan inmiddels lopen en breekt de boel af, zichzelf niet ontziend.
  • Ben druk bezig met een nieuwe remix en ben erachter gekomen dat ondanks de bugs Hydrogen echt een vette sampler is. Pitchen, stretchen, werkt als een speer. Voor deze track gebruik ik ook voor het eerst Zita AT1 en heb bij het maken heb ik de Calf Saturator ontdekt. Heb ook een goeie drums samplepack gevonden. Wordt hopelijk een vette track. Prehear onderaan.
  • Na een korte flirt met Jack2 gebruik ik weer good ol’ Jack1. Ook heb ik de upgrades van libraw1394 en libffado2 teruggedraaid. Systeem is weer stabieler nu.

Flux