Hi, how would one code an 8 channel panner, considering a circle speaker setup?
I'm not looking for an external, I wanna know how to do it as a patch, then as an external into my externals library - as a request :)
But if there's an external around, maybe I could check it out how it's done ;)
thanks
Here is one example that uses a signal for the position input.
Best!
Edwin
#N canvas 113 114 1267 716 12; #X obj 554 69 inlet~; #X obj 149 483 *~; #X obj 90 64 inlet~; #X obj 149 510 outlet~; #X obj 191 599 snapshot~; #X floatatom 192 625 5 0 0 0 - - -; #X obj 264 599 snapshot~; #X floatatom 265 625 5 0 0 0 - - -; #X obj 336 599 snapshot~; #X floatatom 337 625 5 0 0 0 - - -; #X obj 410 599 snapshot~; #X floatatom 411 625 5 0 0 0 - - -; #X obj 486 599 snapshot~; #X floatatom 487 625 5 0 0 0 - - -; #X obj 560 599 snapshot~; #X floatatom 561 625 5 0 0 0 - - -; #X obj 634 599 snapshot~; #X floatatom 635 625 5 0 0 0 - - -; #X obj 706 599 snapshot~; #X obj 38 489 metro 50; #X obj 38 458 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 554 202 *~ 0.25; #X obj 167 437 cos~; #X obj 167 408 clip~ -0.25 0.25; #X obj 274 483 *~; #X obj 274 510 outlet~; #X obj 292 437 cos~; #X obj 397 483 *~; #X obj 397 510 outlet~; #X obj 415 437 cos~; #X obj 521 483 *~; #X obj 521 510 outlet~; #X obj 539 437 cos~; #X obj 646 483 *~; #X obj 646 510 outlet~; #X obj 664 437 cos~; #X obj 771 483 *~; #X obj 771 510 outlet~; #X obj 789 437 cos~; #X obj 894 483 *~; #X obj 894 510 outlet~; #X obj 912 437 cos~; #X obj 1018 483 *~; #X obj 1018 510 outlet~; #X obj 1036 437 cos~; #X obj 292 408 clip~ -0.25 0.25; #X obj 415 408 clip~ -0.25 0.25; #X obj 539 408 clip~ -0.25 0.25; #X obj 664 408 clip~ -0.25 0.25; #X obj 912 408 clip~ -0.25 0.25; #X obj 1036 407 clip~ -0.25 0.25; #X obj 292 375 -~ 0.25; #X obj 415 375 -~ 0.5; #X obj 539 375 -~ 0.75; #X obj 664 376 -~ 1; #X obj 788 374 -~ 1.25; #X obj 912 376 -~ 1.5; #X obj 1035 374 -~ 1.75; #X floatatom 706 625 5 0 0 0 - - -; #X obj 181 333 >~ 1.75; #X obj 181 367 *~ -2; #X obj 788 408 clip~ -0.25 0.25; #X obj 566 138 <~ 0; #X obj 566 170 *~ 8; #X obj 554 101 cyclone/%~ 8; #X connect 0 0 64 0; #X connect 1 0 3 0; #X connect 2 0 1 0; #X connect 2 0 24 0; #X connect 2 0 27 0; #X connect 2 0 30 0; #X connect 2 0 33 0; #X connect 2 0 36 0; #X connect 2 0 39 0; #X connect 2 0 42 0; #X connect 4 0 5 0; #X connect 6 0 7 0; #X connect 8 0 9 0; #X connect 10 0 11 0; #X connect 12 0 13 0; #X connect 14 0 15 0; #X connect 16 0 17 0; #X connect 18 0 58 0; #X connect 19 0 4 0; #X connect 19 0 6 0; #X connect 19 0 8 0; #X connect 19 0 10 0; #X connect 19 0 12 0; #X connect 19 0 14 0; #X connect 19 0 16 0; #X connect 19 0 18 0; #X connect 20 0 19 0; #X connect 21 0 51 0; #X connect 21 0 52 0; #X connect 21 0 53 0; #X connect 21 0 54 0; #X connect 21 0 55 0; #X connect 21 0 56 0; #X connect 21 0 57 0; #X connect 21 0 23 0; #X connect 21 0 59 0; #X connect 22 0 1 1; #X connect 22 0 4 0; #X connect 23 0 22 0; #X connect 24 0 25 0; #X connect 26 0 24 1; #X connect 26 0 6 0; #X connect 27 0 28 0; #X connect 29 0 27 1; #X connect 29 0 8 0; #X connect 30 0 31 0; #X connect 32 0 30 1; #X connect 32 0 10 0; #X connect 33 0 34 0; #X connect 35 0 33 1; #X connect 35 0 12 0; #X connect 36 0 37 0; #X connect 38 0 36 1; #X connect 38 0 14 0; #X connect 39 0 40 0; #X connect 41 0 39 1; #X connect 41 0 16 0; #X connect 42 0 43 0; #X connect 44 0 42 1; #X connect 44 0 18 0; #X connect 45 0 26 0; #X connect 46 0 29 0; #X connect 47 0 32 0; #X connect 48 0 35 0; #X connect 49 0 41 0; #X connect 50 0 44 0; #X connect 51 0 45 0; #X connect 52 0 46 0; #X connect 53 0 47 0; #X connect 54 0 48 0; #X connect 55 0 61 0; #X connect 56 0 49 0; #X connect 57 0 50 0; #X connect 59 0 60 0; #X connect 60 0 23 0; #X connect 61 0 38 0; #X connect 62 0 63 0; #X connect 63 0 21 0; #X connect 64 0 62 0; #X connect 64 0 21 0;
On 10 Sep 2019, at 06:18, Alexandre Torres Porres porres@gmail.com wrote:
Hi, how would one code an 8 channel panner, considering a circle speaker setup? I'm not looking for an external, I wanna know how to do it as a patch, then as an external into my externals library - as a request :)
But if there's an external around, maybe I could check it out how it's done ;)
thanks _______________________________________________ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
hi, I was thinking of something more sophisticated, this only sweeps through an array, kinda like my else/xgate2~ object
for this panner, I was hoping to be able to set the position in a 2D space. This would be much like my else/pan4~ object, but for 8 speakers and a circular setup.
cheers
Em ter, 10 de set de 2019 às 03:48, Edwin van der Heide pd@evdh.net escreveu:
Here is one example that uses a signal for the position input.
Best!
Edwin
#N canvas 113 114 1267 716 12; #X obj 554 69 inlet~; #X obj 149 483 *~; #X obj 90 64 inlet~; #X obj 149 510 outlet~; #X obj 191 599 snapshot~; #X floatatom 192 625 5 0 0 0 - - -; #X obj 264 599 snapshot~; #X floatatom 265 625 5 0 0 0 - - -; #X obj 336 599 snapshot~; #X floatatom 337 625 5 0 0 0 - - -; #X obj 410 599 snapshot~; #X floatatom 411 625 5 0 0 0 - - -; #X obj 486 599 snapshot~; #X floatatom 487 625 5 0 0 0 - - -; #X obj 560 599 snapshot~; #X floatatom 561 625 5 0 0 0 - - -; #X obj 634 599 snapshot~; #X floatatom 635 625 5 0 0 0 - - -; #X obj 706 599 snapshot~; #X obj 38 489 metro 50; #X obj 38 458 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 554 202 *~ 0.25; #X obj 167 437 cos~; #X obj 167 408 clip~ -0.25 0.25; #X obj 274 483 *~; #X obj 274 510 outlet~; #X obj 292 437 cos~; #X obj 397 483 *~; #X obj 397 510 outlet~; #X obj 415 437 cos~; #X obj 521 483 *~; #X obj 521 510 outlet~; #X obj 539 437 cos~; #X obj 646 483 *~; #X obj 646 510 outlet~; #X obj 664 437 cos~; #X obj 771 483 *~; #X obj 771 510 outlet~; #X obj 789 437 cos~; #X obj 894 483 *~; #X obj 894 510 outlet~; #X obj 912 437 cos~; #X obj 1018 483 *~; #X obj 1018 510 outlet~; #X obj 1036 437 cos~; #X obj 292 408 clip~ -0.25 0.25; #X obj 415 408 clip~ -0.25 0.25; #X obj 539 408 clip~ -0.25 0.25; #X obj 664 408 clip~ -0.25 0.25; #X obj 912 408 clip~ -0.25 0.25; #X obj 1036 407 clip~ -0.25 0.25; #X obj 292 375 -~ 0.25; #X obj 415 375 -~ 0.5; #X obj 539 375 -~ 0.75; #X obj 664 376 -~ 1; #X obj 788 374 -~ 1.25; #X obj 912 376 -~ 1.5; #X obj 1035 374 -~ 1.75; #X floatatom 706 625 5 0 0 0 - - -; #X obj 181 333 >~ 1.75; #X obj 181 367 *~ -2; #X obj 788 408 clip~ -0.25 0.25; #X obj 566 138 <~ 0; #X obj 566 170 *~ 8; #X obj 554 101 cyclone/%~ 8; #X connect 0 0 64 0; #X connect 1 0 3 0; #X connect 2 0 1 0; #X connect 2 0 24 0; #X connect 2 0 27 0; #X connect 2 0 30 0; #X connect 2 0 33 0; #X connect 2 0 36 0; #X connect 2 0 39 0; #X connect 2 0 42 0; #X connect 4 0 5 0; #X connect 6 0 7 0; #X connect 8 0 9 0; #X connect 10 0 11 0; #X connect 12 0 13 0; #X connect 14 0 15 0; #X connect 16 0 17 0; #X connect 18 0 58 0; #X connect 19 0 4 0; #X connect 19 0 6 0; #X connect 19 0 8 0; #X connect 19 0 10 0; #X connect 19 0 12 0; #X connect 19 0 14 0; #X connect 19 0 16 0; #X connect 19 0 18 0; #X connect 20 0 19 0; #X connect 21 0 51 0; #X connect 21 0 52 0; #X connect 21 0 53 0; #X connect 21 0 54 0; #X connect 21 0 55 0; #X connect 21 0 56 0; #X connect 21 0 57 0; #X connect 21 0 23 0; #X connect 21 0 59 0; #X connect 22 0 1 1; #X connect 22 0 4 0; #X connect 23 0 22 0; #X connect 24 0 25 0; #X connect 26 0 24 1; #X connect 26 0 6 0; #X connect 27 0 28 0; #X connect 29 0 27 1; #X connect 29 0 8 0; #X connect 30 0 31 0; #X connect 32 0 30 1; #X connect 32 0 10 0; #X connect 33 0 34 0; #X connect 35 0 33 1; #X connect 35 0 12 0; #X connect 36 0 37 0; #X connect 38 0 36 1; #X connect 38 0 14 0; #X connect 39 0 40 0; #X connect 41 0 39 1; #X connect 41 0 16 0; #X connect 42 0 43 0; #X connect 44 0 42 1; #X connect 44 0 18 0; #X connect 45 0 26 0; #X connect 46 0 29 0; #X connect 47 0 32 0; #X connect 48 0 35 0; #X connect 49 0 41 0; #X connect 50 0 44 0; #X connect 51 0 45 0; #X connect 52 0 46 0; #X connect 53 0 47 0; #X connect 54 0 48 0; #X connect 55 0 61 0; #X connect 56 0 49 0; #X connect 57 0 50 0; #X connect 59 0 60 0; #X connect 60 0 23 0; #X connect 61 0 38 0; #X connect 62 0 63 0; #X connect 63 0 21 0; #X connect 64 0 62 0; #X connect 64 0 21 0;
On 10 Sep 2019, at 06:18, Alexandre Torres Porres porres@gmail.com wrote:
Hi, how would one code an 8 channel panner, considering a circle speaker setup?
I'm not looking for an external, I wanna know how to do it as a patch, then as an external into my externals library - as a request :)
But if there's an external around, maybe I could check it out how it's done ;)
thanks _______________________________________________ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
On Tue, 2019-09-10 at 05:40 -0300, Alexandre Torres Porres wrote:
hi, I was thinking of something more sophisticated, this only sweeps through an array, kinda like my else/xgate2~ object
for this panner, I was hoping to be able to set the position in a 2D space. This would be much like my else/pan4~ object, but for 8 speakers and a circular setup.
For true spatialization - it sounds to me that is what you're aiming at
Roman
Em ter, 10 de set de 2019 às 06:15, Roman Haefeli reduzent@gmail.com escreveu:
For true spatialization
what is "true spatialization"? And why would else/pan4~ not be "truthful"?
- it sounds to me that is what you're aiming at
- use Ambisonics[1].
hmm, I don't really know, and here's a silly question. It seems to me ambisonics tries to locate a sound source in a 3D sphere, but the idea would actually be to pan the sound source in a 2D circle space. So, can ambisonics help there or is it overcomplicated for that matter? And how is it possible with 8 speakers to simulate a 3D sphere?
There seem to be Pd externals for this.
yeah, I know, just not sure if all the complicated encoding and everything is indispensable and stuff
cheers
On Tue, 2019-09-10 at 14:43 -0300, Alexandre Torres Porres wrote:
Em ter, 10 de set de 2019 às 06:15, Roman Haefeli <reduzent@gmail.com
escreveu: For true spatialization
what is "true spatialization"?
I mean true spatialization as opposed to simple panning. You asked for a panner and you were given a panner. Then you said you were thinking of a more sophisticated panner. And I said what you want might be spatialization that not only emulates a sound source traveling along a virtual circle, but that is able to emulate also every position in between. Sounds to me like true spatialization. But I'm only guessing. I can't read your mind, don't know what you really want. I can only read you mails. Only apt has super-cow powers.
And why would else/pan4~ not be "truthful"?
Did I say it is not "truthful"? I'm sure it's a very true panner. It's even 2D (it positions the sound source anywhere between the speakers, not only on the outlines). Now, isn't that exactly what you want, but only with four channels? I'm confused now.
- it sounds to me that is what you're aiming at
- use Ambisonics[1].
hmm, I don't really know, and here's a silly question. It seems to me ambisonics tries to locate a sound source in a 3D sphere, but the idea would actually be to pan the sound source in a 2D circle space.
It's a totally fine question. I'm not an expert either. Ambisonics is able to render in 3D, but you can also do 2D (for instance, if you place all speakers on the same plane). What I understand is special about Ambisonics, is that you do not need to know beforehand for which speaker setup you're making a recording or a rendering for. Only the decoder needs to know the exact configuration of the speakers. This allows for setups that are not a perfect circle or sphere.
So, can ambisonics help there or is it overcomplicated for that matter? And how is it possible with 8 speakers to simulate a 3D sphere?
Again, not an expert speaking here, but depending on your goals you need that complexity. If your speaker setup is for some reason not a perfect circle, or the positions are not evenly spaced, the image of your virtual sound source(s) is distorted. If you want to account for that, it's probably easier to use Ambisonics than figuring out all the calculations on your own. Do you care for a good reproduction of spatial image? Do you need the flexibility that Ambisoncis gives you? Do you want re-invent things each time the setup is different? Would like to be able to switch between 2D and 3D with the same system? Do you want your piece to be played "correctly" at some other venue that is not the studio where you worked on your piece?
I'm not saying you want all that. I'm just thinking that the more you deal with the stuff, the more those aspect are going to matter.
There seem to be Pd externals for this.
yeah, I know, just not sure if all the complicated encoding and everything is indispensable and stuff
I don't know. I'm not sure if what you want is different from [else/pan4~], but with 8 channels...
Roman
Em ter, 10 de set de 2019 às 16:42, Roman Haefeli reduzent@gmail.com escreveu:
Do you need the flexibility that Ambisoncis gives you?
doubt it.
Would like to be able to switch between 2D and 3D with the same system?
nope
I'm not sure if what you want is different from [else/pan4~], but with 8 channels...
yeah, all I want is expand it to 8 channels, and I'm gonna call it [else/pan8~]
I'll let the other experts deal with "true spatilization" and people can just use these more sophisticated libraries for that.
Sounds like you want spatialization on a plane through 8 speakers positioned on a circle?
So you need to convert any cartesian locations to polar coords first. For an approximate 3D sound effect you really only need a function to create distance (and Doppler?) effects, and then feed that output, and the angle into the planner.
The Doppler effects are the trickiest obviously. Last time I checked, real time pitch shifting as a function of change in distance was best done in the Fourier domain. Not sure how real time that is these days.
Distance effects are just inverse square of distance (or 1/ d^1.5 according to some). Then add filters for high and low frequencies. Constant power panning and variants popular and easy for speakers on a circle.
There's pseudo code in this book from memory: Dodge, Charles; Jerse, Thomas A. 1997 Computer music : synthesis, composition, and performance. 2nd ed. New York : Schirmer Books ; London : Prentice Hall International.
Cheers
On Tue, Sep 10, 2019, 3:10 PM Alexandre Torres Porres porres@gmail.com wrote:
Em ter, 10 de set de 2019 às 16:42, Roman Haefeli reduzent@gmail.com escreveu:
Do you need the flexibility that Ambisoncis gives you?
doubt it.
Would like to be able to switch between 2D and 3D with the same system?
nope
I'm not sure if what you want is different from [else/pan4~], but with 8 channels...
yeah, all I want is expand it to 8 channels, and I'm gonna call it [else/pan8~]
I'll let the other experts deal with "true spatilization" and people can just use these more sophisticated libraries for that.
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Hello.
Le 11/09/2019 à 00:26, Andrew Lyons a écrit :
Sounds like you want spatialization on a plane through 8 speakers positioned on a circle?
So you need to convert any cartesian locations to polar coords first. For an approximate 3D sound effect you really only need a function to create distance (and Doppler?) effects, and then feed that output, and the angle into the planner.
The Doppler effects are the trickiest obviously. Last time I checked, real time pitch shifting as a function of change in distance was best done in the Fourier domain. Not sure how real time that is these days.
Distance effects are just inverse square of distance (or 1/ d^1.5 according to some). Then add filters for high and low frequencies. Constant power panning and variants popular and easy for speakers on a circle.
When soundwaves are propagating through a medium, there are several effects happening, like dispersion and reflexion, and they may travel at different speeds with same frequency following it's shear modulus (see https://en.m.wikipedia.org/wiki/Speed_of_sound). That's how ambisonic tools might be usefull...
Doppler effect is involved when the source of a sound and the listener are moving relative to each other.
There's pseudo code in this book from memory: Dodge, Charles; Jerse, Thomas A. 1997 Computer music : synthesis, composition, and performance. 2nd ed. New York : Schirmer Books ; London : Prentice Hall International.
I think you want to look at pp.spat8~.pd from https://github.com/solipd/AudioLab by Philipp Schmalfuß.
m.
On 11.09.19 00:08, Alexandre Torres Porres wrote:
Em ter, 10 de set de 2019 às 16:42, Roman Haefeli <reduzent@gmail.com mailto:reduzent@gmail.com> escreveu:
Do you need the flexibility that Ambisoncis gives you?
doubt it.
Would like to be able to switch between 2D and 3D with the same system?
nope
I'm not sure if what you want is different from [else/pan4~], but with 8 channels...
yeah, all I want is expand it to 8 channels, and I'm gonna call it [else/pan8~]
I'll let the other experts deal with "true spatilization" and people can just use these more sophisticated libraries for that.
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Em qua, 11 de set de 2019 às 16:30, Max abonnements@revolwear.com escreveu:
I think you want to look at pp.spat8~.pd from https://github.com/solipd/AudioLab by Philipp Schmalfuß.
Wow, this looks amazing and exactly the kind of thing I was looking for. Thanks!
Wow! This is a great library and should be available with deken! Thanks for sharing this!
On Wed, Sep 11, 2019 at 3:41 PM Alexandre Torres Porres porres@gmail.com wrote:
Em qua, 11 de set de 2019 às 16:30, Max abonnements@revolwear.com escreveu:
I think you want to look at pp.spat8~.pd from https://github.com/solipd/AudioLab by Philipp Schmalfuß.
Wow, this looks amazing and exactly the kind of thing I was looking for. Thanks! _______________________________________________ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
@max, thanks for pointing to this :)
i am using this object and a doppler effect in live situations(see
attachment). don't know if this is an exact model of an object moving
through space, but it sounds quite convincing.
i will upload this to deken soon!
Quoting Federico Camara Halac camarafede@gmail.com:
Wow! This is a great library and should be available with deken! Thanks for sharing this!
On Wed, Sep 11, 2019 at 3:41 PM Alexandre Torres Porres porres@gmail.com wrote:
Em qua, 11 de set de 2019 às 16:30, Max abonnements@revolwear.com escreveu:
I think you want to look at pp.spat8~.pd from https://github.com/solipd/AudioLab by Philipp Schmalfuß.
Wow, this looks amazing and exactly the kind of thing I was looking for. Thanks! _______________________________________________ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
-- fdch.github.io
A quick question, of purely academic interest:
In theory, wouldn't it be possible to get 3D spatialization with just four speakers arranged in, say, the corners of a tetrahedron, such as one directly above and three in an equilateral triangle below the listener's "horizon" (i.e. the plane of the listener's ears)? I'm sure that eight speakers would be preferable -- maybe fewer "dead spots"? But, strictly speaking, four could do it, right?
On 9/10/19 12:39 PM, Roman Haefeli wrote:
On Tue, 2019-09-10 at 14:43 -0300, Alexandre Torres Porres wrote:
Em ter, 10 de set de 2019 às 06:15, Roman Haefeli <reduzent@gmail.com
escreveu: For true spatialization
what is "true spatialization"?
I mean true spatialization as opposed to simple panning. You asked for a panner and you were given a panner. Then you said you were thinking of a more sophisticated panner. And I said what you want might be spatialization that not only emulates a sound source traveling along a virtual circle, but that is able to emulate also every position in between. Sounds to me like true spatialization. But I'm only guessing. I can't read your mind, don't know what you really want. I can only read you mails. Only apt has super-cow powers.
And why would else/pan4~ not be "truthful"?
Did I say it is not "truthful"? I'm sure it's a very true panner. It's even 2D (it positions the sound source anywhere between the speakers, not only on the outlines). Now, isn't that exactly what you want, but only with four channels? I'm confused now.
- it sounds to me that is what you're aiming at
- use Ambisonics[1].
hmm, I don't really know, and here's a silly question. It seems to me ambisonics tries to locate a sound source in a 3D sphere, but the idea would actually be to pan the sound source in a 2D circle space.
It's a totally fine question. I'm not an expert either. Ambisonics is able to render in 3D, but you can also do 2D (for instance, if you place all speakers on the same plane). What I understand is special about Ambisonics, is that you do not need to know beforehand for which speaker setup you're making a recording or a rendering for. Only the decoder needs to know the exact configuration of the speakers. This allows for setups that are not a perfect circle or sphere.
So, can ambisonics help there or is it overcomplicated for that matter? And how is it possible with 8 speakers to simulate a 3D sphere?
Again, not an expert speaking here, but depending on your goals you need that complexity. If your speaker setup is for some reason not a perfect circle, or the positions are not evenly spaced, the image of your virtual sound source(s) is distorted. If you want to account for that, it's probably easier to use Ambisonics than figuring out all the calculations on your own. Do you care for a good reproduction of spatial image? Do you need the flexibility that Ambisoncis gives you? Do you want re-invent things each time the setup is different? Would like to be able to switch between 2D and 3D with the same system? Do you want your piece to be played "correctly" at some other venue that is not the studio where you worked on your piece?
I'm not saying you want all that. I'm just thinking that the more you deal with the stuff, the more those aspect are going to matter.
There seem to be Pd externals for this.
yeah, I know, just not sure if all the complicated encoding and everything is indispensable and stuff
I don't know. I'm not sure if what you want is different from [else/pan4~], but with 8 channels...
Roman
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Location gets smeared across a huge area/arc when speakers are far away from each other. More speakers equals more precise sense of sound source position.
On Tue, Sep 10, 2019, 4:10 PM Dudley Brooks dbrooks@runforyourlife.org wrote:
A quick question, of purely academic interest:
In theory, wouldn't it be possible to get 3D spatialization with just four speakers arranged in, say, the corners of a tetrahedron, such as one directly above and three in an equilateral triangle below the listener's "horizon" (i.e. the plane of the listener's ears)? I'm sure that eight speakers would be preferable -- maybe fewer "dead spots"? But, strictly speaking, four could do it, right?
On 9/10/19 12:39 PM, Roman Haefeli wrote:
On Tue, 2019-09-10 at 14:43 -0300, Alexandre Torres Porres wrote:
Em ter, 10 de set de 2019 às 06:15, Roman Haefeli <reduzent@gmail.com
escreveu: For true spatialization
what is "true spatialization"?
I mean true spatialization as opposed to simple panning. You asked for a panner and you were given a panner. Then you said you were thinking of a more sophisticated panner. And I said what you want might be spatialization that not only emulates a sound source traveling along a virtual circle, but that is able to emulate also every position in between. Sounds to me like true spatialization. But I'm only guessing. I can't read your mind, don't know what you really want. I can only read you mails. Only apt has super-cow powers.
And why would else/pan4~ not be "truthful"?
Did I say it is not "truthful"? I'm sure it's a very true panner. It's even 2D (it positions the sound source anywhere between the speakers, not only on the outlines). Now, isn't that exactly what you want, but only with four channels? I'm confused now.
- it sounds to me that is what you're aiming at
- use Ambisonics[1].
hmm, I don't really know, and here's a silly question. It seems to me ambisonics tries to locate a sound source in a 3D sphere, but the idea would actually be to pan the sound source in a 2D circle space.
It's a totally fine question. I'm not an expert either. Ambisonics is able to render in 3D, but you can also do 2D (for instance, if you place all speakers on the same plane). What I understand is special about Ambisonics, is that you do not need to know beforehand for which speaker setup you're making a recording or a rendering for. Only the decoder needs to know the exact configuration of the speakers. This allows for setups that are not a perfect circle or sphere.
So, can ambisonics help there or is it overcomplicated for that matter? And how is it possible with 8 speakers to simulate a 3D sphere?
Again, not an expert speaking here, but depending on your goals you need that complexity. If your speaker setup is for some reason not a perfect circle, or the positions are not evenly spaced, the image of your virtual sound source(s) is distorted. If you want to account for that, it's probably easier to use Ambisonics than figuring out all the calculations on your own. Do you care for a good reproduction of spatial image? Do you need the flexibility that Ambisoncis gives you? Do you want re-invent things each time the setup is different? Would like to be able to switch between 2D and 3D with the same system? Do you want your piece to be played "correctly" at some other venue that is not the studio where you worked on your piece?
I'm not saying you want all that. I'm just thinking that the more you deal with the stuff, the more those aspect are going to matter.
There seem to be Pd externals for this.
yeah, I know, just not sure if all the complicated encoding and everything is indispensable and stuff
I don't know. I'm not sure if what you want is different from [else/pan4~], but with 8 channels...
Roman
_______________________________________________Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Am Mittwoch, 11. September 2019, 01:01:01 CEST schrieb Dudley Brooks:
A quick question, of purely academic interest:
In theory, wouldn't it be possible to get 3D spatialization with just four speakers arranged in, say, the corners of a tetrahedron, such as one directly above and three in an equilateral triangle below the listener's "horizon" (i.e. the plane of the listener's ears)? I'm sure that eight speakers would be preferable -- maybe fewer "dead spots"? But, strictly speaking, four could do it, right?
yes,
... done 1951 with pupitre d'espace, even with 3D-Soundcontroller, the function of controlling a weigthed Amplification matrix like done in Ambisonics, so you can use it as Ambisonics 1st order,.. ;-).
see https://books.google.at/books? id=psKyCwAAQBAJ&pg=PA205&lpg=PA205&dq=pupitre+de+espace#v=onepage&q&f=false
mfg winfried
On 9/10/19 12:39 PM, Roman Haefeli wrote:
On Tue, 2019-09-10 at 14:43 -0300, Alexandre Torres Porres wrote:
Em ter, 10 de set de 2019 às 06:15, Roman Haefeli <reduzent@gmail.com
escreveu: For true spatialization
what is "true spatialization"?
I mean true spatialization as opposed to simple panning. You asked for a panner and you were given a panner. Then you said you were thinking of a more sophisticated panner. And I said what you want might be spatialization that not only emulates a sound source traveling along a virtual circle, but that is able to emulate also every position in between. Sounds to me like true spatialization. But I'm only guessing. I can't read your mind, don't know what you really want. I can only read you mails. Only apt has super-cow powers.
And why would else/pan4~ not be "truthful"?
Did I say it is not "truthful"? I'm sure it's a very true panner. It's even 2D (it positions the sound source anywhere between the speakers, not only on the outlines). Now, isn't that exactly what you want, but only with four channels? I'm confused now.
- it sounds to me that is what you're aiming at
- use Ambisonics[1].
hmm, I don't really know, and here's a silly question. It seems to me ambisonics tries to locate a sound source in a 3D sphere, but the idea would actually be to pan the sound source in a 2D circle space.
It's a totally fine question. I'm not an expert either. Ambisonics is able to render in 3D, but you can also do 2D (for instance, if you place all speakers on the same plane). What I understand is special about Ambisonics, is that you do not need to know beforehand for which speaker setup you're making a recording or a rendering for. Only the decoder needs to know the exact configuration of the speakers. This allows for setups that are not a perfect circle or sphere.
So, can ambisonics help there or is it overcomplicated for that matter? And how is it possible with 8 speakers to simulate a 3D sphere?
Again, not an expert speaking here, but depending on your goals you need that complexity. If your speaker setup is for some reason not a perfect circle, or the positions are not evenly spaced, the image of your virtual sound source(s) is distorted. If you want to account for that, it's probably easier to use Ambisonics than figuring out all the calculations on your own. Do you care for a good reproduction of spatial image? Do you need the flexibility that Ambisoncis gives you? Do you want re-invent things each time the setup is different? Would like to be able to switch between 2D and 3D with the same system? Do you want your piece to be played "correctly" at some other venue that is not the studio where you worked on your piece?
I'm not saying you want all that. I'm just thinking that the more you deal with the stuff, the more those aspect are going to matter.
There seem to be Pd externals for this.
yeah, I know, just not sure if all the complicated encoding and everything is indispensable and stuff
I don't know. I'm not sure if what you want is different from [else/pan4~], but with 8 channels...
Roman
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
This is a Faust implementation of the GMEM Spat and it might serve your purpose: https://github.com/grame-cncm/faustlibraries/blob/949f000226495c7d404a4eabec... .
I hope it helps.
D
On Tue, 10 Sep 2019 at 10:44, Alexandre Torres Porres porres@gmail.com wrote:
hi, I was thinking of something more sophisticated, this only sweeps through an array, kinda like my else/xgate2~ object
for this panner, I was hoping to be able to set the position in a 2D space. This would be much like my else/pan4~ object, but for 8 speakers and a circular setup.
cheers
Em ter, 10 de set de 2019 às 03:48, Edwin van der Heide pd@evdh.net escreveu:
Here is one example that uses a signal for the position input.
Best!
Edwin
#N canvas 113 114 1267 716 12; #X obj 554 69 inlet~; #X obj 149 483 *~; #X obj 90 64 inlet~; #X obj 149 510 outlet~; #X obj 191 599 snapshot~; #X floatatom 192 625 5 0 0 0 - - -; #X obj 264 599 snapshot~; #X floatatom 265 625 5 0 0 0 - - -; #X obj 336 599 snapshot~; #X floatatom 337 625 5 0 0 0 - - -; #X obj 410 599 snapshot~; #X floatatom 411 625 5 0 0 0 - - -; #X obj 486 599 snapshot~; #X floatatom 487 625 5 0 0 0 - - -; #X obj 560 599 snapshot~; #X floatatom 561 625 5 0 0 0 - - -; #X obj 634 599 snapshot~; #X floatatom 635 625 5 0 0 0 - - -; #X obj 706 599 snapshot~; #X obj 38 489 metro 50; #X obj 38 458 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 554 202 *~ 0.25; #X obj 167 437 cos~; #X obj 167 408 clip~ -0.25 0.25; #X obj 274 483 *~; #X obj 274 510 outlet~; #X obj 292 437 cos~; #X obj 397 483 *~; #X obj 397 510 outlet~; #X obj 415 437 cos~; #X obj 521 483 *~; #X obj 521 510 outlet~; #X obj 539 437 cos~; #X obj 646 483 *~; #X obj 646 510 outlet~; #X obj 664 437 cos~; #X obj 771 483 *~; #X obj 771 510 outlet~; #X obj 789 437 cos~; #X obj 894 483 *~; #X obj 894 510 outlet~; #X obj 912 437 cos~; #X obj 1018 483 *~; #X obj 1018 510 outlet~; #X obj 1036 437 cos~; #X obj 292 408 clip~ -0.25 0.25; #X obj 415 408 clip~ -0.25 0.25; #X obj 539 408 clip~ -0.25 0.25; #X obj 664 408 clip~ -0.25 0.25; #X obj 912 408 clip~ -0.25 0.25; #X obj 1036 407 clip~ -0.25 0.25; #X obj 292 375 -~ 0.25; #X obj 415 375 -~ 0.5; #X obj 539 375 -~ 0.75; #X obj 664 376 -~ 1; #X obj 788 374 -~ 1.25; #X obj 912 376 -~ 1.5; #X obj 1035 374 -~ 1.75; #X floatatom 706 625 5 0 0 0 - - -; #X obj 181 333 >~ 1.75; #X obj 181 367 *~ -2; #X obj 788 408 clip~ -0.25 0.25; #X obj 566 138 <~ 0; #X obj 566 170 *~ 8; #X obj 554 101 cyclone/%~ 8; #X connect 0 0 64 0; #X connect 1 0 3 0; #X connect 2 0 1 0; #X connect 2 0 24 0; #X connect 2 0 27 0; #X connect 2 0 30 0; #X connect 2 0 33 0; #X connect 2 0 36 0; #X connect 2 0 39 0; #X connect 2 0 42 0; #X connect 4 0 5 0; #X connect 6 0 7 0; #X connect 8 0 9 0; #X connect 10 0 11 0; #X connect 12 0 13 0; #X connect 14 0 15 0; #X connect 16 0 17 0; #X connect 18 0 58 0; #X connect 19 0 4 0; #X connect 19 0 6 0; #X connect 19 0 8 0; #X connect 19 0 10 0; #X connect 19 0 12 0; #X connect 19 0 14 0; #X connect 19 0 16 0; #X connect 19 0 18 0; #X connect 20 0 19 0; #X connect 21 0 51 0; #X connect 21 0 52 0; #X connect 21 0 53 0; #X connect 21 0 54 0; #X connect 21 0 55 0; #X connect 21 0 56 0; #X connect 21 0 57 0; #X connect 21 0 23 0; #X connect 21 0 59 0; #X connect 22 0 1 1; #X connect 22 0 4 0; #X connect 23 0 22 0; #X connect 24 0 25 0; #X connect 26 0 24 1; #X connect 26 0 6 0; #X connect 27 0 28 0; #X connect 29 0 27 1; #X connect 29 0 8 0; #X connect 30 0 31 0; #X connect 32 0 30 1; #X connect 32 0 10 0; #X connect 33 0 34 0; #X connect 35 0 33 1; #X connect 35 0 12 0; #X connect 36 0 37 0; #X connect 38 0 36 1; #X connect 38 0 14 0; #X connect 39 0 40 0; #X connect 41 0 39 1; #X connect 41 0 16 0; #X connect 42 0 43 0; #X connect 44 0 42 1; #X connect 44 0 18 0; #X connect 45 0 26 0; #X connect 46 0 29 0; #X connect 47 0 32 0; #X connect 48 0 35 0; #X connect 49 0 41 0; #X connect 50 0 44 0; #X connect 51 0 45 0; #X connect 52 0 46 0; #X connect 53 0 47 0; #X connect 54 0 48 0; #X connect 55 0 61 0; #X connect 56 0 49 0; #X connect 57 0 50 0; #X connect 59 0 60 0; #X connect 60 0 23 0; #X connect 61 0 38 0; #X connect 62 0 63 0; #X connect 63 0 21 0; #X connect 64 0 62 0; #X connect 64 0 21 0;
On 10 Sep 2019, at 06:18, Alexandre Torres Porres porres@gmail.com wrote:
Hi, how would one code an 8 channel panner, considering a circle speaker setup?
I'm not looking for an external, I wanna know how to do it as a patch, then as an external into my externals library - as a request :)
But if there's an external around, maybe I could check it out how it's done ;)
thanks _______________________________________________ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list