Re: [PD] Dynamic patching with audio - review

2011-09-15 Thread Hans-Christoph Steiner

This looks very thorough and useful.  It would be great to have in the
http://puredata.info/docs section (once the website is back up).

.hc


On Mon, 2011-08-29 at 16:16 +0200, abel.jer...@free.fr wrote:
> Hi all,
> 
> My last mail was broken by the mailing list engine.
> 
> The "prose" in a file if you please ;-):
> http://abel.jerome.free.fr/pd/dynamic-patching/reviews/DynamicPatching_review-3.txt
> 
> Jérôme (with accents)
> 
> - Mail original -
> De: "abel jerome" 
> À: pd-list@iem.at
> Envoyé: Mercredi 24 Août 2011 12:49:10
> Objet: Re: Dynamic patching with audio - review
> 
> Hi,
> 
> A new report of my researchs about audio dynamic patching techniques.
> 
> The continuation of my previous reviews :
> http://abel.jerome.free.fr/pd/dynamic-patching/reviews/DynamicPatching_review-1.txt
> http://abel.jerome.free.fr/pd/dynamic-patching/reviews/DynamicPatching_review-2.txt
> 
> ===
> Pd-list archives
> ===
> "The issue has been discussed several times" (IOhannes m zmoelnig)
> 
> That's right. I've just seen that the "pd dsp O/1" method was described in 
> 2005 ! 
> 
> It's quite difficult to find those threads without the terms "dsp tree" or 
> "dsp graph" or "dsp chain". Indeed, I don't know anything about it.
> A list of the best search terms could help us (see below) and avoid those 
> "noise" requests.
> 
> We are trying here to make a review of all dynamic patching techniques to 
> make it easier to understand and find the "best" solution for any project. It 
> could be a page on the community website instead of the disheartening "do not 
> use dynamic patching" 
> (http://puredata.info/docs/tutorials/TipsAndTricks#how-to-avoid-audio-drop-outs).
> 
> - Search engine usage
> 
> When I search in the pd-list, the score show some posts where the search term 
> are in the next or previous message links, not in the message body. How limit 
> the search term to the body and not the links ?
> 
> Futhermore, if I'm interested in one thread, it seems that if I choose to 
> sort by thread, it's only the threads of a month. How group one thread on all 
> months ?
> 
> - Search terms
> 
> "audio drop-outs with pd dsp O; pd dsp 1"
> "activate audio abstraction"
> "dynamic audio abstraction"
> "dynamic patching"
> "dynamic patching techniques"
> "update dsp-tree" 
> "update dsp-graph"ofxPd
> 
> - Threads about audio dynamic abstraction in pd-list
> 
> - [PD] strange behavior upon loading dsp abstraction
> http://lists.puredata.info/pipermail/pd-list/2004-12/thread.html#24337
> - [PD] no dsp-chain update after dynamic abstraction-creation
> http://lists.puredata.info/pipermail/pd-list/2005-06/028923.html
> - [PD] slowly load a pd-patches/abs without dropouts
> http://lists.puredata.info/pipermail/pd-list/2007-01/046243.html
> - [PD] this is crazy
> http://lists.puredata.info/pipermail/pd-list/2008-01/059244.html
> - [PD] API for manipulating a patch in real time
> http://lists.puredata.info/pipermail/pd-list/2008-12/066723.html
> - [PD] Dynamically created signal object bug
> http://lists.puredata.info/pipermail/pd-list/2009-02/068246.html
> - [PD] abstraction creation audio engine start
> http://lists.puredata.info/pipermail/pd-list/2009-04/069849.html
> 
> 
> ===
> Dynamic creation of audio abstractions
> ===
> 
> - Methods
> 
> 1 - DSP 0/1
> 2 - Add/clear an audio object (subpatch)
> 3 - Add/cut any object (subpatch)
> 
> See : 
> http://abel.jerome.free.fr/pd/dynamicPatching/patchs/dyn-audio-abstraction/
> 
> This methods work with any abstraction.
> 
> - DSP 0/1 method - explanations
> 
> From IOhannes m zmoelnig :
> "You shouldn't dynamically create abstractions while dsp is running, as it 
> slows down significantly."
> 
> "If dsp is on, and you dynamically create 10 objects in one go (in zero
> logical time), then the dsp graph will be re-calculated 10 times.
> If you turn dsp off, then dynamically create 10 objects as before, then
> no dsp graph will be evaluated until you turn dsp on again, summing up
> to exactly 1 time.
> Furthermore, it guarantees that the entire DSP graph is calculated and
> not only parts of it (because of buggy implementations)"
> 
> Thanks a lot for those explanations. It's clear enough to see why choose 
> these method even if internal processes in the DSP graph are still 
> incomprehensibles.
> 
> - DSP 0/1 method - Some questions
> 
> 
> --- With one audio abstraction.
> If we create just one audio abstraction at one time. Is it still the best 
> solution or is it the same than other methods ?
> 
> --- Audio clics.
> From me:
> But audio cli

Re: [PD] Dynamic patching with audio - review

2011-08-29 Thread abel . jerome

Hi all,

My last mail was broken by the mailing list engine.

The "prose" in a file if you please ;-):
http://abel.jerome.free.fr/pd/dynamic-patching/reviews/DynamicPatching_review-3.txt

Jérôme (with accents)

- Mail original -
De: "abel jerome" 
À: pd-list@iem.at
Envoyé: Mercredi 24 Août 2011 12:49:10
Objet: Re: Dynamic patching with audio - review

Hi,

A new report of my researchs about audio dynamic patching techniques.

The continuation of my previous reviews :
http://abel.jerome.free.fr/pd/dynamic-patching/reviews/DynamicPatching_review-1.txt
http://abel.jerome.free.fr/pd/dynamic-patching/reviews/DynamicPatching_review-2.txt

===
Pd-list archives
===
"The issue has been discussed several times" (IOhannes m zmoelnig)

That's right. I've just seen that the "pd dsp O/1" method was described in 2005 
! 

It's quite difficult to find those threads without the terms "dsp tree" or "dsp 
graph" or "dsp chain". Indeed, I don't know anything about it.
A list of the best search terms could help us (see below) and avoid those 
"noise" requests.

