Re: [LAD] Non Session Management

2012-03-27 Thread Emanuel Rumpf
Am 27. März 2012 03:23 schrieb David Robillard d...@drobilla.net:


 ...  What you end up with is a few directories
 with specific roles.
 ...
 ...
 Figuring this all out was a long process of trial and error, but now
 that I write it down it seems clear it can't be simplified without
 failing to meet a requirement.  I am all ears for arguments to the
 contrary, though.


Thanks for pointing out, David.

1.
I don't totally agree with using symlinks:
- I tend to think, that file-systems are not as efficient as databases
- I feel that symlinks pollute the file-system
- What if any of the symlink to symlink is deleted - do applications
still know, where the file is which they had been pointing too ?
- Some apps would want to store additional info relating to the file
(meta-data, tags, related info, ...), thus requiring a simple database
anyway.
- having symlinks leaves the user with the question how to reliably
copy a directory, without messing up everything (dereference yes/no,
follow links yes/no ...), something that is critical to deside

2.
I don't totally agree with a file- vs. copy-directory:
I mean: is there really a semantic difference between a created, a
modified file and a copy ??
I think no. After modification, creation, duplication, etc.,   soon
you won't be able to say, weather a file is a any of the above. I
mean: For one app it can be a file (original), while for another it
can be a copy / reference / whatever.

For an app, there may be a semantic difference for

A: existing files a user added, which are ORIGINALS (thus refs),
never-modified ones

B: files the app created or modified, thus copied - files that are
NEWONES (thus real and refs)
note: a modified or created file can become an ORIGINAL for a
different application !
that's what I meant above, in 2.

C: files that are HISTORY, the user may want to delete these anytime,
to store space
- a history-file can become an original - what now ?


My conclusion:
- -
1. large files should never go to the session directory

2. Lfiles shared between apps have to be managed by a (super-)
instance that knows what's going on - the session-manager - otherwise
it's completely undefined/unclear what happens

3. Lfiles newly created (recorded / modified ) - for ALL sessions - go
to a common NSM-Lfiles directory

4. The session manager knows, of EVERY reference to files inside the
NSM-Lfiles dir.,
distinguishing between
 - CURRENT_REFS (files currently used by any instance)
-  HISTORY_REFS (file not currently used by any instance)  (this is
equal ALL_FILES minus CURRENT_REFS)
- EXTERNAL_REFS (files referenced by any instance, but not contained
in the NSM-Lfiles dir. and NOT created/recorded/modified by any
instance )

