Re: [LAD] jack session compatible applications?

2011-09-26 Thread thijs van severen
how about Yoshimi, AMsynth, Ghostess ?
i know for a fact that these apps support JS, but i'm not involved in the
development so it's probably not up to me to add them to the list (+ i'm not
sure in what version JS was introduced)

grtz
Thijs


2011/9/22 Nick Copeland nickycopel...@hotmail.com

   Date: Thu, 22 Sep 2011 11:36:34 +0200
  From: ro...@gareus.org

  On 09/22/2011 10:22 AM, m.wolkst...@gmx.de wrote:
   Am Sat, 17 Sep 2011 19:29:32 +0200
  upgraded (added xjadeo).
 
 Added Bristol = 0.60.6


 ## apps supporting jack-session (09/22/2011) ##
 # sorted by name

  * ardour 3 (jack session participant)
  * bristol = 0.60.6 (jack session participant)

  * guitarix
  * gxtuner
  * hydrogen0.9.6svnHEAD (jack session participant)
  * jass (jack session participant)
  * qjackctl = 0.3.7 (as jack-session manager)
  * qtractor = 0.4.6 (as jack-session participant)
  * xjadeo = 0.6.1 (jack session participant)



 ___
 Linux-audio-dev mailing list
 Linux-audio-dev@lists.linuxaudio.org
 http://lists.linuxaudio.org/listinfo/linux-audio-dev




-- 

follow me on my Audio  Linux blog http://audio-and-linux.blogspot.com/ !
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] jack session compatible applications?

2011-09-26 Thread Jeremy Jongepier
On 09/26/2011 09:21 AM, thijs van severen wrote:
 how about Yoshimi, AMsynth, Ghostess ?

Yoshimi: since 0.060. amSynth 1.3: the 1.3 beta's have JS support.

Best,

Jeremy
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] AMS to Ingen: VC to PCM

2011-09-26 Thread Fons Adriaensen
On Sun, Sep 25, 2011 at 06:20:22PM -0400, David Robillard wrote:
 
  In particular, synth plugins (VCOs, VCFs, etc.) are fundamentally
  different from general audio processing ones (EQ, dynamics, etc.).
  This doesn't exclude the possibility that some may be useful in
  both contexts.
 
 Yes, but many, if not most, are usable in both contexts. Filters of any
 variety are the best examples.

I'd contest the 'most'. Can you give any more examples ?
For filters, only 'static' ones (only GUI controls, same
processing on all channels or voices) could be used in
both contexts. Once any parameter becomes per voice and
'voltage controlled' the similarity ends.

And even the purely static ones you'd want to schedule
differently. On a mixer you typically have a lot of
channel strips, each of them in most cases a linear
chain of processing units. It makes sense to keep the
elements of such chains together and schedule them on
the same worker thread. In a polyphonic setting voices
are independent, typical patches are not linear, and
it makes much more sense to schedule per voice. 

A universal plugin standard should support these 
different modes, which means separating common and
per voice/channel parts. Even if it does I would not
expect any particular plugin to support both modes.
You can probably get a better plugin by designing it
for a specific application. 

 A tricky one no one has yet tackled (anywhere) AFAIK.

Because if you start to analyse these things (and
there are many more aspects to it) it becomes clear
that current plugin standards completely ignore all
of this, they get in the way rather than provide the
necessary hooks, and you better start from zero.

Just consider the following list:

- 'Voltage control'
- MIDI control
- OSC control
- Save/restore settings
- Automation

Traditionally a host will try to do any of them
using only the set of 'control ports' exposed by
a plugin, or by hooking into the GUI - DSP
communication if the plugin has its own GUI.
But the requirements for each of these are quite
different and usually in conflict.

There is much more to it than some metadata.

 I think there is more overlap between these cases than this implies, or
 at least can be.  A polyphonic synth *could* have a very large portion
 of the processing time be common shared data.

As long as voices are independent there isn't much to share
except e.g. big lookup tables as used in some oscillators.
Even if the host replicates the plugin for each voice (which
it could do) you'd want the instances to share such data.
Which again requires some support from the plugin standard.  