We are trying here to make a review of all dynamic patching techniques to make 
it easier to understand and find the "best" solution for any project. It could 
be a page on the community website instead of the disheartening "do not use 
dynamic patching" 
(http://puredata.info/docs/tutorials/TipsAndTricks#how-to-avoid-audio-drop-outs).

- Search engine usage

When I search in the pd-list, the score show some posts where the search term 
are in the next or previous message links, not in the message body. How limit 
the search term to the body and not the links ?

Futhermore, if I'm interested in one thread, it seems that if I choose to sort 
by thread, it's only the threads of a month. How group one thread on all months 
?

- Search terms

"audio drop-outs with pd dsp O; pd dsp 1"
"activate audio abstraction"
"dynamic audio abstraction"
"dynamic patching"
"dynamic patching techniques"
"update dsp-tree" 
"update dsp-graph"ofxPd

- Threads about audio dynamic abstraction in pd-list

- [PD] strange behavior upon loading dsp abstraction
http://lists.puredata.info/pipermail/pd-list/2004-12/thread.html#24337
- [PD] no dsp-chain update after dynamic abstraction-creation
http://lists.puredata.info/pipermail/pd-list/2005-06/028923.html
- [PD] slowly load a pd-patches/abs without dropouts
http://lists.puredata.info/pipermail/pd-list/2007-01/046243.html
- [PD] this is crazy
http://lists.puredata.info/pipermail/pd-list/2008-01/059244.html
- [PD] API for manipulating a patch in real time
http://lists.puredata.info/pipermail/pd-list/2008-12/066723.html
- [PD] Dynamically created signal object bug
http://lists.puredata.info/pipermail/pd-list/2009-02/068246.html
- [PD] abstraction creation audio engine start
http://lists.puredata.info/pipermail/pd-list/2009-04/069849.html


===
Dynamic creation of audio abstractions
===

- Methods

1 - DSP 0/1
2 - Add/clear an audio object (subpatch)
3 - Add/cut any object (subpatch)

See : 
http://abel.jerome.free.fr/pd/dynamicPatching/patchs/dyn-audio-abstraction/

This methods work with any abstraction.

- DSP 0/1 method - explanations

From IOhannes m zmoelnig :
"You shouldn't dynamically create abstractions while dsp is running, as it 
slows down significantly."

"If dsp is on, and you dynamically create 10 objects in one go (in zero
logical time), then the dsp graph will be re-calculated 10 times.
If you turn dsp off, then dynamically create 10 objects as before, then
no dsp graph will be evaluated until you turn dsp on again, summing up
to exactly 1 time.
Furthermore, it guarantees that the entire DSP graph is calculated and
not only parts of it (because of buggy implementations)"

Thanks a lot for those explanations. It's clear enough to see why choose these 
method even if internal processes in the DSP graph are still incomprehensibles.

- DSP 0/1 method - Some questions


--- With one audio abstraction.
If we create just one audio abstraction at one time. Is it still the best 
solution or is it the same than other methods ?

--- Audio clics.
From me:
But audio clics may occur for all sounds, not just for the new one, right ?
From IOhannes:
"no, this is wrong. (at least not, if you computer is fast enough to calculate 
the DSP-graph within the buffertime)."

I don't understand how you can not heard clics with it.
With my system, audio clics occur... Wrong settings ? Do I need a recent 
computer ?
In fact, a clic is heard the first time with Jack/Alsa and always with Alsa and 
Asio4all.
But in a dynamic patch

Re: [PD] Dynamic patching with audio - review

2011-08-24 Thread abel . jerome
Hi,

A new report of my researchs about audio dynamic patching techniques.

The continuation of my previous reviews :
http://abel.jerome.free.fr/pd/dynamic-patching/reviews/DynamicPatching_review-1.txt
http://abel.jerome.free.fr/pd/dynamic-patching/reviews/DynamicPatching_review-2.txt

===
Pd-list archives
===
"The issue has been discussed several times" (IOhannes m zmoelnig)

That's right. I've just seen that the "pd dsp O/1" method was described in 2005 
! 

It's quite difficult to find those threads without the terms "dsp tree" or "dsp 
graph" or "dsp chain". Indeed, I don't know anything about it.
A list of the best search terms could help us (see below) and avoid those 
"noise" requests.

We are trying here to make a review of all dynamic patching techniques to make 
it easier to understand and find the "best" solution for any project. It could 
be a page on the community website instead of the disheartening "do not use 
dynamic patching" 
(http://puredata.info/docs/tutorials/TipsAndTricks#how-to-avoid-audio-drop-outs).

- Search engine usage

When I search in the pd-list, the score show some posts where the search term 
are in the next or previous message links, not in the message body. How limit 
the search term to the body and not the links ?

Futhermore, if I'm interested in one thread, it seems that if I choose to sort 
by thread, it's only the threads of a month. How group one thread on all months 
?

- Search terms

"audio drop-outs with pd dsp O; pd dsp 1"
"activate audio abstraction"
"dynamic audio abstraction"
"dynamic patching"
"dynamic patching techniques"
"update dsp-tree" 
"update dsp-graph"ofxPd

- Threads about audio dynamic abstraction in pd-list

- [PD] strange behavior upon loading dsp abstraction
http://lists.puredata.info/pipermail/pd-list/2004-12/thread.html#24337
- [PD] no dsp-chain update after dynamic abstraction-creation
http://lists.puredata.info/pipermail/pd-list/2005-06/028923.html
- [PD] slowly load a pd-patches/abs without dropouts
http://lists.puredata.info/pipermail/pd-list/2007-01/046243.html
- [PD] this is crazy
http://lists.puredata.info/pipermail/pd-list/2008-01/059244.html
- [PD] API for manipulating a patch in real time
http://lists.puredata.info/pipermail/pd-list/2008-12/066723.html
- [PD] Dynamically created signal object bug
http://lists.puredata.info/pipermail/pd-list/2009-02/068246.html
- [PD] abstraction creation audio engine start
http://lists.puredata.info/pipermail/pd-list/2009-04/069849.html


===
Dynamic creation of audio abstractions
===

- Methods

1 - DSP 0/1
2 - Add/clear an audio object (subpatch)
3 - Add/cut any object (subpatch)

See : 
http://abel.jerome.free.fr/pd/dynamicPatching/patchs/dyn-audio-abstraction/

This methods work with any abstraction.

- DSP 0/1 method - explanations

>From IOhannes m zmoelnig :
"You shouldn't dynamically create abstractions while dsp is running, as it 
slows down significantly."

"If dsp is on, and you dynamically create 10 objects in one go (in zero
logical time), then the dsp graph will be re-calculated 10 times.
If you turn dsp off, then dynamically create 10 objects as before, then
no dsp graph will be evaluated until you turn dsp on again, summing up
to exactly 1 time.
Furthermore, it guarantees that the entire DSP graph is calculated and
not only parts of it (because of buggy implementations)"

Thanks a lot for those explanations. It's clear enough to see why choose these 
method even if internal processes in the DSP graph are still incomprehensibles.

- DSP 0/1 method - Some questions


--- With one audio abstraction.
If we create just one audio abstraction at one time. Is it still the best 
solution or is it the same than other methods ?

--- Audio clics.
>From me:
But audio clics may occur for all sounds, not just for the new one, right ?
>From IOhannes:
"no, this is wrong. (at least not, if you computer is fast enough to calculate 
the DSP-graph within the buffertime)."

I don't understand how you can not heard clics with it.
With my system, audio clics occur... Wrong settings ? Do I need a recent 
computer ?
In fact, a clic is heard the first time with Jack/Alsa and always with Alsa and 
Asio4all.
But in a dynamic patching case, what's this first time ? In the dynamic patch 
example, clics occurs even if I use Jack/Alsa.