5. this means, the user is disallowed to manually reference/link to
any of the files contained in the NSM-Lfiles dir (because the SM
wouldn't know about it)

6. The SM knows all files-in-use and is able to move unused
history-files to a dustbin (no app is allowed to use/reference files
within the dustbin). The dustbin can manually be deleted by the user
anytime.

7. The SM allows Lfiles (CURRENT_REF + EXTERNAL_REFS) for a certain
session or app to be copied to a user-defined directory
(export-function)

8. The SM allows HISTORY_FILES to be moved to a dustbin folder.  (not
including CURRENT_REFS or EXTERNALS)

IF I did not forget / oversee anything critical, this looks like a well managed
and reliable approach to me. Any opinions ?


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


Re: [LAD] Non Session Management

2012-03-27 Thread Fons Adriaensen
On Mon, Mar 26, 2012 at 05:15:09PM -0700, J. Liles wrote:

 Fons, I'd like to hear more about this use case. Currently one of the
 strong points of NSM is that applications with heavy state (e.g. large
 audio files) know *exactly* where to put the state at the time they join
 the session. This eliminates the need for undesirable hacks with just
 storing a link to the heavy state (as was generally required with LASH). I
 felt like this was one of the primary requirements of Non-DAW which was not
 addressed by other session managers. But as far as sharing heavy state
 between multiple clients in a session, I have not considered the issue. It
 is certainly possible to permit something like that, and even as it is
 right now two clients could work something out peer-to-peer using the NSM
 server's 'broadcast' capability. If several different sessions need to
 share the same data, then I would say that it's reasonable just to have it
 stored outside of the session root, preferrably symlinked from within the
 session so that it could be picked up by a simple archiving process.

You may have misread what I wrote, it's not about data shared
between clients in a single session (but that is an interesting
twist that I havent' considered so far). It's a about essentially
read-only and possibly huge data sets shared between sessions. 

Given a multitrack recording, I may be required to make a 3rd 
order Ambisonic mix originally, another for some discrete speaker
set used at a concert some months later, and a Wave Field Synthesis
one at any time. They all use the same recorded and edited tracks,
but the tools and methods used are completely different in each
case, and I would really not want to combine them into a single
session. If only because someone using any of these forms should
not be required to have the tools for all the other ones. Nor 
would I want the the shared data to be duplicated - not only
because it's a wast of disk space, but also because it may be
reviewed and modified as well (e.g. correcting bad edits) and
such changes should be picked up by all sessions using the data.

My POV about 'external' data (that is data not saved as part of
a session) is that if the user (or an app on behalf of the user)
declares that some data is external to the session then the SM
should just accept this as a fact an go on doing its thing. It
is then of course the user's responsability to take care of such
data if a session is transferred or archived.

I would expect a SM to have a tool to 'ls' a session (providing
a list of required apps etc.), and ideally such a tool should be
able to mention any dependencies on external data.

Using symlinks is indeed a simple solution, at least on Unixy
systems. It provides the required functionality, archiving tools
usually can be told to follow symlinks or not, and to the SM any
symlink in a session directory is an indication of 'external'
dependencies. And it doesn't require any extensions to the SM
protocol - creating a symlink is a declaration of external data.

Ciao,

-- 
FA

A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)

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


Re: [LAD] Non Session Management

2012-03-27 Thread Emanuel Rumpf
Am 27. März 2012 21:41 schrieb Fons Adriaensen f...@linuxaudio.org:
...
 Nor would I want the the shared data to be duplicated

In my scenario, this would match EXTERNAL_REF

It would only be copied to Lfiles directory, if modified.
Obviously there are cases, where this is not desirable
and destructive editing is preferable.
The app could offer this as an option, as you are pointing out below.


 - not only
 because it's a wast of disk space, but also because it may be
 reviewed and modified as well (e.g. correcting bad edits) and
 such changes should be picked up by all sessions using the data.


 My POV about 'external' data (that is data not saved as part of
 a session) is that if the user (or an app on behalf of the user)
 declares that some data is external to the session then the SM
 should just accept this as a fact an go on doing its thing. It
 is then of course the user's responsability to take care of such
 data if a session is transferred or archived.



 I would expect a SM to have a tool to 'ls' a session (providing
 a list of required apps etc.), and ideally such a tool should be
 able to mention any dependencies on external data.

Another useful tool:  ' list-session-deps  Lfile/audio.wav '
that would list all sessions and applications with current-references
to that file.

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


[LAD] HDSP 9652 and Behringer ADA8000

2012-03-27 Thread Phil T
Hi Everyone

Im would like to experiment using microphone arrays ( 24 channels ) and I
am just wondering if it is possible for me to use 3 units of Behringer
ADA8000 connected via ADAT to HDSP 9652. My tools run only with ALSA
supported devices and I checked through ALSA website, the HDSP 9652 seemed
to be OK. Im just wondering if the set-up I mentioned is possible ? Will
there be any issue at all if i use the ADA8000 as far as ALSA is concerned
? Thank you very much, I really would appreciate any suggestions or
comments. Thank you


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


Re: [LAD] Non Session Management

2012-03-27 Thread Emanuel Rumpf
A second scenario

The simple one (simple for the SM, not for the apps):

- applications decide themself how to handle large-files
- but still tell the SM about all files currently used, when the
session is saved


This allowed the SM to:

- tell the user if a certain file is part of any session registered at the SM
- export all files used by a session - optionally, either as symlinks,
or as copy to a specified directory
- verify and warn, if a referenced file is missing (although, maybe
this should be left to the app then too)

Would this suffice ?

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


Re: [LAD] Non Session Management

2012-03-27 Thread David Robillard
On Tue, 2012-03-27 at 14:24 +0200, Emanuel Rumpf wrote:
 Am 27. März 2012 03:23 schrieb David Robillard d...@drobilla.net:
 
 
  ...  What you end up with is a few directories
  with specific roles.
  ...
  ...
  Figuring this all out was a long process of trial and error, but now
  that I write it down it seems clear it can't be simplified without
  failing to meet a requirement.  I am all ears for arguments to the
  contrary, though.
 
 
 Thanks for pointing out, David.
 
 1.
 I don't totally agree with using symlinks:
 - I tend to think, that file-systems are not as efficient as databases

I am having a hard time imagining anything *less* likely to be adopted
than trying to cram a *database* down everyone's throats to save some
files! ;)