There is another thing missing in current synthesis hosts
(AMS, and AFAIK also Ingen): an explicit definition of the
point where a polyphonic patch mixes its voices into a single
audio signal. Some processing should be done after this point,
e.g. reverb and some other effects. So if you do this in a 
plugin, it becomes 'polyphonic' at one side, and 'multichannel'
at the other. Some more metadata required...


Ciao,

-- 
FA

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] jack session compatible applications?

2011-09-26 Thread James Morris
On 26 September 2011 08:43, Jeremy Jongepier jer...@autostatic.com wrote:
 On 09/26/2011 09:21 AM, thijs van severen wrote:
 how about Yoshimi, AMsynth, Ghostess ?

 Yoshimi: since 0.060. amSynth 1.3: the 1.3 beta's have JS support.

BTW, I've just created an Arch Linux AUR PKGBUILD for amsynth-svn:

https://aur.archlinux.org/packages.php?ID=52689

It's my first PKGBUILD, and is based on a combination of amsynth and
aqualung-svn PKGBUILDS. Haven't read docs.

Cheers,
James.
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] LV2 CV Port extension (WAS: AMS to Ingen: VC to PCM)

2011-09-26 Thread Stefano D'Angelo
2011/9/26 David Robillard d...@drobilla.net:
 Here is a quick extension for CV Ports, i.e. audio ports with control
 semantics:

 http://lv2plug.in/ns/ext/cv-port/

Argh sorry for not having followed the discussion when it took
place, but I have to say I really dislike this extension.

The problem is that it can easily go against the graceful degrading
configuration concept of LV2. E.g., suppose writing a varispeed
plugin that takes the amount of delay as a control input - you will
end up writing two versions, one using CV ports and another using
normal control ports, if you want to support both kinds of hosts.

IMO it could be better done like this: cv:CVPort to be a subclass of
lv2:ControlPort and a feature URI to be defined.

Stefano
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] AMS to Ingen: VC to PCM

2011-09-26 Thread David Robillard

On 26/09/11 05:08 AM, Fons Adriaensen wrote:

On Sun, Sep 25, 2011 at 06:20:22PM -0400, David Robillard wrote:


In particular, synth plugins (VCOs, VCFs, etc.) are fundamentally
different from general audio processing ones (EQ, dynamics, etc.).
This doesn't exclude the possibility that some may be useful in
both contexts.

Yes, but many, if not most, are usable in both contexts. Filters of any
variety are the best examples.

I'd contest the 'most'. Can you give any more examples ?
For filters, only 'static' ones (only GUI controls, same
processing on all channels or voices) could be used in
both contexts. Once any parameter becomes per voice and
'voltage controlled' the similarity ends.
I am not considering per voice at all since we don't have that 
technology anyway.


Once any parameter becomes 'voltage controlled'...

It's still a parameter a user might want to set manually if it's not 
being voltage controlled, and it's still a parameter that should be 
presented sensibly in a non-modular host like a DAW or effects rack.



Because if you start to analyse these things (and
there are many more aspects to it) it becomes clear
that current plugin standards completely ignore all
of this, they get in the way rather than provide the
necessary hooks, and you better start from zero.

Just consider the following list:

- 'Voltage control'
- MIDI control
- OSC control
- Save/restore settings
- Automation

Traditionally a host will try to do any of them
using only the set of 'control ports' exposed by
a plugin, or by hooking into the GUI-  DSP
communication if the plugin has its own GUI.
But the requirements for each of these are quite
different and usually in conflict.
MIDI and OSC are more or less logistically equivalent. There are only 
really two fundamentally different things here with respect to how the 
plugin itself works: control via messages (MIDI/OSC) and control via 
signals (voltage control).



I think there is more overlap between these cases than this implies, or
at least can be.  A polyphonic synth *could* have a very large portion
of the processing time be common shared data.

As long as voices are independent there isn't much to share
except e.g. big lookup tables as used in some oscillators.
Even if the host replicates the plugin for each voice (which
it could do) you'd want the instances to share such data.
Which again requires some support from the plugin standard.

Right.