See :
http://abel.jerome.free.fr/pd/dynamic-patching/patchs/cpu-on-off/screenshots/cpu-on-off-audio-clics.png
http://abel.jerome.free.fr/pd/dynamic-patching/patchs/dyn-audio-abstraction/screenshots/dyn-activate-audio-abstractions.png

--- Time response de

Re: [PD] Dynamic patching with audio - review

2011-08-19 Thread IOhannes zmölnig
On 08/19/2011 03:09 PM, Krzysztof Czaja wrote:
> plus closing and reopening of the audio driver, which is induced by
> `pd dsp', and not by object creation.  So it is like sometimes it is
> better to forget about an itching place, rather than scratch it.

ouch, your point.

mfgasdr
IOhannes


PS: any chance to get more or less int a public repository?



signature.asc
Description: OpenPGP digital signature
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-08-19 Thread Krzysztof Czaja

On 08/19/2011 10:18 AM, IOhannes zmölnig wrote:
...

if dsp is on, and you dyamincally create 10 objects in one go (in zero
logical time), then the dsp graph will be re-calculated 10 times.

if you turn dsp off, then dynamically create 10 objects as before, then
no dsp graph will be evaluated until you turn dsp on again, summing up
to exactly 1 time.


plus closing and reopening of the audio driver, which is induced by
`pd dsp', and not by object creation.  So it is like sometimes it is
better to forget about an itching place, rather than scratch it.

Krzysztof

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-08-19 Thread Olivier B
2011/8/19 IOhannes zmölnig 

> On 08/18/2011 08:07 PM, abel.jer...@free.fr wrote:
>


