-(1)- Is there any basic ambisonic decoding patch for PD? Any patch for ambisonic application ... found very old links about this but, they sadly doesn't work.
-(2) - Is it possible to invert a matrix (or even build one) of constants in PD? Like this
A = [ 1 2 3 ]
[ 4 5 6 ]
[ 7 8 9 ]
Many thanks in advances ... have a nice day!
Ambisonics? and Matrix?
Oh god, just forget the zexy lib for the matrix operation. (Always fun to reply to yourself.)
My first question about ambisonics still open. I will slowly work on a encoding/deconding ambisonic patch.
sorry what is ambisonic ?
Sorry for the missing explanation ...
Ambisonic is a spatial sound reproduction technology which have been introduced in the 70s by the mathematician Gerzon. With Ambi the loudspeaker layout may be anything from few to many loudspeaker and it is intended to reproduce the direction of arrival.
You first encode your target sound field .... its like Fourier Transforms but in space! You can do it with a virtually defined sound field in your computer or you can encode real sound field using a set of microphones (omni + figure-8) correctly placed in space. Once you got the transformed version of your desired sound field ... you decode it using your loudspeaker layout. Decoding is matching your encoded sound field with your sound reproduction system.
For basic encoding/deconding ambisonic (there is some more advanced encoding/deconding rules) you compute everything with matrix. Thats quite faster and more efficient than computing every elements individually.
My ambisonic patch (which is not finished) use such matrix computation although is not really pure-data clean (with some sort of very fast "for" loop made with metro objects!) ...
Anyway I still have some doubts on my equations ...
For this reason, I would like to compare my patch with some other ambisonic work for PD. There is a complete paper on Ambisonic with CSound in Computer Music Journal, winter 2001 ...
>>> OKAY HERE IS A NEW QUESTION <<<
I don't know if many people use the matrix objects, but I was asking myself what is the best (easiest, smallest and fastest) way to fill a matrix using a unique expr object which compute the matrix elements as function of the row and colomn index. I use to create for loop with metro object ... but I don't feel clean with this ... any suggestion?
I think that this complete my "loop" utility list (for++,until,uzi, kalaschminikokakov?).
In my opinion, [uzi] seems the best for loop construction of matrix because : 1) you got an increasing index & 2) you got a bagn when its finished (it is thus easier to create nested loops).
Hep, now finish the patch ...
haven't registered any sooner to this forum...
however, we at the IEM are doing a lot of stuff with ambisonics and pd.
basically, my thesis has been a generic ambisonic encoder/decoder for any number of input/output channels (one of our settings is, e.g., 24 channel input decoding to 3rd order 3D-ambisonics onto a 24 speaker hemisphere - but that was done back in 2001)
see if i can find the patches (if you are still interested)
i used to build debian-packages for this (but never made it to release them)
ah and i forgot.
the reason why there are those matrix-objects in zexy is of course the need when doing ambisonics...
I know the various IEM work on Ambisonic and desktop Wave Field Synthesis, there was some presentations and a nice demonstration (the PD ambisonic/binaural thing) by Robert Holdrich in Banff, june 2003.
IEM definetly look like a great place which evoke a nice balance of science, tech and art.
The reason why I am building a PD ambisonic patch is that I have to create a few hours workshop on spatial audio for artists. Anyway, I have decided to include my patch, which is now working for ambi^1 and ambi^2, in the annexe of my thesis which is devoted (and unfinished!) to sound field reproduction in room, we have a strong background in active control of noise and sound, so its a mixture of those things.
BTW, I was planning to create few other things (just for fun!) like the stereo-dipole or the optimum source distribution with PD, I remember Holdrich speaking of such thing. Did you, at IEM, have been through such things?
I have found few other interesting applications of mtx objects, in connection with my music project with "automated live improvisation" its quite useful, specially for my "serializm is good for you!".
Anyway, you may also enjoy my bibliography (which should be updated frequently) :
Before september, more than 100 paper on synthetic shoudl be added by one my student colleague.
This is quoted from a mail passing in the Canadian Electroacoustic Community about three new ambisonic objects for PD. Seems quite well done.
I'm very pleased to announce that new objects for sound spatialization are
available on the CICM web site : [url=http://www.mshparisnord.org/cicm/dl_en.htm ]http://www.mshparisnord.org/cicm/dl_en.htm
These objects are developed by Rémi Mignot and Jean-Baptiste Thiébaut. Most
of them are available for Macintosh, Windows and Linux for Max/MSP and PD.
ambipan~ is an external that uses ambisonic techniques for a surround
panning up to 16 loudspeakers. The ambisonic algorithm is from Michael
ambicube~is a 3-dimensional version of ambipan~ so you can use it with two
levels of loudspeakers
vbapan~is an external that uses vector based amplitude panning for a
surround panning up to 16 loudspeakers. The vbap algorithl is from Ville
trajectory is an intuitive abstraction for drawing trajectories. It
contains 8 graphical tools such as ellipse, spiral, broken line, etc.
Trajectories can be stored. The coordinates may be send to ambipan~ and
vbapan~ to localise up to 16 independent sounds.
Help files are written in French for instance, the trajectory help is
Your feedback is welcome !
Just new to the forum, joined up today. i'm doing a project on 3D sound spatialisation techniques and would like to implement an ambisonics patch it in some way using PD. I don't have much experience using PD so what's the minimal amount of hardware i can get away with using and how difficult is the ambisonics~ object to use? Would anyone have any patches that might be of any assistance? By the way, Philippe i'm reading some of your papers for research and they're great! Keep up the good work.
i used pd+Gem on a P1-100MHz machine (but i wouldn't recommend it nowadays)
my first ambisonic implementation (24 input channels, 3d-ambisonic 3rd order using 24 output channels) was implemented on 2 P3-800MHz-machines.
apart from that, it depends on what you really want to do
I found that second order Ambisonics (using a not opitmized home made patch) seem to run perfectly over my P43.0Ghz machine.
ambipan~ object are surely lighter. Also, just try it on your machine to know if it work well. http://cicm.mshparisnord.org/dl_en.htm.
Ambisonic should not be so hard to run, normally its only a matter of multiplication of an incomming signal by some positive or negative gain ... each loudspeaker haveing its own gain for a given target field.
Thanks, by the way, I have nearly finished a new manuscript for the Journal of the Acoustical Society of America (see the first paper in JASA vol 117 no 2) and it is quite nice (at least from our view point!) I hope to submit it this month, thus meaning a potential full length paper in 2006. For a nice converage of ambisonics, take a look at Poletti 2000 and Bettlehem 2005. Even it is not precisely related to ambisonic, many of the theoretical developments match ambisonic theory ... the fundamental of course! not the A-B-C-format whatever!!!