It's feasible but perhaps a bit complicated in Pd.The idea is to add multiple virtual sources around the main virtual source - MDAP (sorry for the typo error) -> multiple-direction amplitude panning.So for each virtual source, you compute the coefficients of N other virtual sources. Based on Pd and Max objects (because it's not specified in the papers) the positions are (with s the spread factor):In 2d, -s -s/2 -s/4 0 s/4 s/2 sIn 3d, [azimut, elevation][0, s][0, s/2][0, s/4][-s, 0] [-s/2, , 0] [-s/4, 0] [0, 0] [s/4, 0] [s/2, 0] [s, 0][0, -s/4][0, -s/2][0, s]I think the simplest approach is to pre-compute all these positions and then rotate them by the position of the main source.Then you have to sum the lists of coefficient term to term.If spead > 70 you have to add a factor to each coefficientfactor = (spread - 70)/30*(spread - 70)/30*10coeff1 = coeff1+factorcoeff2 = coeff2+factorThen compute their power (the square root of the sum of the square of all the coefficients):power = sqrt(coeff1*coeff1+coeff2*coeff2+...+coeffN*coeffN) and at last, normalize all the coefficient:coeff1 = coeff1/powercoeff2 = coeff2/power,etc.And... that's it :)Is it understandable ?2017-07-04 3:50 GMT+02:00 <jmejia@anestheticaudio.com>:Thanks Pierre - these abstractions seem great! I was able to easily adapt it to work with my setup.
I've been looking over Ville Pulki's paper but am a bit lost as to how to implement a spread function in your abstractions. Can you point me in the right direction?
Thanks!
-Jesse
On 2017-06-27 01:18, Pierre Guillot wrote:
My VBAP repository is for "personal" use, I'm not sure that I will ever publish an "official" release but everything should work ! I did this because there were bugs in the "official" implementation when using a very large number of loudspeakers and I couldn't solve the problem from the original code (I couldn't find the problem in fact...). If you want to be sure to have something durable I suggest you to use the abstraction p.vbap but the compiled externals are much more efficient. One last thing: there is no "spread" factor (MDBAP) but you can do it manually in Pd. The principles are explained in the paper Uniform Spreading Of Amplitude Panned Virtual Sources (https://aaltodoc.aalto.fi/bitstream/handle/123456789/2345/ ) and the implementation is explained in Generic panning tools for MAX/MSP (http://cnmat.org/ICMC2000/pdfarticle4.pdf /VBAP.pdf ).Cheers
2017-06-25 0:09 GMT+02:00 <jmejia@anestheticaudio.com>:
Thanks Pierre! That's all great advice. I'm gonna dig into VBAP - it's been awhile since I've messed with that. Maybe that will work better.
I'll give your building repo a shot https://github.com/pierreguill
ot/vbap (unless you have OSX binaries?)
but I also wonder about all these others:
https://puredata.info/download
s/vbap/releases vbap-v0 on dekken
https://sourceforge.net/projec
ts/pure-data/files/libraries/v bap/ Thanks!
-Jesse
On 2017-06-24 03:26, Pierre Guillot wrote:
Hi Jesse,With Ambisonics, ideally your loudspeakers should discretize perfectly a sphere, you should have your head at the exact center of this sphere, etc. and perhaps if you forget that your head interferes and the loudspeakers don't generate plane waves you'll be able to reconstruct a coherent sound field... But to avoid these restrictions (because very few people have a full sphere of loudspeakers - or want to ask the audience to be completely crushed at the center of the sphere) there are several techniques : optimizations of the energy and/or velocity vectors, optimizations of the decoding, etc. The problem is that none of the solutions are completely generic. Your choice must be driven by your approach and your goal.The advantage of Ambisonics lies in its intermediary representation of the sound field that allows to apply transformations (rotation or whatever) and to decode for different loudspeakers configurations. But if you just want to spatialize individuals point sources, you can also use VBAP that is perhaps much more accessible. Nevertheless yes, you can surely find a way to decode the sound field for two ring of loudspeakers with Ambisonics (we can discuss it if you want). And one good rule is just to avoid placing sources where the loudspeakers are missing. I don't know if I really answer the question, I hope a bit :)Cheers,PierreDate: Fri, 23 Jun 2017 16:19:29 -0600
From: jmejia@anestheticaudio.com
To: pd-list@lists.iem.at
Subject: [PD] HOA / spatialization approaches for a hemisphere
Message-ID: <3149263781acf8439b762eef943d60e5@anestheticaudio.com >
Content-Type: text/plain; charset="utf-8"
Hi List,
I'm putting together a 32 channel HDLA and looking for spatialization
advice. The configuration will be two rings, one higher than the other,
and I've been thinking a bit smaller/closer to approximate a hemisphere.
But that's flexible - they could be parallel rings if it simplifies
things.
I have some (limited) experience using HoaLibrary + PD for 2D ambisonics
- so my initial thought was to try the 3d externals there - however I'm
not sure if it actually makes sense to build an abstraction setup for a
sphere of twice as many channels while limiting access to the upper
hemisphere only. I'm assuming there would be some problems with that
approach.
I found a few papers on mixed-order ambisonics - by Chris Travis and
also the AmbiX crew - but I'm not sure if there's away to implement that
stuff with HoaLibrary. I'm also open to using different software if
something else is recommended instead.
Thanks for any advice!
-Jesse