TclJACK is a Tcl C extension I've been working on for interacting with a JACK audio server via its libjack interface. It's my first attempt at writing a C extension, and is hardly polished or well-written, but it exists and I've found it useful.
% # Basic setup: % package require TclJACK 0.1 % jack register tcljack: JACK sampling frequency changed to 44100 Hz. tcljack: JACK buffer size changed to 256. % # Basic info: % jack samplerate 44100 % jack cpuload 1.6519612074 % # Port information: % jack ports system:playback_1 system:playback_2 tcljack:input tcljack:midi_input {MPlayer [3182]:out_0} {MPlayer [3182]:out_1} % foreach port [jack ports] {puts "$port: [jack porttype $port], [jack portflags $port]"} system:playback_1: 32 bit float mono audio, input physical terminal system:playback_2: 32 bit float mono audio, input physical terminal tcljack:input: 32 bit float mono audio, input tcljack:midi_input: 8 bit raw midi, input MPlayer [3182]:out_0: 32 bit float mono audio, output MPlayer [3182]:out_1: 32 bit float mono audio, output % # You can analyse sound levels via TclJACK's audio input. % jack connect {MPlayer [3182]:out_0} tcljack:input % jack meter 0.2430237382650375 0.1043709889054298 0.0000897496938705 -0.0210323482751846 % # Output values are: abs peak, numeric RMS (cf. AES-17!), abs trough (smallest non-zero value), and DC offset (average) for the window (simply the last buffer processed). % # Transport control uses sample frames for positioning, but you can easily derive more user-friendly representations. % jack timecode 0 % jack transport start % jack timecode 172800 % jack transport stop % jack transport locate 1000000 % jack timecode 1000000 % jack deregister
The git repository includes JACKManager, a compact Tcl/Tk-based control panel for JACK that uses TclJACK. I wanted something like QJackCtl that was a bit more compact and could be docked away into a statusbar or dock so it was always visible and accessible. I also found the conventional way of drawing patch connections as lines or splines difficult to read with more than a few connections, so have started implementing a matrix patchbay window for these.
lm2015-01-08 : Thanks for the work ! Do you thing at the end it could be possible to write a software like , say , Live !, Cubase or LMMS ? It seems your extension can record MIDI, audio (with gain management), but could it playback several tracks at the same time ? And a naive question : what about VST/VSTi plugins ?