There is another thing missing in current synthesis hosts
(AMS, and AFAIK also Ingen): an explicit definition of the
point where a polyphonic patch mixes its voices into a single
audio signal. Some processing should be done after this point,
e.g. reverb and some other effects. So if you do this in a
plugin, it becomes 'polyphonic' at one side, and 'multichannel'
at the other. Some more metadata required...


Ingen allows the user to set each module as either polyphonic or not. 
Mixing down is done wherever necessary (i.e. wherever a poly output is 
connected to a mono input).  I think maybe this is a bit more fine 
grained than is useful though, and have considered having a single 
well-defined (internal) module that mixes down as you've described, or 
maybe just not allowing poly and mono in a single patch at all... Making 
sure things like reverb etc. are put after the polyphonic stuff is a 
user decision in either case, though.


With respect to plugins, supporting poly/multichannel would inherently 
be a per-port thing, i.e. specific port(s) would be labeled as 
polyphonic, or multi-channel, so I don't think such a plugin would cause 
any trouble.


-dr


Ciao,



___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] LV2 CV Port extension (WAS: AMS to Ingen: VC to PCM)

2011-09-26 Thread David Robillard

On 26/09/11 06:22 AM, Stefano D'Angelo wrote:

2011/9/26 David Robillardd...@drobilla.net:

Here is a quick extension for CV Ports, i.e. audio ports with control
semantics:

http://lv2plug.in/ns/ext/cv-port/

Argh sorry for not having followed the discussion when it took
place, but I have to say I really dislike this extension.


Meh, no big deal, it's just a draft. Those big red letters aren't for 
nothing. :)



The problem is that it can easily go against the graceful degrading
configuration concept of LV2. E.g., suppose writing a varispeed
plugin that takes the amount of delay as a control input - you will
end up writing two versions, one using CV ports and another using
normal control ports, if you want to support both kinds of hosts.


or just don't, and expect hosts to implement this trivial extension.  
Backwards compatibility would be nice though...



IMO it could be better done like this: cv:CVPort to be a subclass of
lv2:ControlPort and a feature URI to be defined.


I suppose this could work, since theoretically the port is still 
connected to a buffer with a single float as lv2:ControlPort dictates.  
Subclass is academic since most hosts don't care anyway, the port would 
have to literally have both types listed.  The only way for this to be 
feasible is if the host supports said feature, it guarantees that such 
ports will ALWAYS be connected to a full audio-rate buffer (otherwise 
you need some mechanism to say which it's connected to and things get 
too complex). This is slightly more complex, but not too bad, and only 
complex for hosts that support CV... good idea.


pedantry
It's debatable whether or not this violates the spec:

Hosts that do not support a specific port class MUST NOT instantiate 
the plugin, unless that port has the connectionOptional property set


This is ambiguous. We might want to reword that slightly in the next 
revision to explicitly state that hosts can instantiate if they 
understand *some subset* of the port types that describes a port type 
they support, i.e. unknown additional types can be ignored. This implies 
new port types can't modify the definition of others, which is good and 
should be explicit anyway.

/pedantry

-dr

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] AMS to Ingen: VC to PCM

2011-09-26 Thread Aurélien Leblond
On Sun, Sep 25, 2011 at 10:01 PM, David Robillard d...@drobilla.net wrote:
 On Sun, 2011-09-25 at 14:28 +0100, Aurélien Leblond wrote:
 1. Audio in/out ports. These are just blocks of samples, same
    as e.g. Jack buffers. Some call this 'PCM' but that is a
    misnomer.
 
 2. Control in/out ports. These are technically identical to
    audio ports (full sample rate), but the signals carried
    on them are normally not meant to be audio. How they are
    interpreted depends on the module and the particular port.
    Frequency control inputs can be linear or log, in the latter
    case that means 1/octave. Gain controls can be linear or log,
    there is AFAIK no fixed conversion factor for the latter. For
    example the VCA module uses 80dB/1 in exponential mode, but
    other gain controls may be different.
 
    Control ports are audio rate, but most modules/plugins subsample
    some or most of them. They either just use the first value in a
    block, or recompute internal paramters based on the last value
    in a block and then interpolate them linearly.
 
    Since control signals are (at least officially) at audio rate,
    LADPSPA plugins designed to be used in AMS (e.g. mine) will
    declare their control inputs as audio inputs.

 Thanks, I think it makes things way clearer!
 What's confusing me so far is that I ported the VCO2 module, but with
 exactly the same setup, the VCO2 LV2 in Ingen sounds out of tune
 compared to the one in AMS. I thought it was due to some kind of
 needed convertion, but maybe I'll go back to my code to double check I
 didn't make any mistakes!

 The note builtin in Ingen uses Hz for frequency. Anything else is
 completely insane :)

 There is a converter plugin in 'omins' which I need to port to LV2 as
 well one of these days...

