Re: [LAD] Summercode 2008: LASH, pt. 2

2008-01-29 Thread Krzysztof Foltman
Dave Robillard wrote:

 I'm not sure if this is what Juuso meant, but Jack definitely needs
 something like a simple key/value metadata system for ports.

I second that. Especially if some of the metadata could be user-assigned 
  (via configuration or otherwise).

Example use - to mark the MIDI ports as primary/secondary keyboard, drum 
pads, control surface etc. And, possibly, device models and/or MIDI 
specification they conform to (GM, XG, GS, GM2, non-GM-based etc).

Or to mark audio inputs as coming from a MIDI device that is connected 
to a selected (computer's) MIDI output.

Then, for example, I could configure JACK to recognize that on my 
machine, system:midi_playback_4 is connected to MIDI In of an instrument 
that has its audio output connected to system:capture_3 and 
system:capture_4. This information might then be used by sequencer 
applications to be able to create bounce audio tracks automatically when 
creating MIDI tracks.

The goal is to let the user configure everything once and have all 
applications behaving reasonably by default. I think we've already been 
discussing that, and you had some sort of system like this in mind.

Just my usual tangential crap :) While it has nothing to do with LASH, I 
thought it might be an additional argument for adding metadata support 
to JACK in foreseeable future.

Krzysztof

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


Re: [LAD] Summercode 2008: LASH, pt. 2

2008-01-28 Thread Dave Robillard
On Sun, 2008-01-27 at 12:33 +0200, Nedko Arnaudov wrote:
 Juuso Alasuutari [EMAIL PROTECTED] writes:
- Jackdbus needs a port settings interface.
 
 what is this? the patchbay interface? I.e. connect/discconect ports, get
 clients/ports, get current connections, get notifications about graph
 changes?

I'm not sure if this is what Juuso meant, but Jack definitely needs
something like a simple key/value metadata system for ports.

Most of the long standing jack annoyances/problems (like proper
configurable auto-connect behaviour) are trivially solved given this.

-DR-


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


Re: [LAD] Summercode 2008: LASH, pt. 2

2008-01-27 Thread Thorsten Wilms
On Sun, 2008-01-27 at 12:33 +0200, Nedko Arnaudov wrote:

  * User interface standard recommendation (documentation).
 
 fit: -5
 
 I dont think this is in the scope of LASH.
 IMHO, such plans fit much more to PHAT project.

I think such a standard would just start with what labels to 
use for LASH related actions and how to organise menu items.
It could contain one or the other layout recommendation or
how to handle certain scenarios regarding notifications and
dialogs.

So all things with a clear relation to LASH.


-- 
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/mailman/listinfo/linux-audio-dev


Re: [LAD] Summercode 2008: LASH, pt. 2

2008-01-27 Thread Nedko Arnaudov
Juuso Alasuutari [EMAIL PROTECTED] writes:

 Here's a list of all LASH suggestions expressed so far, as well as some new 
 ones. It's quite a bunch, and it goes without saying that this is NOT A PLAN; 
 no sane person would actually try to cram all of these into an application. 
 If my application gets chosen for Summercode I'll only be concentrating on a 
 few key things (to be announced later, maybe after another brainstorm).

Great work so far! Having those in one place is quite useful. It allows
easy spoting of common goals where developers can cooperate.

 So, please take this as a memo, and please do comment. The internet doesn't 
 contain enough ASCII yet.

I'll use -5 .. 0 .. +5 numbers to express how well each things fits my
personal view.
Here they go:

 Suggested changes to internal structure:

 * Interact with JACK using the JACK D-Bus interface. Lashd no longer required 
 to be a libjack client.

fit: +5

   - Jackdbus needs a port settings interface.

what is this? the patchbay interface? I.e. connect/discconect ports, get
clients/ports, get current connections, get notifications about graph
changes?

 * Interact with LASH clients using D-Bus (change liblash's transport to use 
 D-Bus).

fit: +2

   - What if the client has its own D-Bus event loop and wants to manually 
 handle the LASH protocol? We need an option to also allow this.

Here I'm affraid of some technical problems. What if app uses some dbus
binding that hides everything? And how lash dbus code will be executed
in app using glib/qt bindings. Also I expect other audio related dbus
functionality to become more widely used and we could try to coordinate
this now:

 * http://ll-plugins.sourceforge.net/dbus/midiinput.html (curently bound
   to JACK MIDI, but easlity extendable).
 * JACK Synthesizer Manager Proposal (using D-Bus)?

 * Replace liblash's server interface with a LASH D-Bus interface. LASH 
 control 
 applications no longer required to be liblash clients.
   - Requires API change.

fit: +4

Given the low availablitity of such applications (about 3 of them, some
of them probably in stalled state), I'd be bold here.

 * Certificates and encryption for communication protocol.
   - What the communication protocol refers to is another question...

fit: +1

D-Bus authentication mechanisms should be used here probably.

 * OSC (?)

If for lash client - lash server protocol:

fit: -1

 * Server rewrite in C++.

fit: +2

 * Client lib rewrite in GObject.

fit: -2

I'm against using GObject, not against making it more OO internally.

 * Server rewrite in Python

fit: +4

 * Strip support for ALSA (make LASH - JACK specific)