> >
> >> b) do [; pd dsp 0; pd dsp 1( right after your creation to fix the
> dsp-graph
> >
> > But audio clics may occur for all sounds, not just for the new one, right
> ?
>
> no, this is wrong.
> (at least not, if you computer is fast enough to calculate the DSP-graph
> within the buffertime).
>

Good to know.
I've done my tests with my intern laptop sound card...


> however, you will have the same problem if you do any weird "cut" clicks.
>

... but it's with the same sound card I don't have the same problem with
weird "cut" clicks.

To be continued...

Cheers.

01ivier


>
>
> mgfasdr
> IOhannes
>
>
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>


-- 
Envie de tisser ?
http://yamatierea.org/papatchs/
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-08-19 Thread IOhannes zmölnig
On 08/18/2011 08:07 PM, abel.jer...@free.fr wrote:
> Hi,
> 
>> what about the
>> game you've talked about ?)
> 
> I will working on the "3D-game" audio part the next two weeks.
> If I have time, I will write some notes about my recent tests.
> 
>> a) you shouldn't dynamically create abstractions while dsp is running,
>> as it slows down significantly.
> 
> I would have liked to hear it before... May be I missed a message.

most likely.
not in this thread but the issue has been discussed several times.

> 
> How much is your "significantly" ?
> Do you have taken measures to see what happens whith 10 audio objects, 100 or 
> 1000 ?

significantly means:

if dsp is on, and you dyamincally create 10 objects in one go (in zero
logical time), then the dsp graph will be re-calculated 10 times.

if you turn dsp off, then dynamically create 10 objects as before, then
no dsp graph will be evaluated until you turn dsp on again, summing up
to exactly 1 time.

furthermore, it guarantees that the entire DSP graph is calculated and
not only parts of it (because of buggy implementations)

> 
>> b) do [; pd dsp 0; pd dsp 1( right after your creation to fix the dsp-graph
> 
> But audio clics may occur for all sounds, not just for the new one, right ?

no, this is wrong.
(at least not, if you computer is fast enough to calculate the DSP-graph
within the buffertime).
however, you will have the same problem if you do any weird "cut" clicks.

> Could we do whithout a [line~] object to turn on/off sounds smootly and avoid 
> audio clics ?
> 
> If we handle all sounds with a [line~]:
> 1 - stop all sounds smoothly (10 msec) with a GLOBAL send message
> 2 - wait 10 msec
> 3 - dsp 0
> 4 - create the new audio abstractions
> 5 - dsp 1
> 6 - turn on all sounds smoothly (10 msec) with a GLOBAL send message
> 
> Does it sound good ?

no.
or rather: depends on what you need; if you can live with a 20 ms
inconsistency.
for many applications though, this 20ms fadeout-fadein will be almost
equally annoying as a click.

> We have a 20 msec "hole" of sounds. I'm sure that it may be perceptible.

it _will_ be perceptible.

those clicks have been discussed a number of times on this list (please
search the archives).


mgfasdr
IOhannes



signature.asc
Description: OpenPGP digital signature
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-08-18 Thread Olivier B
2011/8/18 IOhannes m zmoelnig 

> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
>
> On 2011-08-18 13:49, Olivier B wrote:
>
> > The last created abstraction produce sound as wanted.
> > But the previous ones seems to be in a double sample rate or something
> like
> > that...
> > If I put and cut a box, everything becomes fine...
> >
>
> ???
>

Try, you'll see... :-p
No need dynamic patching for that...
Send [dsp 1( to a subpatch playing audio and let it be... ;-)


>
> a) you shouldn't dynamically create abstractions while dsp is running,
> as it slows down significantly.
>
> b) do [; pd dsp 0; pd dsp 1( right after your creation to fix the dsp-graph
>
>
I've tried it as proposed on previous posts but as Jérôme said, it makes
click...
And as the trick to put and cut box works fine I'm gonna do it in that way.

For curious, I've posted my work here :
http://yamatierea.org/papatchs/#quaudriolatere
It a sampler control by the corners of a polygon.
For no-francophone :
Each left-click makes a square and records 2 seconds.
Right-clik to move corner.
Red corner : level & pan
Blue : dry/wet on Y axis
Greens : Fx

Cheers.

01ivier








> fmasdr
> IOhannes
> -BEGIN PGP SIGNATURE-
> Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk5NIJsACgkQkX2Xpv6ydvT3/wCdHlcA6bYOPoY4LTvG4ZtvDWMq
> VHkAoLoLqfTr0dQ9+q9R8wTXou2JENzY
> =EOPG
> -END PGP SIGNATURE-
>
>
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>


-- 
Envie de tisser ?
http://yamatierea.org/papatchs/
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-08-18 Thread Oli44
Le 18/08/2011 20:07, abel.jer...@free.fr a écrit :
> Hi,
>
Salut Jérôme,
>
>> a) you shouldn't dynamically create abstractions while dsp is running,
>> as it slows down significantly.
> I would have liked to hear it before... May be I missed a message.
>
> How much is your "significantly" ?
depends on the machine as usual and also the niceness of your RT
settings on a Linux box
> But audio clics may occur for all sounds, not just for the new one, right ?
> Could we do whithout a [line~] object to turn on/off sounds smootly and avoid 
> audio clics ?
>
Why not try [switch~] inside of your abs?

La bise aux cagoles,
OH

-- 
oliv...@heinry.fr
Portfolio: http://olivier.heinry.fr
Blog 2.0 http://www.heinry.fr/olivier


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-08-18 Thread abel . jerome
Hi,

> what about the
> game you've talked about ?)

I will working on the "3D-game" audio part the next two weeks.
If I have time, I will write some notes about my recent tests.

> a) you shouldn't dynamically create abstractions while dsp is running,
> as it slows down significantly.

I would have liked to hear it before... May be I missed a message.

How much is your "significantly" ?
Do you have taken measures to see what happens whith 10 audio objects, 100 or 
1000 ?

> b) do [; pd dsp 0; pd dsp 1( right after your creation to fix the dsp-graph

But audio clics may occur for all sounds, not just for the new one, right ?
Could we do whithout a [line~] object to turn on/off sounds smootly and avoid 
audio clics ?

If we handle all sounds with a [line~]:
1 - stop all sounds smoothly (10 msec) with a GLOBAL send message
2 - wait 10 msec
3 - dsp 0
4 - create the new audio abstractions
5 - dsp 1
6 - turn on all sounds smoothly (10 msec) with a GLOBAL send message

Does it sound good ?
We have a 20 msec "hole" of sounds. I'm sure that it may be perceptible.
Imagine a sound of a bird turned off and on in 20 msec.
If we take 5 msec instead of 10 msec ...

Cheers,

Jerome

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-08-18 Thread IOhannes m zmoelnig
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 2011-08-18 13:49, Olivier B wrote:

> The last created abstraction produce sound as wanted.
> But the previous ones seems to be in a double sample rate or something like
> that...
> If I put and cut a box, everything becomes fine...
> 

???

a) you shouldn't dynamically create abstractions while dsp is running,
as it slows down significantly.

b) do [; pd dsp 0; pd dsp 1( right after your creation to fix the dsp-graph

fmasdr
IOhannes
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk5NIJsACgkQkX2Xpv6ydvT3/wCdHlcA6bYOPoY4LTvG4ZtvDWMq
VHkAoLoLqfTr0dQ9+q9R8wTXou2JENzY
=EOPG
-END PGP SIGNATURE-



smime.p7s
Description: S/MIME Cryptographic Signature
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-08-18 Thread Olivier B
Well...

Thanks a lot to Jérôme for this long review... (by the way, what about the
game you've talked about ?)

So... does anyone has find a proper solution to this ? :

#
10 - PURE DATA - CREATE AUDIO ABSTRACTIONS
--

There is a problem when I create an audio abstraction. The sound of the
abstraction is not working while other previous audio objects are working.
We have to send a mouseup and cut message to simulate mouse activity !
http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/dyn-audio-paths-abstraction-problem-2.png
#

For info :

With dsp on, I've tried to :

[dsp 1(
|
[pd-subpatch] // the one containing the audio abstractions dynamically
created

The last created abstraction produce sound as wanted.
But the previous ones seems to be in a double sample rate or something like
that...
If I put and cut a box, everything becomes fine...

For now, I use the Jérôme's trick of dynamically put an cut a box.
And it works fine in my case.

Cheers.

01ivier



2011/3/22 Mathieu Bouchard 

> On Tue, 22 Mar 2011, Rich E wrote:
>
>  Thanks for the insight into more pd internals, although I think I prefer
>> an approach that does not heavily rely on public pointers floating around,
>> like pd_newest
>>
>
> pd_newest is a function returning a pointer, not a pointer itself. that's
> an easy mistake to do, especially as the return value of it gets almost
> always cast to a more specific type such as :
>
>  t_my_something_tilde *stuff = (t_my_something_tilde *)pd_newest();
>
>
>  (it is funny that it is declared in m_pd.h, but then there is a comment
>> above its implementation that it is a hack, maybe be removed or redesigned).
>>
>
> No, it's not funny. Miller will call "hacks" things that are quite normal
> to be doing, and then forget about them entirely, and 15 years later, people
> like you still assume that the comments mean something, even though in the
> meantime 13 or 42 developers had to call pd_newest() somewhere because it's
> the only way to do a rather basic thing.
>
>
>   By the way, if I call pd_newest after glob_evalfile(), will it give me
>> a reference to the patch?
>>
>
> From what I know and from what I can read quickly, you wouldn't get it,
> you'd get the last object created in the patch, but I didn't try it.
>
> However, canvas_popabstraction does set pd_newest, so you can already use
> pd_newest() if you pretend that the patch is an abstraction.
>
>
>  About namecanvas, there were two issues that I found when I had a system
>> for dynamically loading/unloading and linking together patches that
>> contained audio: 1) DSP had to be shut off and then turned back on once the
>> linking was done.  Sometimes I wouldn't even get audio out of an object
>> until this happened.
>>
>
> Ah ok, this is not the responsibility of [namecanvas], but I know what you
> mean.
>
>
>  2) closing a patch that had audio receivers containing $ variables via the
>> menuclose message was unstable, and would sometimes crash pd.
>>
>
> I don't see how this could ever happen. Is there a way to make a very small
> patch that causes that crash to happen ?
>
>
>  I didn't ever get to the bottom of these issues, but from what I
>> understand, [namecanvas] doesn't handle deallocation too well.  I lost all
>> this code anyway,
>>
>
> What do you mean you "lost" it ?
>
>
>  so the new approach I am using for patch maintainence is through libpd and
>> an object oriented language (objective C at the moment, although I think I
>> would prefer python for running pd on a laptop/desktop).
>>
>
> So why don't you use libpd's python bindings ?
>
>
>  __**__**
> ___
> | Mathieu Bouchard  tél: +1.514.383.3801  Villeray, Montréal, QC
>
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>


-- 
Envie de tisser ?
http://yamatierea.org/papatchs/
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-22 Thread Mathieu Bouchard

On Tue, 22 Mar 2011, Rich E wrote:

Thanks for the insight into more pd internals, although I think I prefer 
an approach that does not heavily rely on public pointers floating 
around, like pd_newest


pd_newest is a function returning a pointer, not a pointer itself. that's 
an easy mistake to do, especially as the return value of it gets almost 
always cast to a more specific type such as :


  t_my_something_tilde *stuff = (t_my_something_tilde *)pd_newest();

(it is funny that it is declared in m_pd.h, but then there is a comment 
above its implementation that it is a hack, maybe be removed or 
redesigned).


No, it's not funny. Miller will call "hacks" things that are quite normal 
to be doing, and then forget about them entirely, and 15 years later, 
people like you still assume that the comments mean something, even though 
in the meantime 13 or 42 developers had to call pd_newest() somewhere 
because it's the only way to do a rather basic thing.



 By the way, if I call pd_newest after glob_evalfile(), will it give me
a reference to the patch?


From what I know and from what I can read quickly, you wouldn't get it, 

you'd get the last object created in the patch, but I didn't try it.

However, canvas_popabstraction does set pd_newest, so you can already use 
pd_newest() if you pretend that the patch is an abstraction.


About namecanvas, there were two issues that I found when I had a system 
for dynamically loading/unloading and linking together patches that 
contained audio: 1) DSP had to be shut off and then turned back on once 
the linking was done.  Sometimes I wouldn't even get audio out of an 
object until this happened.


Ah ok, this is not the responsibility of [namecanvas], but I know what you 
mean.


2) closing a patch that had audio receivers containing $ variables via 
the menuclose message was unstable, and would sometimes crash pd.  


I don't see how this could ever happen. Is there a way to make a very 
small patch that causes that crash to happen ?


I didn't ever get to the bottom of these issues, but from what I 
understand, [namecanvas] doesn't handle deallocation too well.  I lost 
all this code anyway,


What do you mean you "lost" it ?

so the new approach I am using for patch maintainence is through libpd 
and an object oriented language (objective C at the moment, although I 
think I would prefer python for running pd on a laptop/desktop).


So why don't you use libpd's python bindings ?

 ___
| Mathieu Bouchard  tél: +1.514.383.3801  Villeray, Montréal, QC___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-22 Thread Rich E
Thanks for the insight into more pd internals, although I think I prefer an
approach that does not heavily rely on public pointers floating around, like
pd_newest (it is funny that it is declared in m_pd.h, but then there is a
comment above its implementation that it is a hack, maybe be removed or
redesigned). I chose to use glob_evalfile because it is the closest method I
can find to opening a patch in the 'normal' way.  By the way, if I call
pd_newest after glob_evalfile(), will it give me a reference to the patch?
 I'd try it out, but I don't have my dev machine at the moment.

About namecanvas, there were two issues that I found when I had a system for
dynamically loading/unloading and linking together patches that contained
audio:

1) DSP had to be shut off and then turned back on once the linking was done.
 Sometimes I wouldn't even get audio out of an object until this happened.

