You can look at the branch dev/mdap on my repository ( https://github.com/pierreguillot/vbap/tree/dev/mdap). There is the abstraction p.mdap that integrates the spread. The 2d version works but I didn't make the part that compute the positions of the virtual sources in 3d (all the rest of the algorithm is common to 2d & 3d).
2017-07-04 9:19 GMT+02:00 Pierre Guillot <[email protected]>: > 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 s > In 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 coefficient > factor = (spread - 70)/30*(spread - 70)/30*10 > coeff1 = coeff1+factor > coeff2 = coeff2+factor > > Then 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/power > coeff2 = coeff2/power, > etc. > > And... that's it :) > Is it understandable ? > > > > 2017-07-04 3:50 GMT+02:00 <[email protected]>: > >> 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/bit >> stream/handle/123456789/2345/article4.pdf) and the implementation is >> explained in Generic panning tools for MAX/MSP ( >> http://cnmat.org/ICMC2000/pdf/VBAP.pdf). >> Cheers >> >> 2017-06-25 0:09 GMT+02:00 <[email protected]>: >> >>> 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/downloads/vbap/releases >>> >>> vbap-v0 on dekken >>> >>> https://sourceforge.net/projects/pure-data/files/libraries/vbap/ >>> >>> 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, >>> >>> Pierre >>> >>>> Date: Fri, 23 Jun 2017 16:19:29 -0600 >>>> From: [email protected] >>>> To: [email protected] >>>> Subject: [PD] HOA / spatialization approaches for a hemisphere >>>> Message-ID: <[email protected]> >>>> 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 >>> >>> >
_______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