fit: +2

 API change suggestions:

 * Break it? How? When?
   - Probably unavoidable eventually.

fit: -5

Don't break current client API. We have have enough lashified apps we
know about and nobody knows how much lashified apps we dont know about.

Still we should make alternative client interface to be used in new
apps. Existing lashified apps can be switched to the new api if someone
has motivation to do this. Still we cannot be sure that we know all
existing lashified apps. Also, this will fsck up distro packagers, with
result being low adoption. IMHO, if we provide better alternative API,
most developers will use it instead (in most cases). Thus:

 * Provide new *alternative* API:

fit: +4

 * Remove the server interface from liblash. Controlling LASH will happen 
 through a D-Bus interface.
   - Dave Robillard has expressed that the current interface separation makes 
 it difficult to write a LASH control application which is at the same time a 
 LASH client (Patchage).

fit: +4

 * Mandate that LASH clients shall not modify any external port connections.
   - Actually enforce this using JACK ACL? (A partial solution, doesn't help 
 with ALSA and others.)

fit: +4

 * Make the save directory static to clients unless a change notification is 
 sent.

What is this?

 * More generic patch system API.

What is this?

 * Use callbacks instead of current event framework.

fit: +3

 * Add test disk operation function; the server can ask the client to test 
 if 
 it can actually read from and write to the specified directory.

Why is this needed?

 Feature addition suggestions:

 * Lashd should capture clients' stdout and stderr and keep log(s) in the 
 project dir.
   - One common log file or per-client ones?

One common per-user (lashd is per-user process) log file.
Use prefixes to distinguish between each client output and
stdout/stderr.

fit: +5

 * Preserve/restore JACK settings other than port connections.
   - Make this optional; the user must be able to tell LASH to not touch any 
 JACK settings.

fit: +5

   - Should this be the responsibility of a JACK controller app?

fit: -3

   - LASH being able to restart JACK server in the bad thing
 happens. The same way it can restart lash clients.

fit: +5

 * Export/import session; create or unpack a tarball of the session directory.

fit: +4

 * Light 

[LAD] Summercode 2008: LASH, pt. 2

2008-01-26 Thread Juuso Alasuutari
Here's a list of all LASH suggestions expressed so far, as well as some new 
ones. It's quite a bunch, and it goes without saying that this is NOT A PLAN; 
no sane person would actually try to cram all of these into an application. 
If my application gets chosen for Summercode I'll only be concentrating on a 
few key things (to be announced later, maybe after another brainstorm).

So, please take this as a memo, and please do comment. The internet doesn't 
contain enough ASCII yet.


Suggested changes to internal structure:

* Interact with JACK using the JACK D-Bus interface. Lashd no longer required 
to be a libjack client.
  - Jackdbus needs a port settings interface.
* Interact with LASH clients using D-Bus (change liblash's transport to use 
D-Bus).
  - What if the client has its own D-Bus event loop and wants to manually 
handle the LASH protocol? We need an option to also allow this.
* Replace liblash's server interface with a LASH D-Bus interface. LASH control 
applications no longer required to be liblash clients.
  - Requires API change.
* Certificates and encryption for communication protocol.
  - What the communication protocol refers to is another question...
* OSC (?)
* Server rewrite in C++.
* Client lib rewrite in GObject.

API change suggestions:

* Break it? How? When?
  - Probably unavoidable eventually.
* Remove the server interface from liblash. Controlling LASH will happen 
through a D-Bus interface.
  - Dave Robillard has expressed that the current interface separation makes 
it difficult to write a LASH control application which is at the same time a 
LASH client (Patchage).
* Mandate that LASH clients shall not modify any external port connections.
  - Actually enforce this using JACK ACL? (A partial solution, doesn't help 
with ALSA and others.)
* Make the save directory static to clients unless a change notification is 
sent.
* More generic patch system API.
* Use callbacks instead of current event framework.
* Add test disk operation function; the server can ask the client to test if 
it can actually read from and write to the specified directory.

Feature addition suggestions:

* Lashd should capture clients' stdout and stderr and keep log(s) in the 
project dir.
  - One common log file or per-client ones?
* Preserve/restore JACK settings other than port connections.
  - Make this optional; the user must be able to tell LASH to not touch any 
JACK settings.
  - Should this be the responsibility of a JACK controller app?
* Export/import session; create or unpack a tarball of the session directory.
* Light save functionality; clients can reference files outside the session 
directory.
* Managing of non-LASH apps.
* Preserve clients' X11 properties, such as window position, screen, 
workspace, etc.
* Ability to merge sessions.
* Support for multi-host sessions.
  - Should the LASH-client protocol support this directly (socket-based 
connections), or
  - should LASH daemons on different machines be able to connect with one 
another (master session  slave sessions)?
* Save the client data in $client_dir under a sub-dir to prevent the client 
from overwriting config files.
* Support for dictating client loading order, and which other clients need to 
be loaded before a client can load.
  - Alternative solution/scheme: client priorities.
* Track naming
* Guaranteed save directory availability
* Graded saves. (Different kinds of saves? How many different kinds?)
* Networked audio (audio/MIDI ports over network).
* User interface standard recommendation (documentation).
* Automatic client installation/in-built package manager.

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