I think I'll just avoid going into the why and say: not in a million
years.

 - What if any of the symlink to symlink is deleted - do applications
 still know, where the file is which they had been pointing too ?

What if a file is deleted?  What if the entire file system is wiped?
Users can remove files, film at eleven.  Nothing to do with symlinks.

 - Some apps would want to store additional info relating to the file
 (meta-data, tags, related info, ...), thus requiring a simple database
 anyway.

So?  Apps can store whatever they way.  If you are crazy and want to
store a binary database in there instead of a sane file format, feel
free.

No session manager that forces everyone to use some database would ever
fly.  This is obvious.

 - having symlinks leaves the user with the question how to reliably
 copy a directory, without messing up everything (dereference yes/no,
 follow links yes/no ...), something that is critical to deside

That is inherent to any solution with links to external resources.
Links to external resources are a requirement.  If you want to move a
session, use a smart tool that can fix the links, or archive it.

 2.
 I don't totally agree with a file- vs. copy-directory:
 I mean: is there really a semantic difference between a created, a
 modified file and a copy ??

The argument for these having to be separate is because otherwise the
copies would pollute the namespace.  Also remember files can be created
before save time.

 For an app, there may be a semantic difference for
 
 A: existing files a user added, which are ORIGINALS (thus refs),
 never-modified ones
 
 B: files the app created or modified, thus copied - files that are
 NEWONES (thus real and refs)
 note: a modified or created file can become an ORIGINAL for a
 different application !

A file outside the session is a file outside the session.  Happening to
be in a directory that happens to be a different session makes no
difference.

 that's what I meant above, in 2.
 
 C: files that are HISTORY, the user may want to delete these anytime,
 to store space
 - a history-file can become an original - what now ?

You keep bringing up this what if the user deletes a file that is used
problem as if there could possibly be a solution.  Obviously there can
not be.  Yep, users can delete files.  That is not a criticism of any
particular solution.

In reality this is not a problem.  Users have a pretty good idea that if
they go screwing around with e.g. their ardour session and start
deleting files, something is probably going to break.  Don't Do That.

 1. large files should never go to the session directory

Why?  What exactly is large?  Just because a file is large doesn't
mean I don't want it in a session.  It is a requirement to be able to
roll up a self-contained archive of a session *if* you want to.

 2. Lfiles shared between apps have to be managed by a (super-)
 instance that knows what's going on - the session-manager - otherwise
 it's completely undefined/unclear what happens

Why?  It's perfectly clear.  A file is a file.

 3. Lfiles newly created (recorded / modified ) - for ALL sessions - go
 to a common NSM-Lfiles directory

Doesn't really matter.  You can use one.  You can use many.  Whatever.

 
 4. The session manager knows, of EVERY reference to files inside the
 NSM-Lfiles dir.,
 distinguishing between
  - CURRENT_REFS (files currently used by any instance)
 -  HISTORY_REFS (file not currently used by any instance)  (this is
 equal ALL_FILES minus CURRENT_REFS)
 - EXTERNAL_REFS (files referenced by any instance, but not contained
 in the NSM-Lfiles dir. and NOT created/recorded/modified by any
 instance )
 
 5. this means, the user is disallowed to manually reference/link to
 any of the files contained in the NSM-Lfiles dir (because the SM
 wouldn't know about it)

And why does the Grand Centralized Session Manager File Authority need
to do this?  What exactly is the problem that all these rules and
authority solve?

 6. The SM knows all files-in-use and is able to move unused
 history-files to a dustbin (no app is allowed to use/reference files
 within the dustbin). The dustbin can manually be deleted by the user
 anytime.

The only thing you need to be able to clean up 

Re: [LAD] Non Session Management

2012-03-27 Thread David Robillard
On Wed, 2012-03-28 at 03:27 +0200, Emanuel Rumpf wrote:
 A second scenario
 
 The simple one (simple for the SM, not for the apps):
 
 - applications decide themself how to handle large-files
 - but still tell the SM about all files currently used, when the
 session is saved

Files are files.  Size does not have any impact on how any of this has
to work (aside from the fact that files could possibly be very large
meaning redundant copies are not acceptable).  Trying to define a small
file and large file category just makes everything more complicated
for no particular reason.

 This allowed the SM to:
 
 - tell the user if a certain file is part of any session registered at the SM

Why would the user care?

The chose it, presumably they know where it is anyway.

-dr


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