2) closing a patch that had audio receivers containing $ variables via the
menuclose message was unstable, and would sometimes crash pd.

I didn't ever get to the bottom of these issues, but from what I understand,
[namecanvas] doesn't handle deallocation too well.  I lost all this code
anyway, so the new approach I am using for patch maintainence is through
libpd and an object oriented language (objective C at the moment, although I
think I would prefer python for running pd on a laptop/desktop).  It is just
really nice.

Cheers,
Rich

On Mon, Mar 21, 2011 at 8:30 AM, Mathieu Bouchard wrote:

> On Sun, 20 Mar 2011, Rich E wrote:
>
>  Dynamic patch loading/unloading (not dynamic patching) could also be done
>> directly in a pd external, provided the following small patch is accepted (:
>>
>> http://sourceforge.net/tracker/?func=detail&aid=3189135&group_id=55736&atid=478072
>>
>
> In the meanwhile, a simple workaround is to access the canvas_list global
> variable and walk the linked list of canvases to figure out what has been
> added. Sounds like a hack but is much faster than instantiating an object
> from the linked-list of at least two hundred or thousand names in
> pd_objectmaker.
>
> Besides, loading a patch with glob_evalfile is not the only way to load a
> patch. You can also load it through pd_objectmaker by pretending that it is
> an abstraction. Then you pick up the pointer using pd_newest(). In that
> case, however, don't bother looking in canvas_list, it's not there.
>
> Once you have a canvas pointer, you can find the $0 easily. It involves
> using a private interface that you can have by copying a struct definition
> from pd's source code in the same manner that several externals already use.
> Right after that, ce_dollarzero is yours.
>
>
>  Lastly, the $0 value that libpd recovers lets you send signals or messages
>> to a unique patch, without the need of [namecanvas] - a method that causes a
>> bag full of problems in itself when it comes to dynamic patch
>> loading/unloading.
>>
>
> I'm not sure I understand. What are the problems with [namecanvas] ?
>
>  ___
> | Mathieu Bouchard  tél: +1.514.383.3801  Villeray, Montréal, QC
>
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-20 Thread Mathieu Bouchard

On Sun, 20 Mar 2011, Rich E wrote:

Dynamic patch loading/unloading (not dynamic patching) could also be 
done directly in a pd external, provided the following small patch is 
accepted (: 
http://sourceforge.net/tracker/?func=detail&aid=3189135&group_id=55736&atid=478072


In the meanwhile, a simple workaround is to access the canvas_list global 
variable and walk the linked list of canvases to figure out what has been 
added. Sounds like a hack but is much faster than instantiating an object 
from the linked-list of at least two hundred or thousand names in 
pd_objectmaker.


Besides, loading a patch with glob_evalfile is not the only way to load a 
patch. You can also load it through pd_objectmaker by pretending that it 
is an abstraction. Then you pick up the pointer using pd_newest(). In that 
case, however, don't bother looking in canvas_list, it's not there.


Once you have a canvas pointer, you can find the $0 easily. It involves 
using a private interface that you can have by copying a struct definition 
from pd's source code in the same manner that several externals already 
use. Right after that, ce_dollarzero is yours.


Lastly, the $0 value that libpd recovers lets you send signals or 
messages to a unique patch, without the need of [namecanvas] - a method 
that causes a bag full of problems in itself when it comes to dynamic 
patch loading/unloading.


I'm not sure I understand. What are the problems with [namecanvas] ?

 ___
| Mathieu Bouchard  tél: +1.514.383.3801  Villeray, Montréal, QC
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-19 Thread Richie Cyngler
I am just a lowly Pd user, not a dev. How would I use libpd? Does it work
just like Pd, but embeddable in other devices? or are we talking lines of
code?

thanks

On Sun, Mar 20, 2011 at 2:04 PM, Rich E  wrote:

>
>> Oh, cool, I wasn't aware of that. Can you tell a bit more about the
>> performance
>> of this approach and how it compares to dynamic patching for dynamic
>> instantiation
>> of objects/patches?
>>
>>  Ciao
>
>> --
>>  Frank BarknechtDo You RjDj.me?  _ __footils.org__
>>
>>
> Initial performance is a little faster, as it doesn't take about 1,000 pd
> objects to open the patch, just a call to glob_evalfile (through whatever
> wrapper you are using to interface libpd), but that wasn't the main concern.
>  The biggest bonus for me is that you can instantiate the patches in an
> object-orientated manner (and in an object orientate language like python,
> java, obj-c, c++, etc), on the fly.  Doing this with dynamic patching
> involved using workarounds (like deleting to contents of a subpatch in order
> to just delete an embedded patch) which seemed awkward and bug prone.
>  Lastly, the $0 value that libpd recovers lets you send signals or messages
> to a unique patch, without the need of [namecanvas] - a method that causes a
> bag full of problems in itself when it comes to dynamic patch
> loading/unloading.
>
> Dynamic patch loading/unloading (not dynamic patching) could also be done
> directly in a pd external, provided the following small patch is accepted (:
>
> http://sourceforge.net/tracker/?func=detail&aid=3189135&group_id=55736&atid=478072
>
> Cheers,
> Rich
>
> ___
>> Pd-list@iem.at mailing list
>> UNSUBSCRIBE and account-management ->
>> http://lists.puredata.info/listinfo/pd-list
>>
>
>
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>


-- 
Richie
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-19 Thread Rich E
>
>
> Oh, cool, I wasn't aware of that. Can you tell a bit more about the
> performance
> of this approach and how it compares to dynamic patching for dynamic
> instantiation
> of objects/patches?
>
>  Ciao

> --
>  Frank BarknechtDo You RjDj.me?  _ __footils.org__
>
>
Initial performance is a little faster, as it doesn't take about 1,000 pd
objects to open the patch, just a call to glob_evalfile (through whatever
wrapper you are using to interface libpd), but that wasn't the main concern.
 The biggest bonus for me is that you can instantiate the patches in an
object-orientated manner (and in an object orientate language like python,
java, obj-c, c++, etc), on the fly.  Doing this with dynamic patching
involved using workarounds (like deleting to contents of a subpatch in order
to just delete an embedded patch) which seemed awkward and bug prone.
 Lastly, the $0 value that libpd recovers lets you send signals or messages
to a unique patch, without the need of [namecanvas] - a method that causes a
bag full of problems in itself when it comes to dynamic patch
loading/unloading.

Dynamic patch loading/unloading (not dynamic patching) could also be done
directly in a pd external, provided the following small patch is accepted (:
http://sourceforge.net/tracker/?func=detail&aid=3189135&group_id=55736&atid=478072

Cheers,
Rich

___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-19 Thread Frank Barknecht
Hi,

On Thu, Mar 17, 2011 at 01:17:28AM +1100, Rich E wrote:
> > libpd will make a complete instance of Pd available inside of another
> > application, but it does not deal with instantiating single objects.
> 
> libpd does (handle instantiating patches) as of about 2 weeks ago.  It
> maintains the $0 value of the patch as well, so you can send values to
> unique receivers.  You can make as many instances of a patch as you
> want and control them all separately, on the fly.

Oh, cool, I wasn't aware of that. Can you tell a bit more about the performance
of this approach and how it compares to dynamic patching for dynamic 
instantiation
of objects/patches?

Ciao
-- 
 Frank BarknechtDo You RjDj.me?  _ __footils.org__

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-16 Thread John Harrison
Yeah the zak system. That's what I used. I recall it was a bit of a mental
teaser as you said.

On Wed, Mar 16, 2011 at 4:23 AM, Andy Farnell wrote:

>
>
> And if you're going to use Csound there's the zak system of course.
> It's a pig to set up and very hard mental work to keep track of
> which streams have been activated or cleared to avoid clips or
> feedback... but it works in practice to give any to any dynamic
> patching so you can have modular synths being gracefully repatched
> at runtime.
>
> a.
>
>
>
> On Tue, 15 Mar 2011 23:29:17 -0500
> John Harrison  wrote:
>
> > Not that I am necessarily recommending it but, Csound will allow you to
> > instantiate multiple instances of objects at runtime. I did this with
> > Csound awhile ago and haven't touched Csound since but the general idea
> > was create all your instruments to accept parameters and store
> > input/output connections etc. in tables. You tell Csound to read its
> > score file from stdin and you create/destroy instruments with various
> > parameters by sending to Csound's stdin using the general-purpose
> > computer language of your choice. (I used Python). Hopefully Csound has
> > graduated to allowing instances of instruments to be created through OSC
> > as well as stdin at this point.
> >
> > -John
>
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-16 Thread Rich E
See this thread at Pd Everywhere:

http://noisepages.com/groups/pd-everywhere/forum/topic/new-patch-handling-api/

On Thu, Mar 17, 2011 at 1:17 AM, Rich E  wrote:
> Hi,
>
>
>> libpd will make a complete instance of Pd available inside of another
>> application, but it does not deal with instantiating single objects.
>
> libpd does (handle instantiating patches) as of about 2 weeks ago.  It
> maintains the $0 value of the patch as well, so you can send values to
> unique receivers.  You can make as many instances of a patch as you
> want and control them all separately, on the fly.
>
>> This is
>> still only possible with the "usual" mechanism Pd offers, i.e. dynamic
>> patching, and it has the same disadvantages.
>>
>> Maybe LuaAV would be worth a look, too?
>>
>> Ciao
>> --
>>  Frank Barknecht            Do You RjDj.me?          _ __footils.org__
>>
>> ___
>> Pd-list@iem.at mailing list
>> UNSUBSCRIBE and account-management -> 
>> http://lists.puredata.info/listinfo/pd-list
>>
>

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-16 Thread Rich E
Hi,


> libpd will make a complete instance of Pd available inside of another
> application, but it does not deal with instantiating single objects.

libpd does (handle instantiating patches) as of about 2 weeks ago.  It
maintains the $0 value of the patch as well, so you can send values to
unique receivers.  You can make as many instances of a patch as you
want and control them all separately, on the fly.

> This is
> still only possible with the "usual" mechanism Pd offers, i.e. dynamic
> patching, and it has the same disadvantages.
>
> Maybe LuaAV would be worth a look, too?
>
> Ciao
> --
>  Frank Barknecht            Do You RjDj.me?          _ __footils.org__
>
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list
>

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-16 Thread Andy Farnell


And if you're going to use Csound there's the zak system of course.
It's a pig to set up and very hard mental work to keep track of
which streams have been activated or cleared to avoid clips or 
feedback... but it works in practice to give any to any dynamic
patching so you can have modular synths being gracefully repatched
at runtime.

a.



On Tue, 15 Mar 2011 23:29:17 -0500
John Harrison  wrote:

> Not that I am necessarily recommending it but, Csound will allow you to 
> instantiate multiple instances of objects at runtime. I did this with 
> Csound awhile ago and haven't touched Csound since but the general idea 
> was create all your instruments to accept parameters and store 
> input/output connections etc. in tables. You tell Csound to read its 
> score file from stdin and you create/destroy instruments with various 
> parameters by sending to Csound's stdin using the general-purpose 
> computer language of your choice. (I used Python). Hopefully Csound has 
> graduated to allowing instances of instruments to be created through OSC 
> as well as stdin at this point.
> 
> -John
> 
> On 03/15/2011 03:15 AM, Frank Barknecht wrote:
> > Hi,
> >
> > On Tue, Mar 15, 2011 at 12:07:05AM +0100, Jérôme Abel wrote:
> >> I'm working on an open source multiuser game with a sound experimentation 
> >> focus.
> >> The choosen sound engine is our favorite one Pure Data. Let's imagine 
> >> populate a 3D world with pd sound patchs !
> >> The issue is to create/destroy audio abstractions (made by users/artists) 
> >> and connect/disconnect them.
> >> The audio path system must be compliant with paths in a 3D world. A sound 
> >> pass through rooms and apertures :
> >> http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/pathfinding.png
> >>
> >> It must be dynamic like a game. I was enjoying doing this with pd, but ... 
> >> my hair become more and more white.
> >> It's quite difficult.
> >>
> >> I propose here to write a little review of this issue. To be completed, to 
> >> be rectified.
> >> Don't forget that the best is the easiest way (less compilation, less 
> >> dependancies, less bad tricks, etc.) and cross-platform (Linux/MacOSX/Win).
> > ...
> >> 4 - PURE DATA - LIBPD
> >> -
> >> Let's come back with Pd. We know that Pd was used in a game Spore :
> >> http://lists.puredata.info/pipermail/pd-list/2007-11/056212.html
> >>
> >> It could be a solution to handle dynamic audio patching. Any feedbacks ?
> >>
> >> Libpd turns Pd into an embeddable library, so you can use Pd as a sound 
> >> engine in mobile phone apps, games, web pages, and art projects
> >> http://puredata.info/community/projects/software/libpd/
> > libpd will make a complete instance of Pd available inside of another
> > application, but it does not deal with instantiating single objects. This is
> > still only possible with the "usual" mechanism Pd offers, i.e. dynamic
> > patching, and it has the same disadvantages.
> >
> > Maybe LuaAV would be worth a look, too?
> >
> > Ciao
> 
> 
> 
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list


-- 
Andy Farnell 

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-15 Thread John Harrison
Not that I am necessarily recommending it but, Csound will allow you to 
instantiate multiple instances of objects at runtime. I did this with 
Csound awhile ago and haven't touched Csound since but the general idea 
was create all your instruments to accept parameters and store 
input/output connections etc. in tables. You tell Csound to read its 
score file from stdin and you create/destroy instruments with various 
parameters by sending to Csound's stdin using the general-purpose 
computer language of your choice. (I used Python). Hopefully Csound has 
graduated to allowing instances of instruments to be created through OSC 
as well as stdin at this point.


-John

On 03/15/2011 03:15 AM, Frank Barknecht wrote:

Hi,

On Tue, Mar 15, 2011 at 12:07:05AM +0100, Jérôme Abel wrote:

I'm working on an open source multiuser game with a sound experimentation focus.
The choosen sound engine is our favorite one Pure Data. Let's imagine populate 
a 3D world with pd sound patchs !
The issue is to create/destroy audio abstractions (made by users/artists) and 
connect/disconnect them.
The audio path system must be compliant with paths in a 3D world. A sound pass 
through rooms and apertures :
http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/pathfinding.png

It must be dynamic like a game. I was enjoying doing this with pd, but ... my 
hair become more and more white.
It's quite difficult.

I propose here to write a little review of this issue. To be completed, to be 
rectified.
Don't forget that the best is the easiest way (less compilation, less 
dependancies, less bad tricks, etc.) and cross-platform (Linux/MacOSX/Win).

...

4 - PURE DATA - LIBPD
-
Let's come back with Pd. We know that Pd was used in a game Spore :
http://lists.puredata.info/pipermail/pd-list/2007-11/056212.html

It could be a solution to handle dynamic audio patching. Any feedbacks ?

Libpd turns Pd into an embeddable library, so you can use Pd as a sound engine 
in mobile phone apps, games, web pages, and art projects
http://puredata.info/community/projects/software/libpd/

libpd will make a complete instance of Pd available inside of another
application, but it does not deal with instantiating single objects. This is
still only possible with the "usual" mechanism Pd offers, i.e. dynamic
patching, and it has the same disadvantages.

Maybe LuaAV would be worth a look, too?

Ciao




___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-15 Thread Frank Barknecht
Hi,

On Tue, Mar 15, 2011 at 12:07:05AM +0100, Jérôme Abel wrote:
> I'm working on an open source multiuser game with a sound experimentation 
> focus.
> The choosen sound engine is our favorite one Pure Data. Let's imagine 
> populate a 3D world with pd sound patchs ! 
> The issue is to create/destroy audio abstractions (made by users/artists) and 
> connect/disconnect them.
> The audio path system must be compliant with paths in a 3D world. A sound 
> pass through rooms and apertures :
> http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/pathfinding.png
> 
> It must be dynamic like a game. I was enjoying doing this with pd, but ... my 
> hair become more and more white. 
> It's quite difficult. 
> 
> I propose here to write a little review of this issue. To be completed, to be 
> rectified.
> Don't forget that the best is the easiest way (less compilation, less 
> dependancies, less bad tricks, etc.) and cross-platform (Linux/MacOSX/Win).
...
> 4 - PURE DATA - LIBPD
> -
> Let's come back with Pd. We know that Pd was used in a game Spore :
> http://lists.puredata.info/pipermail/pd-list/2007-11/056212.html
> 
> It could be a solution to handle dynamic audio patching. Any feedbacks ?
> 
> Libpd turns Pd into an embeddable library, so you can use Pd as a sound 
> engine in mobile phone apps, games, web pages, and art projects
> http://puredata.info/community/projects/software/libpd/

libpd will make a complete instance of Pd available inside of another
application, but it does not deal with instantiating single objects. This is
still only possible with the "usual" mechanism Pd offers, i.e. dynamic
patching, and it has the same disadvantages.

Maybe LuaAV would be worth a look, too? 

Ciao
-- 
 Frank BarknechtDo You RjDj.me?  _ __footils.org__

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Dynamic patching with audio - review

2011-03-14 Thread Jonathan Wilkes
Have you looked at the [switch~] object?  It doesn't allow you to 
create/destroy the abstractions, but it does allow you to turn off dsp in 
each of them as necessary.

-Jonathan

--- On Tue, 3/15/11, Jérôme Abel  wrote:

> From: Jérôme Abel 
> Subject: [PD] Dynamic patching with audio - review
> To: pd-list@iem.at
> Date: Tuesday, March 15, 2011, 12:07 AM
> Hi dynamic community,
> 
> I'm working on an open source multiuser game with a sound
> experimentation focus.
> The choosen sound engine is our favorite one Pure Data.
> Let's imagine populate a 3D world with pd sound patchs ! 
> The issue is to create/destroy audio abstractions (made by
> users/artists) and connect/disconnect them.
> The audio path system must be compliant with paths in a 3D
> world. A sound pass through rooms and apertures :
> http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/pathfinding.png
> 
> It must be dynamic like a game. I was enjoying doing this
> with pd, but ... my hair become more and more white. 
> It's quite difficult. 
> 
> I propose here to write a little review of this issue. To
> be completed, to be rectified.
> Don't forget that the best is the easiest way (less
> compilation, less dependancies, less bad tricks, etc.) and
> cross-platform (Linux/MacOSX/Win).
> 
> **
> *** DYNAMIC PATCHING TESTS ***
> **
> All my tests and comments here (patchs, screenshots) :
> http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching.tar.gz
> 
> 1 - PURE DATA
> --
> First, considering audio in Pd, we can read "do not use
> dynamic patching" !!
> http://puredata.info/docs/tutorials/TipsAndTricks#how-to-avoid-audio-drop-outs
> 
> It's not very encouraging. So what ? Which tool use then ?
> 
> 
> A comparison of audio tools : 
> http://en.wikipedia.org/wiki/Comparison_of_audio_synthesis_environments
> 
> 2 - SUPERCOLLIDER
> -
> Supercollider seems to work well with dynamic audio
> connections. We can read "Adding an Effect Dynamically" and
> so on.
> http://danielnouri.org/docs/SuperColliderHelp/Tutorials/Tutorial.html
> 
> "It is an efficient and expressive dynamic programming
> language"
> http://en.wikipedia.org/wiki/SuperCollider
> 
> So, how interface it with a pd patch ? I know that it's ok
> with OSC messages, but could we imagine, Supercollider as a
> the connection manager and Pd as the sounds loader ? An
> audio communication between Supecollider and Pd.
> 
> 3 - PYTHON
> --
> Some projects use Python to make dynamic patching. I don't
> know if those projects are really working with full
> functionnalities like a complete audio path system. I think
> the most advanced is Purity but may be not enough, see the
> roadmap. Any feedbacks in use ?
> 
> Purity is a Python library for Pure Data dynamic patching.
> http://wiki.dataflow.ws/Purity
> 
> Pyata - a Library that allows you to use Pure Data inside
> Python
> svn checkout http://pyata.googlecode.com/svn/trunk/ pyata-read-only
> 
> 
> Automata-topd is a small collection of Python classes to
> communicate with Pure Data sending FUDI messages by socket.
> https://github.com/automata/topd
> 
> PuréeData is a browser-based PureData interface for a
> remote, central server that allows live, collaborative
> patching for anyone, anywhere.
> https://github.com/virgildisgr4ce/PureeData
> 
> 4 - PURE DATA - LIBPD
> -
> Let's come back with Pd. We know that Pd was used in a game
> Spore :
> http://lists.puredata.info/pipermail/pd-list/2007-11/056212.html
> 
> It could be a solution to handle dynamic audio patching.
> Any feedbacks ?
> 
> Libpd turns Pd into an embeddable library, so you can use
> Pd as a sound engine in mobile phone apps, games, web pages,
> and art projects
> http://puredata.info/community/projects/software/libpd/
> 
> How to use Pure Data as an API
> http://jeraman.wordpress.com/2009/03/22/how-to-use-pure-data-as-a-api/
> 
> 5 - PURE DATA - DYN~
> 
> This external allows the dynamic creation and deletion,
> connection and disconnection of standard Pd objects and
> abstractions.
> But : dyn~ is bound to the PD version it is compiled for.
> http://puredata.info/Members/thomas/dynext
> 
> I success compile it. It seems a good system. If we compile
> a binary for 3 or more plateforms, will it work just with
> the binaries ?
> We must see advantages with my system (pd-messages + index
> + abstractions)
> http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/dyn-audio-paths-dyn~.png
> 
&