Hi David,
Could you let me know where in Omins it is?
I can port this for you... One plugin to create won't kill me (and I
start to enjoy it anyway!)

Aurélien
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] AMS to Ingen: VC to PCM

2011-09-26 Thread Thorsten Wilms

On 09/26/2011 03:37 PM, Aurélien Leblond wrote:

Hi David,
Could you let me know where in Omins it is?


Well, not David, but:
http://svn.drobilla.net/lad/trunk/omins/src/hz_voct_4200.c


--
Thorsten Wilms

thorwil's design for free software:
http://thorwil.wordpress.com/
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] AMS to Ingen: VC to PCM

2011-09-26 Thread Loki Davison
 Hi David,
 Could you let me know where in Omins it is?
 I can port this for you... One plugin to create won't kill me (and I
 start to enjoy it anyway!)

 Aurélien
 ___
 Linux-audio-dev mailing list
 Linux-audio-dev@lists.linuxaudio.org
 http://lists.linuxaudio.org/listinfo/linux-audio-dev



Just watch out, some of them are really crappy (cough, the ones coded
by me. cough.) ;)

Loki
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] LV2 CV Port extension (WAS: AMS to Ingen: VC to PCM)

2011-09-26 Thread Stefano D'Angelo
2011/9/26 David Robillard d...@drobilla.net:
 pedantry
 It's debatable whether or not this violates the spec:

 Hosts that do not support a specific port class MUST NOT instantiate the
 plugin, unless that port has the connectionOptional property set

 This is ambiguous. We might want to reword that slightly in the next
 revision to explicitly state that hosts can instantiate if they understand
 *some subset* of the port types that describes a port type they support,
 i.e. unknown additional types can be ignored. This implies new port types
 can't modify the definition of others, which is good and should be explicit
 anyway.
 /pedantry

useless-rant
This is IMO unfortunate of the LV2 spec, a host does not only have to
check for supported features, but also go through all ports and check
type and connectionOptional. We could just have features for port
types defined in extensions...
/useless-rant

Stefano
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] LV2 CV Port extension (WAS: AMS to Ingen: VC to PCM)

2011-09-26 Thread David Robillard
On Mon, 2011-09-26 at 09:27 -0400, David Robillard wrote:
 On 26/09/11 06:22 AM, Stefano D'Angelo wrote: 
[...]
  IMO it could be better done like this: cv:CVPort to be a subclass of
  lv2:ControlPort and a feature URI to be defined.
 [...]
 The only way for this to be feasible is if the host supports said
 feature, it guarantees that such ports will ALWAYS be connected to a
 full audio-rate buffer (otherwise you need some mechanism to say which
 it's connected to and things get too complex).

Actually, on second thought, while I dislike making anything at all
complex for this ostensibly simple functionality, I think if a feature
is going to be involved anyway it might be best to allow the host to
explicitly specify which type each port is connected to.  Since this is
intended for modular hosts, the host would typically inform the plugin
which based on what the port is connected to.

The feature would basically allow the plugin to expose an additional
function which the host could call to inform the plugin if the CV port
is connected to control or audio data.

The cost is complexity in the plugin, namely a CV supporting plugin
would have to keep a type flag around for all CV ports to know which it
is connected to (a simple macro or inline function can make the actual
reading simple).  This incurs a minor branch cost (one per CV port per
cycle).

Thoughts?

-dr


___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev