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
On Sat, Mar 23, 2013 at 3:36 PM, Len Ovens <len(a)ovenwerks.net> wrote:
>
> On Sat, March 23, 2013 5:44 am, Ulrich-Lorenz Schlueter wrote:
> > Hello list,
> >
> > after a long long time I removed some ugly bugs from JackMixDesk.
> > Latest source package is available from:
> >
> >
> http://sourceforge.net/projects/jackmixdesk/files/jackmixdesk/jackmixdesk-0…
>
> Looks like an interesting app. ./configure gives me a list of "yes" and
> shows no errors, but I can't compile. Get some errors that seem to
> indicate missing packages:
> jackmixdesk-mixdesk.o: In function `jack_get_connects':
> /home/joe/software/jackmixdesk-0.3-r3/mixdesk.c:1023: undefined reference
> to `jack_port_connected'
> /home/joe/software/jackmixdesk-0.3-r3/mixdesk.c:1024: undefined reference
> to `jack_port_get_connections'
> /home/joe/software/jackmixdesk-0.3-r3/mixdesk.c:1033: undefined reference
> to `jack_port_connected'
>
> Perhaps configure is finding jackd2 and thinking it is fine to use the
> jackd1 api?
>
They share the same API.
You're making an error with your link step.
Last time i tried to make a roll with G-Town Church Bassdrum, but it
appears ugly. Did not try to humanize timing, but expecting it much
better with interpolation. May be, it is some hidden feature, which is
not used in most freeware gig and sfz banks?
I've been working with large lscp files, over a hundred .idfs for muse 2,
etc, for sometime now, and i'm pretty well knackered from manually creating
large monolithic instrument config files of some sort or another, for the
same sample library set, across apps.
I propose the following, and i'm wiling to put some money in someone's
pocket for this:
A simple app (CLI is ok but GUI based preferred) that:
1) automatically converts lscp files containing single or multiple midi
instrument maps into individual midnam files.
2) automatically converts muse2 .idf files into midnam files.
3) converts midnam files into muse2 .idf files
Obviously needs to work properly, and create correct ( auto app checked)
midnam and .idf files.
App needs to be opensource (obviously), and public, for those other poor
souls who have to struggle with large instrument files, particularly those
using large sample libs with copious articulations per instrument, and for
whom automation of these excruciating data processing tasks would save
massive amounts of time and effort.
Thanks, and if you're interested, contact me privately,
Alex Stone.
Hi all,
Time for another update for general consumption, minor changes done but
quite a few of them!
Nearly arbitrary list of changes from the changelog:
- Allow reading old drummaps for new style drumtracks
- Added metronome icon in main window
- Fixed moving events with keyboard in Drum editor
- Added theme support, Light, Dark and Ardour so far
- Added missing line draw shortcut (F) to drum editor.
- Added new french translation from Yann Collette
- Added: Pan and Zoom tools to editors. P + Z shortcuts. Added a Settings
item for alternate behaviour.
- Fixed: Pianoroll and Drum Editor 'Snap' boxes not remembering 1st or 3rd
columns.
- Fixed: Arranger 'Snap' was not stored or remembered.
- Fixed: Accelerator buttons shift/ctrl/alt for moving/copying/cloning /
restricting movement.
- Fixed: Shift key restricting movement: Ignore snap setting now.
- Fixed: Resize shift key ignore snap setting now.
- Fixed: Draw new item shift key ignore snap setting now.
- Fixed: Shift key was not snapping to vertical.
- Fixed: ALL 'Speaker' related playing of notes. Works with new notes,
moving notes, piano press etc.
- Fixed: ALL 'Speaker' related notes now send true note-offs instead of
zero-velocity note-ons.
- Fixed: Drum 'Cursor' mode was playing double notes.
- Fixed: New Drums 'Cursor' mode and instrument up/down movement was
broken, jumping all over the place.
- Added prebuilt PDF of manual (work in progress)
- Improved: Shortcut listings: Added Wave/Score categories. Re-categorized
several keys. Updated README.shortcuts
- Improved: Right-click menus expanded. Now also shows 'Tools' menu when
clicked on parts.
- Added choice of new metronome with different sounds and adjustable volume.
- Fixed gain adjustment with 'Other' choice in wave editor, it was reversed
For more information and additional changes see the full changelog:
http://lmuse.svn.sourceforge.net/viewvc/lmuse/trunk/muse2/ChangeLog?revisio…
Find the download at:
https://sourceforge.net/projects/lmuse/files/
MusE on!
The MusE Team
Hi all,
I once saw a helpful chart showing how latency
propagates through the JACK graph, through
the capture and playback ports of each
node.
Can anyone provide a link?
I want to make sure I understand correctly, that my app's
latency callback should be checking capture latency at the
input ports and setting playback latency on the output
ports.
Thanks,
Joel
--
Joel Roth
Hi All,
Just a note that I've extracted JNAJack (Java bindings for JACK) from
the Praxis LIVE repository, along with other elements of the
JAudioLibs code, and it's now on GitHub at
https://github.com/jaudiolibs Should make it easier for people to
work with (and contribute to!) the code.
Downloads and other facilities are still on the Google Code site at
http://code.google.com/p/java-audio-utils/ for now.
Best wishes,
Neil
--
Neil C Smith
Artist : Technologist : Adviser
http://neilcsmith.net
Praxis LIVE - open-source, graphical environment for rapid development
of intermedia performance tools, projections and interactive spaces -
http://code.google.com/p/praxis
OpenEye - specialist web solutions for the cultural, education,
charitable and local government sectors - http://openeye.info
Hi, I need some advice, clear up some confusion:
I noticed our app uses this pan formula:
vol_L = volume * (1.0 - pan);
vol_R = volume * (1.0 + pan);
where volume is the fader value, pan is the pan knob value
which ranges between -1.0 and 1.0, and vol_L and vol_R are the
factors to be applied to the data when sending a mono signal
to a stereo bus.
When pan is center, 100% of the signal is sent to L and R.
At pan extremities, the signal is boosted by 3dB.
But according to [1], we should be using a Pan Law [2],
where pan center is around 3dB to 6dB down and pan
extremities is full signal.
So I want to change how we mix mono -> stereo and use
true Pan Law. I could add a Pan Law selector, seems like it
might be useful for various studio acoustics.
Then I noticed we use the same formula above to apply 'balance'
(using the same pan knob) when sending a stereo signal to
a stereo bus.
But according to [3] we should be using a true balance control, not those
same pan factors above. And according to [1]:
"Note that mixers which have stereo input channels controlled by a single
pan pot are in fact using the balance control architecture in those channels,
not pan control."
So I want to change how we mix stereo -> stereo and use true balance.
But then I checked some other apps to see what they do.
In an unofficial test I noticed that QTractor seems to do the same thing,
that is, when pan is adjusted on a stereo track, one meter goes up while
the other goes down. RG seems not to have stereo meters and Ardour
I couldn't seem to make pan affect the meters, I will try some more.
My questions:
Is the pan formula above popular?
What is the consensus on stereo balance - use a Pan Law, being the
formula above or otherwise, or use a true balance?
What should I do in the remaining case sending a stereo signal to a mono bus?
If I am using a Pan Law as balance, the two signals will have already been
attenuated at pan center so I could simply sum the two channels together.
But if instead I use true balance, at center the two signals are 100%.
So should I attenuate the signals before summing them to a mono bus?
Currently as our pan formula above shows, there would be no attenuation.
Thanks.
Tim.
[1]
http://en.wikipedia.org/wiki/Panning_%28audio%29
[2]
http://en.wikipedia.org/wiki/Pan_law
[3]
http://www.rane.com/par-b.html#balance