[PD] Dynamic patching with audio - review

2011-03-14 Thread Jérôme Abel
Hi dynamic community,

I'm working on an open source multiuser game with a sound experimentation focus.
The choosen sound engine is our favorite one Pure Data. Let's imagine populate 
a 3D world with pd sound patchs ! 
The issue is to create/destroy audio abstractions (made by users/artists) and 
connect/disconnect them.
The audio path system must be compliant with paths in a 3D world. A sound pass 
through rooms and apertures :
http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/pathfinding.png

It must be dynamic like a game. I was enjoying doing this with pd, but ... my 
hair become more and more white. 
It's quite difficult. 

I propose here to write a little review of this issue. To be completed, to be 
rectified.
Don't forget that the best is the easiest way (less compilation, less 
dependancies, less bad tricks, etc.) and cross-platform (Linux/MacOSX/Win).

**
*** DYNAMIC PATCHING TESTS ***
**
All my tests and comments here (patchs, screenshots) :
http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching.tar.gz

1 - PURE DATA
--
First, considering audio in Pd, we can read "do not use dynamic patching" !!
http://puredata.info/docs/tutorials/TipsAndTricks#how-to-avoid-audio-drop-outs

It's not very encouraging. So what ? Which tool use then ? 

A comparison of audio tools : 
http://en.wikipedia.org/wiki/Comparison_of_audio_synthesis_environments

