On Friday 06 January 2012, you wrote:
> btw: is there a way to list available clients/ports from the api.
> I know that aconnect -i / -o does this, but is there a c/c++ function?
>
> Dave
The functions are: snd_seq_query_next_client() and snd_seq_query_next_port();
you need to loop calling these functions while they return a correct answer.
For instance, this is the relevant code in "aconnect.c" :
static void do_search_port(snd_seq_t *seq, int perm, action_func_t do_action)
{
snd_seq_client_info_t *cinfo;
snd_seq_port_info_t *pinfo;
int count;
snd_seq_client_info_alloca(&cinfo);
snd_seq_port_info_alloca(&pinfo);
snd_seq_client_info_set_client(cinfo, -1);
while (snd_seq_query_next_client(seq, cinfo) >= 0) {
/* reset query info */
snd_seq_port_info_set_client(pinfo,
snd_seq_client_info_get_client(cinfo));
snd_seq_port_info_set_port(pinfo, -1);
count = 0;
while (snd_seq_query_next_port(seq, pinfo) >= 0) {
if (check_permission(pinfo, perm)) {
do_action(seq, cinfo, pinfo, count);
count++;
}
}
}
}
See:
http://git.alsa-project.org/?p=alsa-utils.git;a=blob;f=seq/aconnect/aconnec…
I guess you already know the reference documentation site:
http://www.alsa-project.org/alsa-doc/alsa-lib/seq.html
Just for comparison, a similar enumeration using Drumstick looks like this:
QListIterator<PortInfo> it(m_Client->getAvailableOutputs());
while(it.hasNext()) {
PortInfo p = it.next();
cout << p.getClientName() << ":" << p.getPort();
}
See Drumstick's example "drumgrid":
http://drumstick.sourceforge.net/docs/drumgrid.cpp-example.html
Regards,
Pedro
Hi there,
Does anyone have Steve Harris' new email address? steve(a)plugin.org.uk
fails with "550 5.1.2 Bad destination system address".
Anyway, some of you who package or copied code from meterbridge may be
interested in this as well.
-=-=-=-=-
Hi Steve,
Haven't seen you around much on LAD. I hope this email finds you well.
Are you still maintaining meterbridge? I've stumbled over a bug in 0.9.2
The IEC scale is not continuous. Attached patch resolves the issue.
I don't have access to the IEC-268-18 specs, so I can't tell if the
patch is correct, but it does fix the discontinuity between -60db and
-50db. To make it obvious, here's the annotated iec_scale(float db):
if (db < -70.0f) {
def = 0.0f;
} else if (db < -60.0f) {
def = (db + 70.0f) * 0.25f; // 0.0 .. 2.5
} else if (db < -50.0f) {
// def = (db + 60.0f) * 0.5f + 5.0f; // 5.0 .. 10.0 // bug? v0.9.2
def = (db + 60.0f) * 0.5f + 2.5f; // 2.5 .. 7.5 // fix!
} else if (db < -40.0f) {
def = (db + 50.0f) * 0.75f + 7.5; // 7.5 .. 15.0
} else if (db < -30.0f) {
def = (db + 40.0f) * 1.5f + 15.0f; // 15.0 .. 30.0
} else if (db < -20.0f) {
def = (db + 30.0f) * 2.0f + 30.0f; // 30.0 .. 50.0
} else if (db < 0.0f) {
def = (db + 20.0f) * 2.5f + 50.0f; // 50.0 .. 100.0
} else {
def = 100.0f;
}
Furthermore, the DPM image has a couple of problems:
The markers at -10, -19, -20, -25, -30, -35, -55 are off by one pixel
(they need to be moved 1px down), the -45db marker is correct.
The marks for -40, and -50 are missing and it's easy to mistake the
-45db and -55db marks to correspond to the -40db, -50db annotations.
Last but not least, the minus-signs of all annotation does not align
with the marks and the font used for the annotation text is somewhat
blurry..
All fixed in attached image.
Cheers!
robin
Hi,
Petri-Foo is a sampler for linux using JACK. It was originally a fork of
the Specimen sampler project. A new version is now available to download
from sourceforge.
https://sourceforge.net/projects/petri-foo/files/petri-foo-0.1.4.tar.bz2
This release brings further cosmetic changes improving the overall look
of Petri-Foo. The fan sliders have gone, so it must be time to
mention the precision modifying shift and ctrl keypresses for the
sliders.
If you missed the 0.1.3 release, here's a quick rundown of the changes:
* migrated from autotools to cmake
* updated and slimmed-down PHAT replacement called Phin.
* mousewheel waveform zooming
* velocity range setting for patch
* auto-preview (with optional resampling) in sample selector dialog
* recoded deprecated gdk calls to use cairo.
* lots and lots of bug fixes i've long since forgotten about
Some say it's the successor to Specimen and that the two shouldn't
co-exist. All I know is it's called Petri-Foo.
http://petri-foo.sourceforge.net
Cheers,
James.
This is the Release of Lisalo 1.0
Grab it here, no installing required:
git clone git://github.com/nilsgey/Lisalo.git
Lisalo - Linux Sampler Loader
Linux Sampler Loader is a command line program that loads entire
directories of sample files or takes instructions from a meta .lsl file
with relative paths to samples.
This program exists because you can't share linuxsampler lscp files
or even move files around on your own disk. Lscp files only work with
absolute paths and are too low level anyway.
Now you can quickly and easily load sampled instruments without
even starting a GUI. The lsl files are very simple, see example.lsl,
and can be shipped around with your sfz sample package like the
Sonatina Symphonic Orchestra (lsl file already included in this release)
Version 1.0 Licensed under GPLv3 by Nils Gey, June 2012
Only dependencies are Python and Linuxsampler.
https://github.com/nilsgey/Lisalo
info(a)laborejo.org
irc.freenode.org #laborejo
Hi all,
I created this software in 2004, but I can't develop it anymore,
maintain it or even answer the mails I receive about it.
http://home.gna.org/fmithttp://gna.org/projects/fmit
I'm therefore looking for volunteer(s) to recover the project: manage
it, maintain it, develop it if motivated, etc.
The current state of the software is fairly good, I think. It has been
updated to Qt4 last year.
I think it's quite stable because most of the mails I receive from
users are about how to select the recording channel in their OS mixer
...
FMIT is accessible from Ubuntu repositories (universe) and was
accessible under Fedora but they removed it since I can't maintain it
anymore.
Please look at the website for more details and screenshots.
Besides the fact that I want it to stay open-source, I don't have
particular wish about its future (hmmm, stay simple and expandable
maybe).
So, if someone is interested, please contact me.
All the best,
Gilles
--
FORTH - ICS
Vasilika Vouton, P.O. Box 1385
GR 71110 Heraklion, Crete, Greece
Mobile: +30 6942 207403
Work: +30 2810 391580
Hi All,
A new build of Praxis LIVE makes its way into the light. Highlights
include new audio components and audio API improvements,
cross-platform video capture (yes, Linux has always been there!), and
live GLSL coding.
Website - http://code.google.com/p/praxis
Release notes - http://code.google.com/p/praxis/wiki/ReleaseNotes
Blog post - http://praxisintermedia.wordpress.com/2012/06/21/praxis-live-build120620/
Praxis is a Java-based modular framework for live creative play with
video, images, audio, and other media. Its primary focus is on the
easy development of generative and interactive media installations, as
well as live performance. Praxis LIVE is a graphical, patcher-style
interface for developing Praxis projects 'on the fly'. Praxis is
developed by UK Artist and Technologist Neil C Smith. It is partly
inspired by projects such as AudioMulch, Bidule and Isadora, and to a
lesser extent Pure Data and Processing; however, it is not intended to
be a clone of any of them.
Thanks for listening, best wishes,
Neil
--
Neil C Smith
Artist : Technologist : Adviser
http://neilcsmith.net
Praxis - open-source intermedia system for live creative play
http://code.google.com/p/praxis
OpenEye - specialist web solutions for the cultural, education,
charitable and local government sectors.
http://openeye.info
hi everyone!
thanks to the excellent pd documentation out there and lots of hand
holding by friendly pd gurus on this list and elsewhere, here's my
humble take at creating a theatre cue player with pd that does what i
need... all the heavy lifting is done by august black's excellent
readanysf~, thanks for making this tool available!
CueFrog is designed to be multi-instance capable, so you can create as
many decks as your machine can handle, and makes use of lots of
send/receive ports to simulate some kind of object-oriented
encapsulation stuff, based on my (limited) understanding of a
model/view/controller paradigm.
grab it:
http://stackingdwarves.net/public_stuff/software/CueFrog/CueFrog-0.0.2.tar.…
it's documented, so you should get it going in no time. i'm sure there
are many quirks there, and i found out it's very easy to create race
conditions in pd, so no warranties :)
comments and suggestions for improvements are most welcome.
i have a vbap-based panning automation in the works (which has already
been used live at a theatre festival), but the code is in
oh-my-good-tomorrow-is-dress-rehearsal shape, so forgive me for
withholding it another month or so.
and before you ask: frogs are cute. and when the director makes me jump,
i need tools that jump along :-D
best,
jörn
--
Jörn Nettingsmeier
Lortzingstr. 11, 45128 Essen, Tel. +49 177 7937487
Meister für Veranstaltungstechnik (Bühne/Studio)
Tonmeister VDT
http://stackingdwarves.net
Hi Everybody,
My name is Bart, this is my first post here, though some have met me on IRC.
Thanks for making Linux audio what it is!
I started using Linux in 2004 with DeMuDi, and have never looked back.
I'm trying to get my pcm_multi to work without with jackd.
Some of you seem to have got this down, with or without "ghost xruns".
Jörn seems to imply in the quoted thread that tschack is the answer, but
it gives me the most xruns of all jack implementations.
Who has got this working?
Who want to help me get to the bottom of this?
Google has been a great help so far, but I'm not sure what to try or what
to google anymore. :(
So far I've tried:
*jackdmp1.9.9
*jackd1 (1:0.121.3+20120418git75e3e20b-2)
*http://nedko.arnaudov.name/soft/jack/dbus/jack-audio-connection-kit-dbus-0.121.3.tar.gz
*https://github.com/adiknoth/tschack.git
All tested with the 3 kernels mentioned below.
The nedko jack with the avlinux kernel sometimes goes without xruns for
quite a long while, but sometimes gives lots of them.
I haven't found the pattern behind it yet.
My system is fully tuned, according to realTimeConfigQuickScan.pl
the only exceptions:
cat: /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor: No such file
or directory
Checking CPU Governors... CPU 0: '' CPU 1: '' CPU 2: '' CPU 3: '' - not good
I assume this is because my cpu's are running full speed.
Kernel with Real-Time Preemption... not found - not good
Checking if kernel system timer is set to 1000 hz... not found - not good
But I'm running 3.2.0-2-rt-686-pae #1 SMP PREEMPT RT Fri Jun 1 20:28:43
UTC 2012 i686 GNU/Linux.
I've also tried linux-image-3.0.32-avl-8 from avlinux, debian 3.2.0-2
vanilla.
Here is my .asoundrc:
https://github.com/StudioDotfiles/DotRepo/blob/master/asoundrc
I'm runing jack like this:
jackd -d alsa -r 44100 -p 4096 -d rme9636_64
The two rme9636 soundcards are on their own irq's, with priorities just
below the timers.
Jack with just one card works like a charm.
Is there any other info needed?
Thanks a lot,
Bart.
On 01/14/2011 11:12 PM, Jörn Nettingsmeier wrote:
> On 01/14/2011 10:39 PM, Jörn Nettingsmeier wrote:
>
>> i had it crash once when loading a really demanding session, but with
>> another average ardour project, it has now played fine and without
>> glitches for 10 minutes or so, while the xrun count goes through the roof.
>
> alas. i spoke to soon:
>
> after i added a 6x1 convolver and an ambdec instance
> jack2 bails out reproducibly after a couple minutes more, with a
> "floating point exception". so more testing.
>
> meanwhile, i'd like to know what these xruns are, and i wouldn't be too
> surprised if the eventual crash is actually related to the message
> buffer or some internal error counter wrapping...
jack2 gets nervous when i use a session with four jconvolver instances:
JackPosixMutex::Unlock res = 1
Unknown request 4294967295
jackd: ../common/JackGraphManager.cpp:45: void
Jack::JackGraphManager::AssertPort(jack_port_id_t): Assertion
`port_index < fPortMax' failed.
Aborted
the cpu is not maxed out, afaics.
tschack handles this scenario just fine, and it doesn't spew error
messages on the console. if i monitor it in qjackctl, the xrun count
increases at the usual rate, though.
btw: qjackctl becomes a major cpu burden in this pathological case.
lookes like it's the error messages. i've seen it at up to 40% of one core.
Here it goes.
Mostly a LV2 1.0.0 compliance release with some fixes from the stash
and fewer candies from the jar. On the darker/brighter side (your
choice) there's news on the LV2 atom(ic) fall-out now being officially
over. A new dawn has commenced, quite as every day follows every night
may I add.
Dang!
I'd better stop right here and save you all from that boring
trivialities. Let's go with the plain, interesting facts:
Qtractor 0.5.5 (foxtrot uniform) swings out!
Release highlights:
* LV2 Atom/MIDI support (NEW)
* LV2 Worker/Schedule support (NEW)
* LV2 Presets support (NEW)
* LV2 Time/position support (NEW)
* LV2 Programs/instrument support (NEW)
* MIDI plugin event timing on tempo changes (FIX)
* Loop-recording/takes audio sync (FIX)
* Quick start guide and user manual (NEW)
* Russian and Italian translations (NEW)
Website:
http://qtractor.sourceforge.net
Project page:
http://sourceforge.net/projects/qtractor
Downloads:
- source tarball:
http://downloads.sourceforge.net/qtractor/qtractor-0.5.5.tar.gz
- source package (openSUSE 12.1):
http://downloads.sourceforge.net/qtractor/qtractor-0.5.5-4.rncbc.suse121.sr…
- binary packages (openSUSE 12.1):
http://downloads.sourceforge.net/qtractor/qtractor-0.5.5-4.rncbc.suse121.i5…http://downloads.sourceforge.net/qtractor/qtractor-0.5.5-4.rncbc.suse121.x8…
- brand new (quick start guide &) user manual:
http://downloads.sourceforge.net/qtractor/qtractor-0.5.x-user-manual.pdf
Weblog (upstream support):
http://www.rncbc.org
License:
Qtractor is free, open-source software, distributed under the terms
of the GNU General Public License (GPL) version 2 or later.
Change-log:
- Auto-monitored MIDI tracks were missing their pass-through to their
respective MIDI output bus plugin chains, now fixed and letting any
multi-timbral instrument plugin to get a peek from auto-monitoring.
- New user option/preference to whether to open a plugin's editor
(GUI) by default, when available (cf. View/Options.../Plugins/Editor).
- Clicking and/or dragging for rubber-band selection on main
track-view canvas doesn't change the edit-head and -tail positions
anymore.
- Backward and Forward transport commands now have an additional stop
at first clip start point.
- LV2 Atom/MIDI buffering support is finally entering the scene; LV2
Worker/Schedule support is also included in a bold attempt to convey
non-MIDI event transfers between plugin and its UI.
- MIDI Clip editor (aka. piano-roll) and MIDI Tools fix: avoid note-on
events of zero velocity, which conventionally equates to a dangling
note-off event and dropped into oblivion sooner or later. There's no
more need for Shift/Ctrl keyboard modifier to change in one single
step all the MIDI events that are currently selected (now consistent
with drag-move).
- LV2 Presets support now entering effective operational status; a new
local option has been added (cf. View/Options.../Plugins/Paths/LV2
Presets directory; default is ~/.lv2).
- Dropped XInitThreads() head call as it was never useful but on those
early days of JUCE VST plugins.
- Italian (it) translation added (by Massimo Callegari, thanks).
- Clip fade-in/out dragging now follows snap-to-beat setting.
- Late modern eye-candy indulgence: alternate shaded stripes, on every
other bar as in a "zebra" background option for the main tracks and
MIDI clip editor views (cf. View/Snap/Zebra).
- LV2 Time/position information is now being supported through special
designated plugin input ports (after suggestion by Filipe Coelho aka.
falktx). Additionally, the time/position information report has been
corrected and complemented for VST plugins.
- Audio vs. MIDI time drift correction has been slightly improved
against rogue tempo changes across looping cycles.
- Honor tempo/timing on MIDI instrument plugins. Happy regression fix
on getting MIDI note-offs at looping ends back in business; all the
necessary bumming for MIDI plugins to play nice in face of tempo
changes and whenever playback is started from anywhere but the
beginning of the time-line (ie. frame zero); thanks to rvega aka.
Rafael Vega, for the heads-up).
- Audio clip wave-forms were being displayed in inverted phase (ie.
upside-down) all this time ever since day one. What a shame!
- LV2 Programs interface is getting initial experimental status, to
let LV2 instrument plugins get on par with the DSSI and VST crowd for
MIDI bank/program instrument inventory and selection support (a
sidetrack complot with Filipe Coelho aka. falktx, thanks:).
- Dropped the old but entirely useless LV2 URI-unmap feature, now
being superseded by official LV2 URID (un)mapper.
- Russian (ru) translation added (by Alexandre Prokoudine, thanks).
- SLV2 deprecation process started, effective now at configure time.
- Added include <unistd.h> to shut up gcc 4.7 build failures (patch by
Alessio Treglia, closing bug #3514794).
- Another approach avoiding recursive observer widget updates. Also
applies to mixer, monitor and track state buttons.
- Update to latest LV2 state extension (by David Robillard, thanks).
- Loop-recording/take number displayed on clip title, respectively.
- Make(ing) -jN parallel builds now available for the masses.
- A one buffer period slack on audio engine's loop turn-around logic
might just have fixed an illusive report on loop-recording/takes going
progressively out-of-sync, most notably when recording under large
audio buffer period sizes (>= 1024 frames/buffer).
- Editing MIDI while playback is rolling, doesn't mute the track any
more, adding a point to the live editing experience.
- Finer granularity for direct access parameter mouse wheel changes.
- Dropped a dumb optimization for short full-cached multiple
linked/ref-counted audio clips which were incidentally out-of-sync
after rewind/backward playback. Once again and uncertain to be the
last take on this, got fixed (probably related to some oddity reported
by Louigi Verona, thanks).
Enjoy!
--
rncbc aka. Rui Nuno Capela
Hi All,
>From what I can tell, it looks like the LV2 Atom Sequence specification
allows you to send events with arbitrary units for the timestamp.
I have a few questions about this:
1. How are we to know whether a particular unit uses the *double* field in
the timestamp union, or the *uint64_t *field in the timestamp union.
2. The specification says "The unit field is either a URID that described
an appropriate time stamp type, or may be 0 where a default stamp type is
known." In what circumstances would the timestamp be known? When can I
expect to see a zero in that field?
3. Are the timestamps absolute times? Or relative to the previous event?
Or relative to the start of the audio chunk? Does it depend on the units
used?
4. Why does the
documentation<http://lv2plug.in/doc/html/structLV2__Atom__Sequence__Body.html>show
|FRAMES |SUBFRMS| as the timestamp field? From what I can tell, there
is no unit which includes frames and subframes subdivided that way,
and the sampler
example </> just uses the full 64 bits as a frames field. Is this just a
relic from the old event port documentation? (the diagram seems familiar).
5. How are hosts/plugins supposed to deal with the multiplicity of units?
For example, suppose I'm a plugin or host that wants to receive MIDI data.
How am I supposed to know what timestamp unit to expect? Is there a
facility for converting between different units automatically? The only
extra information required to convert between any two time units would be
the bpm and sample rate. It would be rather annoying to have to implement
a bunch of unit conversion code in every host/plugin you write in order to
make sure it can handle any unit which is tossed at it.
Thanks,
Jeremy