2 - SUPERCOLLIDER
-
Supercollider seems to work well with dynamic audio connections. We can read 
"Adding an Effect Dynamically" and so on.
http://danielnouri.org/docs/SuperColliderHelp/Tutorials/Tutorial.html

"It is an efficient and expressive dynamic programming language"
http://en.wikipedia.org/wiki/SuperCollider

So, how interface it with a pd patch ? I know that it's ok with OSC messages, 
but could we imagine, Supercollider as a the connection manager and Pd as the 
sounds loader ? An audio communication between Supecollider and Pd.

3 - PYTHON
--
Some projects use Python to make dynamic patching. I don't know if those 
projects are really working with full functionnalities like a complete audio 
path system. I think the most advanced is Purity but may be not enough, see the 
roadmap. Any feedbacks in use ?

Purity is a Python library for Pure Data dynamic patching.
http://wiki.dataflow.ws/Purity

Pyata - a Library that allows you to use Pure Data inside Python
svn checkout http://pyata.googlecode.com/svn/trunk/ pyata-read-only 

Automata-topd is a small collection of Python classes to communicate with Pure 
Data sending FUDI messages by socket.
https://github.com/automata/topd

PuréeData is a browser-based PureData interface for a remote, central server 
that allows live, collaborative patching for anyone, anywhere.
https://github.com/virgildisgr4ce/PureeData

4 - PURE DATA - LIBPD
-
Let's come back with Pd. We know that Pd was used in a game Spore :
http://lists.puredata.info/pipermail/pd-list/2007-11/056212.html

It could be a solution to handle dynamic audio patching. Any feedbacks ?

Libpd turns Pd into an embeddable library, so you can use Pd as a sound engine 
in mobile phone apps, games, web pages, and art projects
http://puredata.info/community/projects/software/libpd/

How to use Pure Data as an API
http://jeraman.wordpress.com/2009/03/22/how-to-use-pure-data-as-a-api/

5 - PURE DATA - DYN~

This external allows the dynamic creation and deletion, connection and 
disconnection of standard Pd objects and abstractions.
But : dyn~ is bound to the PD version it is compiled for.
http://puredata.info/Members/thomas/dynext

I success compile it. It seems a good system. If we compile a binary for 3 or 
more plateforms, will it work just with the binaries ?
We must see advantages with my system (pd-messages + index + abstractions)
http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/dyn-audio-paths-dyn~.png

6 - PURE DATA - IEMGUTS
---
We know reflection in Pd with iemguts. I'm not comfortable with it. Any 
feedbacks about the issue ?
https://pure-data.svn.sourceforge.net/svnroot/pure-data/trunk/externals/iem/iemguts/
http://lac.linuxaudio.org/2009/cdm/Saturday/18_Zmoelnig/zmoelnig_pdreflection.pdf

7 - PURE DATA - PD MESSAGES
---
A review with pd internal messsages.
http://puredata.info/Members/eni/techniques

In Pd :
/usr/lib/pd-extended/doc/Pure Data/manuals/pd-msg

Basic tests :
http://abel.jerome.free.fr/newatlantis/AudioDynamicPatching/images/dyn-audio-paths-pd-msg.png

8 - PURE DATA - MATRIX~
---
'iemmatrix' provides a suite of matrix processing and linear algebra 
functionality.
http://puredata.info/community/projects/software/iemmatrix

The problem here, the numbers of rows and columns are fixed.

9 - PURE DATA - COORDS / WIRELESS
-
System with receive~/throw~ and catch~/send~ (many-to-man