From iainduncanlists at gmail.com Sun Jun 2 08:52:25 2024 From: iainduncanlists at gmail.com (Iain Duncan) Date: Sun, 2 Jun 2024 08:52:25 -0700 Subject: [CM] s7 got some love in the Lisp game jam Message-ID: Interesting read I found on Hacker News, and nice to see the ease of embedding recognized. https://dthompson.us/posts/lisp-icing-or-cake.html iain -------------- next part -------------- An HTML attachment was scrubbed... URL: From iainduncanlists at gmail.com Sun Jun 2 08:58:25 2024 From: iainduncanlists at gmail.com (Iain Duncan) Date: Sun, 2 Jun 2024 08:58:25 -0700 Subject: [CM] s7 got some love in the Lisp game jam In-Reply-To: References: Message-ID: relevant thread on HN. https://news.ycombinator.com/item?id=40549250 On Sun, Jun 2, 2024 at 8:52?AM Iain Duncan wrote: > Interesting read I found on Hacker News, and nice to see the ease of > embedding recognized. > > https://dthompson.us/posts/lisp-icing-or-cake.html > > iain > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Sun Jun 2 10:21:24 2024 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Sun, 02 Jun 2024 10:21:24 -0700 Subject: [CM] s7 got some love in the Lisp game jam In-Reply-To: References: Message-ID: Iain, thanks a million for the kind words about s7 in reddit and Hacker News. When you're tired and down, a pat on the back makes a big difference. From iainduncanlists at gmail.com Sun Jun 2 21:54:03 2024 From: iainduncanlists at gmail.com (Iain Duncan) Date: Sun, 2 Jun 2024 21:54:03 -0700 Subject: [CM] s7 got some love in the Lisp game jam In-Reply-To: References: Message-ID: Hi Bill, thanks a million for s7! :-) You got another rave about it on the same thread actually, though they said they ultimately decided to go to Fennel for other reasons. Some very nice praise of s7 though in response to my comment. https://news.ycombinator.com/item?id=40549250 On Sun, Jun 2, 2024 at 10:21?AM wrote: > Iain, thanks a million for the kind words about s7 in reddit and Hacker > News. > When you're tired and down, a pat on the back makes a big difference. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.gubinelli at gmail.com Mon Jun 3 04:10:51 2024 From: m.gubinelli at gmail.com (Massimiliano Gubinelli) Date: Mon, 3 Jun 2024 12:10:51 +0100 Subject: [CM] s7 got some love in the Lisp game jam In-Reply-To: References: Message-ID: Dear all, I would also like to point out that currently s7 is used as scripting language for Mogan [https://mogan.app/] (a variant of GNU TeXmacs [https://www.texmacs.org/tmweb/home/welcome.en.html] which traditionally uses Guile 1.8) and it is the option we are currently evaluating to bring TeXmacs to WebAssembly. An experimental port of Mogan to webassembly can be already tested here https://research.mogan.app/ . s7 also powers a smaller variant of TeXmacs which is currently under development to provide a web-viewer for TeXmacs files (https://github.com/mgubi/vau) s7 is a fine product. For TeXmacs there are not many other options available since Scheme is used as a core component of the program and speed of the interpreter is crucial since all our UI is described by scheme expressions which are evaluated on the fly to provide a dynamic and fully configurable user experience. To our knowledge there are not many other alternatives for fast interpretation and small footprint (s7 is much faster than Guile 1.8). Max ps: Currently it is not used in TeXmacs itself because we need to patch it to avoid a performance problem in the resolution of symbols. It would be great if a more efficient mechanism could be designed which avoid our ?untested? patch. The patch can be found here: https://github.com/mgubi/vau/blob/main/src/Scheme/S7/s7-lookup_from-version-2.patch (actually this is the reverse patch), If somebody is interested in helping out to create a meaningful PR for S7, please let me know. > On 3 Jun 2024, at 05:54, Iain Duncan wrote: > > Hi Bill, thanks a million for s7! :-) > > You got another rave about it on the same thread actually, though they said they ultimately decided to go to Fennel for other reasons. Some very nice praise of s7 though in response to my comment. > https://news.ycombinator.com/item?id=40549250 > > On Sun, Jun 2, 2024 at 10:21?AM > wrote: >> Iain, thanks a million for the kind words about s7 in reddit and Hacker >> News. >> When you're tired and down, a pat on the back makes a big difference. >> > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist -------------- next part -------------- An HTML attachment was scrubbed... URL: From j_hearon at hotmail.com Tue Jun 4 11:15:26 2024 From: j_hearon at hotmail.com (James Hearon) Date: Tue, 4 Jun 2024 18:15:26 +0000 Subject: [CM] ring-modulate Message-ID: Hi, I'm getting confused over ring-modulate ex. in manual vs. ring-modulate code in new-effects.scm. Manual: ring-modulate in1 in2 ; returns (* in1 in2) And new-effects.scm seems to show map-channel using frequency and radians: (rm-effect rm-frequency #f)) ;(list 0 0 1 (hz->radians rm-radians)) I'm trying to use a reader and apply ring-modulate to the snd. (with-sound (:play #t) (let ((reader (make-readin "mywave.wav"))) (do ((i 0 (+ i 1))) ((= i 602866)) (let* ((mysnd (readin reader))) (outa i (* 0.5 (ring-modulate xxx xxx)))))) ;not sure what it wants here? But whatever I use as input to ring-modulate I'm not getting close to the new-effects.scm application of Ring modulation which uses frequency and radians. Wondering where I'm getting confused. Jim -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Tue Jun 4 12:57:00 2024 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Tue, 04 Jun 2024 12:57:00 -0700 Subject: [CM] ring-modulate In-Reply-To: References: Message-ID: It looks like rm-radians is not used in new-effects.scm, so that code is multiplying the input samples by an oscil at rm-frequency. This is the same as the code in examp.scm without the envelope. ring-modulate is just a multiply, so I think you want (ring-modulate mysnd (oscil os)) where the "os" oscil runs at whatever frequency you want (the default appears to be 100Hz). (The "radians" variable is misnamed -- this is probably a number in Hz). From juanig at ccrma.Stanford.EDU Wed Jun 5 11:44:49 2024 From: juanig at ccrma.Stanford.EDU (Juan Reyes) Date: Wed, 5 Jun 2024 11:44:49 -0700 Subject: [CM] ambix ambisonics command line Message-ID: Hi, Does anyone know of a command line application that would process multichannel (interleaved) soundfiles into Ambisonics b-format or ambix?. Being more optimistic, is there Snd's S7 code that we could use for this purpose?. - On a side note: After all these years, usefulness, expediency, fruitfulness, to say the least, still make Snd stand out. Like Emacs, using it almost everyday. Some will say a hacker's delight, and indeed that's what it is. Hereby joining everyone on expressing gratitude to Bill for all his efforts on all regards. Thanks, -- Juan Reyes From anders at avinjar.no Thu Jun 6 01:13:56 2024 From: anders at avinjar.no (Anders Vinjar) Date: Thu, 06 Jun 2024 10:13:56 +0200 Subject: [CM] ambix ambisonics command line In-Reply-To: (Juan Reyes's message of "Wed, 5 Jun 2024 11:44:49 -0700") References: Message-ID: <87msny7akb.fsf@avinjar.no> Hi Juan! J> Does anyone know of a command line application that would process J> multichannel (interleaved) soundfiles into Ambisonics b-format or ambix?. If all you want is the MS-type matrixing it should be straight forward in an "a2b.scm" script for snd, or sox or ffmpeg or others, You can combine the 4 A-format channels FLU,FRU,BLU,BRD using MS-like-techniques: W = FLU+FRD+BLD+BRU X = FLU+FRD-BLD-BRU Y = FLU-FRD+BLD-BRU Z = FLU-FRD-BLD+BRU But leaving out all the required tunings for A2B conversion from any given FAO mic: eq, gain, phase - you wont get any meaningful B-format output - rather a "quite-nice-space-like-feeling-surround-spread mic" (wow, my new brand! :-) . For B-format you'll need a specific B-format encoder to a specific type of mic, tuned to its geometry and specs of capsules, and further using precise calibration-data fitted to your personal mic (*). Fons Adriansens 'tetraproc' includes a CLI 'tetrafile', doing the A-B conversion for Core Sounds Tetramic, and similar for their 2nd-order Octomic. I think he has some example *.tetra config-files for some other brands. He also offers to do the necessary measurements and calibrations for your TetraMic to plug into his conversion tools. Not sure what the other brands - Sennheiser, R?de etc. - offers for CLI-versions of their tools. (*) The dependence on both a specific decoder for a mic-brand, and further individually calibrated per mic, is perhaps sub-realised? Strange, given Ambisonics 100% reliance on extremely exact phase and gain info to represent the recorded space. One example is Nevaton who provides their VR-mic - otherwise very nicely made with great sound (no-noise, full-range - and very expensive) - without neither a fitting A2B decoder or necessary calibration data for each mic, relying on a one-time measurement of one mic done by Angelo Farino. They even have suggested using Sennheisers or R?de's standard A2B-encoder... -anders From anders at avinjar.no Thu Jun 6 01:37:58 2024 From: anders at avinjar.no (Anders Vinjar) Date: Thu, 06 Jun 2024 10:37:58 +0200 Subject: [CM] ambix ambisonics command line In-Reply-To: (Juan Reyes's message of "Wed, 5 Jun 2024 11:44:49 -0700") References: Message-ID: <87cyou79g9.fsf@avinjar.no> btw, a big thanks from me also to Bill, and Rick Taube, and their extremely succesful software, used for more than 30 years of composition work. Also fellow cmdist'ers - kind follow-ups and gentle ways of solving DSP-mysteries, my general lack of DSP-knowledge etc. An anecdote: in the early nineties, fellow-students struggling with limitations and bugs in Protools, me trying to get my head around text-based Music-V and Lispy CLM: an initial question on cmdist, a polite personal answer from the developer (with a "thanks for the bug-report!"), and a new version of CLM the next morning, solving that riddle. Wonders of Open Source/Freeware and pro developers! Thanks! -anders From marco at marcotrevisani.it Wed Jun 5 12:40:59 2024 From: marco at marcotrevisani.it (Marco Trevisani) Date: Wed, 5 Jun 2024 21:40:59 +0200 Subject: [CM] ambix ambisonics command line In-Reply-To: References: Message-ID: <1435dd2c-cfdf-4fb1-9cba-f408f03d8a2a@marcotrevisani.it> On 6/5/24 20:44, Juan Reyes wrote: > > ?- On a side note: > > ?After all these years, usefulness, expediency, fruitfulness, to say the > least, still make Snd stand out. Like Emacs, using it almost everyday. > Some will say a hacker's delight, and indeed that's what it is. Hereby > joining everyone on expressing gratitude to Bill for all his efforts on > all regards. > > ?Thanks, > Hi, even more radical, :-), I still use Emacs -> sbcl (just switched from slime to sly) -> clm5 all connected to snd .... (puredata for live and processing4 for graphics, i actually have some opengl common lisp libraries for graphics, used strictly from Emacs... plus orgmode...) I still consider Common Lisp the best programming language. That said,? all this makes sense to me because of Bill!!! Amazing work he has been doing all these years. I also have to say something that many of those who have worked with Linux, but also Mac and windows I think, have certainly experienced. CLM is the only program that every time there is a new version it compiles and loads without error, as does snd. What else to say.....Thanks again Bill, and I don't think it has been said enough!!! marco > -- Juan Reyes > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist > -- *Marco Trevisani* http://marcotrevisani.it -------------- next part -------------- An HTML attachment was scrubbed... URL: From juanig at ccrma.Stanford.EDU Thu Jun 6 11:38:35 2024 From: juanig at ccrma.Stanford.EDU (Juan Reyes) Date: Thu, 6 Jun 2024 11:38:35 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: <87msny7akb.fsf@avinjar.no> References: <87msny7akb.fsf@avinjar.no> Message-ID: <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> Hi Anders, Thanks a lot for your thorough explanation which of course as usual is useful and encouraging. What I was looking for was something like 'tetrafile'. (Been using other Fons' software for a while and don't know how I overlooked at it). Need to encode few dozen sound files into B-format Ambisonics and batch processing would be a time saving alternative. Will be following your suggestions. However, while searching this topic, can't help pointing out Fernando's Ambisonics code in 'dlocsig.clm (scm)'. -- Juan > > If all you want is the MS-type matrixing it should be straight > forward in an "a2b.scm" script for snd, or sox or ffmpeg or others, > You can combine the 4 A-format channels FLU,FRU,BLU,BRD using > MS-like-techniques: > > W = FLU+FRD+BLD+BRU X = FLU+FRD-BLD-BRU Y = FLU-FRD+BLD-BRU Z = > FLU-FRD-BLD+BRU > > But leaving out all the required tunings for A2B conversion from any > given FAO mic: eq, gain, phase - you wont get any meaningful > B-format output - rather a > "quite-nice-space-like-feeling-surround-spread mic" (wow, my new > brand! :-) . > > For B-format you'll need a specific B-format encoder to a specific > type of mic, tuned to its geometry and specs of capsules, and further > using precise calibration-data fitted to your personal mic (*). > > Fons Adriansens 'tetraproc' includes a CLI 'tetrafile', doing the > A-B conversion for Core Sounds Tetramic, and similar for their > 2nd-order Octomic. I think he has some example *.tetra config-files > for some other brands. He also offers to do the necessary > measurements and calibrations for your TetraMic to plug into his > conversion tools. > > Not sure what the other brands - Sennheiser, R?de etc. - offers for > CLI-versions of their tools. > > (*) The dependence on both a specific decoder for a mic-brand, and > further individually calibrated per mic, is perhaps sub-realised? > Strange, given Ambisonics 100% reliance on extremely exact phase and > gain info to represent the recorded space. > > One example is Nevaton who provides their VR-mic - otherwise very > nicely made with great sound (no-noise, full-range - and very > expensive) - without neither a fitting A2B decoder or necessary > calibration data for each mic, relying on a one-time measurement of > one mic done by Angelo Farino. They even have suggested using > Sennheisers or R?de's standard A2B-encoder... > > -anders > From juanig at ccrma.Stanford.EDU Thu Jun 6 15:04:58 2024 From: juanig at ccrma.Stanford.EDU (Juan Reyes) Date: Thu, 6 Jun 2024 15:04:58 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: <1435dd2c-cfdf-4fb1-9cba-f408f03d8a2a@marcotrevisani.it> References: <1435dd2c-cfdf-4fb1-9cba-f408f03d8a2a@marcotrevisani.it> Message-ID: <46873407-5e80-4866-b386-e59ad6a8fcc0@ccrma.stanford.edu> Certainly, amazing work but it's not only code. A lot of substance lies within files like 'dsp.scm' and examples on the Web page (another great effort). Thankful to Anders and Orm for keeping these beasts alive because also admitting CLM and CM still on my Linux system. Again, like they say, the more you dig into the code the more you are amazed of what they've done. Bill, Rick, Michael Scholz, Fernando and many others, if it were not for you I wouldn't be paraphrasing Marco right now, thanks a lot for expatiating the real state of the art. Marco, great reading you!. -- Juan > > That said,? all this makes sense to me because of Bill!!! Amazing work > he has been doing all these years. I also have to say something that > many of those who have worked with Linux, but also Mac and windows I > think, have certainly experienced. CLM is the only program that every > time there is a new version it compiles and loads without error, as does > snd. > From nando at ccrma.Stanford.EDU Tue Jun 11 18:38:22 2024 From: nando at ccrma.Stanford.EDU (Fernando Lopez-Lezcano) Date: Tue, 11 Jun 2024 18:38:22 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> References: <87msny7akb.fsf@avinjar.no> <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> Message-ID: On 6/6/24 11:38, Juan Reyes wrote: > Hi Anders, > > Thanks a lot for your thorough explanation which of course as usual is > useful and encouraging. What I was looking for was something like > 'tetrafile'. (Been using other Fons' software for a while and don't know > how I overlooked at it). > > Need to encode few dozen sound files into B-format Ambisonics and batch > processing would be a time saving alternative. Hey Juan, I am assuming you need A-format (capsule signals) to B-format (Ambisonics) conversion. As Anders wrote, that is heavily dependent on which Ambisonics microphone was used to record the soundfield. Which one did you use? -- Fernando > Will be following your > suggestions. > > However, while searching this topic, can't help pointing out Fernando's > Ambisonics code in 'dlocsig.clm (scm)'. > > ?? -- Juan > > >> > >> If all you want is the MS-type matrixing it should be straight >> forward in an "a2b.scm" script for snd, or sox or ffmpeg or others, >> You can combine the 4 A-format channels FLU,FRU,BLU,BRD using >> MS-like-techniques: >> >> W = FLU+FRD+BLD+BRU X = FLU+FRD-BLD-BRU Y = FLU-FRD+BLD-BRU Z = >> FLU-FRD-BLD+BRU >> >> But leaving out all the required tunings for A2B conversion from any >> given FAO mic: eq, gain, phase - you wont get any meaningful >> B-format output - rather a >> "quite-nice-space-like-feeling-surround-spread mic" (wow, my new >> brand!? :-) . >> >> For B-format you'll need a specific B-format encoder to a specific >> type of mic, tuned to its geometry and specs of capsules, and further >> using precise calibration-data fitted to your personal mic (*). >> >> Fons Adriansens 'tetraproc' includes a CLI 'tetrafile', doing the >> A-B conversion for Core Sounds Tetramic, and similar for their >> 2nd-order Octomic.? I think he has some example *.tetra config-files >> for some other brands.? He also offers to do the necessary >> measurements and calibrations for your TetraMic to plug into his >> conversion tools. >> >> Not sure what the other brands - Sennheiser, R?de etc. - offers for >> CLI-versions of their tools. >> >> (*) The dependence on both a specific decoder for a mic-brand, and >> further individually calibrated per mic, is perhaps sub-realised? >> Strange, given Ambisonics 100% reliance on extremely exact phase and >> gain info to represent the recorded space. >> >> One example is Nevaton who provides their VR-mic - otherwise very >> nicely made with great sound (no-noise, full-range - and very >> expensive) - without neither a fitting A2B decoder or necessary >> calibration data for each mic, relying on a one-time measurement of >> one mic done by Angelo Farino.? They even have suggested using >> Sennheisers or R?de's standard A2B-encoder... >> >> -anders >> > > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist > From juanig at ccrma.Stanford.EDU Wed Jun 12 09:04:26 2024 From: juanig at ccrma.Stanford.EDU (Juan Reyes) Date: Wed, 12 Jun 2024 09:04:26 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: References: <87msny7akb.fsf@avinjar.no> <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> Message-ID: Hola Nando, Thanks a lot for responding. Tried looking for '.tetra' files on Fons site but could not found any. However, I tried 'theoretical.tetra" and results were not that bad. Using four channels sound files with no microphone at all. FTR, workflow I'm using is combining four channels to get A-Format signals in aa Snd instrument as: W = FLU+FRD+BLD+BRU X = FLU+FRD-BLD-BRU Y = FLU-FRD+BLD-BRU Z = FLU-FRD-BLD+BRU Once I have these files, I use Fons' 'tetrafile' command to get B-format soundfiles with something like: 'tetrafile theoretica.tetra a-file.wav b-file.amb' Is there a way to get more '.tetra' files ?. Would be great to do more experimenting. I really appreciate Anders pointing out this method because 'tetrafile' command can be embedded in a script to do batch processing. Best of all!, -- Juan > Hey Juan, > I am assuming you need A-format (capsule signals) to B-format > (Ambisonics) conversion. As Anders wrote, that is heavily dependent on > which Ambisonics microphone was used to record the soundfield. > > Which one did you use? > -- Fernando > > From nando at ccrma.Stanford.EDU Wed Jun 12 10:38:57 2024 From: nando at ccrma.Stanford.EDU (Fernando Lopez-Lezcano) Date: Wed, 12 Jun 2024 10:38:57 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: References: <87msny7akb.fsf@avinjar.no> <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> Message-ID: <1a57ac6f-3f0f-4c4e-8717-3869d8fb820a@ccrma.stanford.edu> On 6/12/24 09:04, Juan Reyes wrote: > Hola Nando, > > Thanks a lot for responding. > > Tried looking for '.tetra' files on Fons site but could not found any. > However, I tried 'theoretical.tetra" and results were not that bad. > > Using four channels sound files with no microphone at all. No microphone? Hmmm, I don't understand ... how was the four channel "A-format" file created? > FTR, workflow I'm using is combining four channels to get A-Format > signals in aa Snd instrument as: > > W = FLU+FRD+BLD+BRU > X = FLU+FRD-BLD-BRU > Y = FLU-FRD+BLD-BRU > Z = FLU-FRD-BLD+BRU These equations already transform capsule signals (FLU, FRD, etc) into a B-format four channel Ambisonics signal. If I understand correctly you are using these equations, right? (one question is, where are FLU,FRD, etc, coming from if not from a microphone?). If that is what you are doing, you are already getting a WXYZ Ambisonics first order signal, no need to further process it. Whether this is really "Ambisonics" depends on where FLU/FRD/BRU/BLD come from... > Once I have these files, I use Fons' 'tetrafile' command to get B-format > soundfiles with something like: > > 'tetrafile theoretica.tetra a-file.wav b-file.amb' > > Is there a way to get more '.tetra' files ?. Would be great to do more > experimenting. The equations you reference above transform four capsule signals into first order Ambisonics assuming all capsules are identical, and they are co-located (impossible in a real microphone). Unless I misunderstand what you are doing, you do not need to use tetrafile, you already have a four channel B-format signal. ".tetra" files hold calibration data for individual microphones which includes gain compensation for the individual capsules and frequency response compensation in the mid and high frequencies that tries to correct for the effects of the capsules not being co-located (they contain a 4x4 matrix of convolution kernels - filters - that take everything into account - I have generated that data for my DIY 3d printed microphones from my measurement data). Each calibration data set corresponds to actual measurements of a particular microphone so, technically, it does not make sense to use them for any other microphone. ... Now, artistically you can do whatever you want, of course! Does not matter if it makes technical sense or is proper Ambisonics, if you like what you hear go for it... Best, -- Fernando See this for more details: https://ccrma.stanford.edu/~nando/publications/sphear.pdf > I really appreciate Anders pointing out this method because 'tetrafile' > command can be embedded in a script to do batch processing. > > ? Best of all!, > > ? -- Juan > > >> Hey Juan, >> I am assuming you need A-format (capsule signals) to B-format >> (Ambisonics) conversion. As Anders wrote, that is heavily dependent on >> which Ambisonics microphone was used to record the soundfield. >> >> Which one did you use? >> -- Fernando >> >> > > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist > From juanig at ccrma.Stanford.EDU Wed Jun 12 16:56:49 2024 From: juanig at ccrma.Stanford.EDU (Juan Reyes) Date: Wed, 12 Jun 2024 16:56:49 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: <1a57ac6f-3f0f-4c4e-8717-3869d8fb820a@ccrma.stanford.edu> References: <87msny7akb.fsf@avinjar.no> <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> <1a57ac6f-3f0f-4c4e-8717-3869d8fb820a@ccrma.stanford.edu> Message-ID: Well!... I see I don't need 'tetrafile' command. Thanks for pointing it out, and for a good in-depth explanation. Good that a workflow was shown. Otherwise I would be tweaking my perception into creative aesthetic dimensions and it is not what I wanted. Sound file is a four or eight channels file generated on CLM or Snd. Four channels is as follows: FLU is channel 0 (FL); FRD is channel 1(FR); BLD is channel 2 (RL); BRU is channel 3(RR); On each channel I'm using intensity panning. Don't know W,X,Y,Z equations for an eight channels sound file using LFU,RFU,RBU,LBU,LFD,RFD,RBD,LBD signals. Guessing now, writing a panning encoder function that takes signal and azimuth parameters also makes sense. Thanks again! -- Juan > No microphone? Hmmm, I don't understand ... how was the four channel > "A-format" file created? > > > These equations already transform capsule signals (FLU, FRD, etc) into a > B-format four channel Ambisonics signal. If I understand correctly you > are using these equations, right? (one question is, where are FLU,FRD, > etc, coming from if not from a microphone?). > > If that is what you are doing, you are already getting a WXYZ Ambisonics > first order signal, no need to further process it. Whether this is > really "Ambisonics" depends on where FLU/FRD/BRU/BLD come from... > > > The equations you reference above transform four capsule signals into > first order Ambisonics assuming all capsules are identical, and they are > co-located (impossible in a real microphone). Unless I misunderstand > what you are doing, you do not need to use tetrafile, you already have a > four channel B-format signal. > > ".tetra" files hold calibration data for individual microphones which > includes gain compensation for the individual capsules and frequency > response compensation in the mid and high frequencies that tries to > correct for the effects of the capsules not being co-located (they > contain a 4x4 matrix of convolution kernels - filters - that take > everything into account - I have generated that data for my DIY 3d > printed microphones from my measurement data). > > Each calibration data set corresponds to actual measurements of a > particular microphone so, technically, it does not make sense to use > them for any other microphone. > > ... > > Now, artistically you can do whatever you want, of course! Does not > matter if it makes technical sense or is proper Ambisonics, if you like > what you hear go for it... > > Best, > -- Fernando > > See this for more details: > https://ccrma.stanford.edu/~nando/publications/sphear.pdf > From anders at avinjar.no Thu Jun 13 01:35:06 2024 From: anders at avinjar.no (Anders Vinjar) Date: Thu, 13 Jun 2024 10:35:06 +0200 Subject: [CM] ambix ambisonics command line In-Reply-To: (Juan Reyes's message of "Wed, 12 Jun 2024 16:56:49 -0700") References: <87msny7akb.fsf@avinjar.no> <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> <1a57ac6f-3f0f-4c4e-8717-3869d8fb820a@ccrma.stanford.edu> Message-ID: <87h6dxw891.fsf@avinjar.no> I perhaps misunderstood what you're looking for? Ambisonics seems to be a strange thing (obvious by the sci-fi name, always with the capitol A...), relying on - at least for me - much DSP-mythology. It's fun though! Ambisonics seems to be a way of recording, of representing space, some multi channel file-formats, a lot of heavy formulas, a class of microphones, a way of playing back something, a way of arranging loudspeakers - probably all these at once. Most of the mythology seems to be related to using the mics, trying to trick a 4-capsule microphone to behave like a 0-sized point in space I don't know what the math-part of your brains look like, but at least i get confused, i dont think i'm alone. After working heavily with Ambisonics for the last 20 years, I have absolutely no idea at all how to set up a proper Ambisonics decoder, or make correct A2B-format encoders for my own microphones - relying 100% on some wiser guys dark knowledge, just doing what someone tells me to do. To get any meaningful output from my own mics I have to first send them across the Atlantic (to Len Moskowitz in New York) to get some DSP-ritual back (calibration-data) to plug in to some DSP i dont know how functions (mic-specific A2B encoder). > Sound file is a four or eight channels file generated on CLM or Snd. > Four channels is as follows: > FLU is channel 0 (FL); FRD is channel 1(FR); > BLD is channel 2 (RL); BRU is channel 3(RR); Hmm, if all you want to do is to pan some mono-signal into 3D space - given azimuth and elevation - and code it as a B-format Ambisonics format-file (W,X,Y,Z) - i think you can try something like: W = (* Signal 0707) X = (* Signal (cos azi) (cos elev)) Y = (* Signal (sin azi) (cos elev)) Z = (* Signal (sin elev)) Take care! -anders From juanig at ccrma.Stanford.EDU Thu Jun 13 09:53:04 2024 From: juanig at ccrma.Stanford.EDU (Juan Reyes) Date: Thu, 13 Jun 2024 09:53:04 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: <87h6dxw891.fsf@avinjar.no> References: <87msny7akb.fsf@avinjar.no> <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> <1a57ac6f-3f0f-4c4e-8717-3869d8fb820a@ccrma.stanford.edu> <87h6dxw891.fsf@avinjar.no> Message-ID: <7baa77d9-a8c5-4bb3-ad6a-82c4558cacb1@ccrma.stanford.edu> Hi Anders, Got the encoder working. I'm going to polish the code and I'll post it later. Thanks for the equations. - Now the confusion between FUMA and Ambix -. Sharing your thoughts. Been using Ambisonics for almost couple of decades too, and thought I understood a lot or, at least the surface. By following your instructions on the previous example indeed I thought I was doing the right thing. And it sounded good!. Not that I feel that miserable but I guess there is never enough. Following Ambisonics terminology I should had focused my post on a MONO or multichannel Ambisonics Encoder. Good that there is this list, and good for you and Fernando. Regards, -- Juan > I perhaps misunderstood what you're looking for? > > Ambisonics seems to be a strange thing (obvious by the sci-fi name, > always with the capitol A...), relying on - at least for me - much > DSP-mythology. It's fun though! > From nando at ccrma.Stanford.EDU Thu Jun 13 22:09:21 2024 From: nando at ccrma.Stanford.EDU (Fernando Lopez-Lezcano) Date: Thu, 13 Jun 2024 22:09:21 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: References: <87msny7akb.fsf@avinjar.no> <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> <1a57ac6f-3f0f-4c4e-8717-3869d8fb820a@ccrma.stanford.edu> Message-ID: <069a4e84-a347-47c8-b7e0-e5c666f9056f@ccrma.stanford.edu> On 6/12/24 16:56, Juan Reyes wrote: > Well!... ... > Sound file is a four or eight channels file generated on CLM or Snd. > Four channels is as follows: > > FLU is channel 0 (FL); FRD is channel 1(FR); > BLD is channel 2 (RL); BRU is channel 3(RR); > > On each channel I'm using intensity panning. If you want to pan sound in an Ambisonics soundfield then the four equations that Anders posted would be a start for a first order soundfield "encoder" for the FUMA format (mono input, 4 channels wide output). > Don't know W,X,Y,Z equations for an eight channels sound file using > LFU,RFU,RBU,LBU,LFD,RFD,RBD,LBD signals. Unless you have a (partial, with only 8 capsules) 2nd order microphone it does not make sense to think of microphone signals (at least to me) - just as you don't think of speaker positions when creating an Ambisonics signal. You either have a full soundfield captured with an Ambisonics microphone, or an artificially generated soundfield, usually a mono signal that you feed into a panner that generates Ambisonics. Once you have an Ambisonic soundfield you can mix it with others (same format and order), process with Ambisonics transforms, etc. > Guessing now, writing a panning encoder function that takes signal and > azimuth parameters also makes sense. See the attached scheme file for a panner (encoder) I wrote a while back[*]. This will pan a mono signal in Ambisonics and create a 5th order ACN/SN3D (aka Ambix) soundfile (36 channels wide). If you want 2nd order you would use just the first 9 output channels, the first 16 for third order, etc. This also creates a second scaled soundfile to feed an Ambisonics reverb. No idea if this code still works, I wrote it for "The Hidden and Mysterious Machinery of Sound" back in 2015... Time flies... > - Now the confusion between FUMA and Ambix -. No confusion :-) Just the most popular formats. FUMA is the original historical one, defined only up to third order, Ambix (ACN/SN3D) is the current one, widely used. Two main differences: order of the components (FUMA == WXYZ/etc, ACN == WYZX/etc), and the weights of each component. Your microphone or your encoder (panner) will generate one of them. You want to always use the same format when mixing, if you have different formats you have to convert to one of them (there are utilities to do that). https://en.wikipedia.org/wiki/Ambisonic_data_exchange_formats And once you have your Ambisonics mix you will need a decoder for your speaker configuration... BTW, the decoder will decode a particular format, so you better feed it the right one or things will be wrong (spatially). :-) The whole story fills books... -- Fernando [*] the equations come from a encoder generator written by Aaron Heller that can write them in several languages, very handy. https://bitbucket.org/ajheller/symbolic_spherical_harmonics/src/master/ >> No microphone? Hmmm, I don't understand ... how was the four channel >> "A-format" file created? >> > >> >> These equations already transform capsule signals (FLU, FRD, etc) into >> a B-format four channel Ambisonics signal. If I understand correctly >> you are using these equations, right? (one question is, where are >> FLU,FRD, etc, coming from if not from a microphone?). >> >> If that is what you are doing, you are already getting a WXYZ >> Ambisonics first order signal, no need to further process it. Whether >> this is really "Ambisonics" depends on where FLU/FRD/BRU/BLD come from... >> > >> >> The equations you reference above transform four capsule signals into >> first order Ambisonics assuming all capsules are identical, and they >> are co-located (impossible in a real microphone). Unless I >> misunderstand what you are doing, you do not need to use tetrafile, >> you already have a four channel B-format signal. >> >> ".tetra" files hold calibration data for individual microphones which >> includes gain compensation for the individual capsules and frequency >> response compensation in the mid and high frequencies that tries to >> correct for the effects of the capsules not being co-located (they >> contain a 4x4 matrix of convolution kernels - filters - that take >> everything into account - I have generated that data for my DIY 3d >> printed microphones from my measurement data). >> >> Each calibration data set corresponds to actual measurements of a >> particular microphone so, technically, it does not make sense to use >> them for any other microphone. >> >> ... >> >> Now, artistically you can do whatever you want, of course! Does not >> matter if it makes technical sense or is proper Ambisonics, if you >> like what you hear go for it... >> >> Best, >> -- Fernando >> >> See this for more details: >> https://ccrma.stanford.edu/~nando/publications/sphear.pdf >> > > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist > -------------- next part -------------- A non-text attachment was scrubbed... Name: alocsig-acn.scm Type: text/x-scheme Size: 6355 bytes Desc: not available URL: From marco at marcotrevisani.it Fri Jun 14 02:48:29 2024 From: marco at marcotrevisani.it (Marco Trevisani) Date: Fri, 14 Jun 2024 11:48:29 +0200 Subject: [CM] about jack and clm-5 Message-ID: Hi all, After saying that old clm-5 never failed on compiling i decided to make a change on my set up and compile clm-5 (on sblc/ubuntu) with-jack and i ran into this problem: While evaluating the form starting at line 558, column 0 of #P"xxxxxx/clm-5/all.lisp": debugger invoked on a SIMPLE-ERROR in thread #: ? Error opening shared object "xxxxxx/clm-5/libclm.so": ? xxxxxx/clm-5/libclm.so: undefined symbol: jack_port_type. (xxxxxx just replace the all path....i deleted to make shorter for reading) At first glance one gets the impression that the compiler does not find jack_port_type, so perhaps it is a problem to read /usr/include/jack/jack.h, i also tried to set explicitly -includedir=? but.... Since snd and clm share some basic code, I compiled snd-24.1 with jack without any kind of problem. I noticed a difference in the two configuration files, snd uses ALSA+JACK while clm only JACK, but I don't think it is relevant. Does anybody has or still using? clm-5 with-jack? Any tip would be appreciated. marco -- *Marco Trevisani* http://marcotrevisani.it -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Fri Jun 14 10:42:54 2024 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Fri, 14 Jun 2024 10:42:54 -0700 Subject: [CM] about jack and clm-5 In-Reply-To: References: Message-ID: <0cc47746ea0494cf5dfa8d093ce43b74@ccrma.stanford.edu> Did you remember to (pushnew :jack *features*) before compiling and loading clm? I think that works for me: sbcl * (pushnew :jack *features*) (:JACK :ARENA-ALLOCATOR :X86-64 :GENCGC :64-BIT :ANSI-CL :COMMON-LISP :ELF :IEEE-FLOATING-POINT :LINUX :LITTLE-ENDIAN :PACKAGE-LOCAL-NICKNAMES :SB-LDB :SB-PACKAGE-LOCKS :SB-THREAD :SB-UNICODE :SBCL :UNIX) * (load "all.lisp") ; using existing configuration file mus-config.h ; Compiling "/home/bil/clm/xen.c" ; Compiling "/home/bil/clm/io.c" ; Compiling "/home/bil/clm/headers.c" ; Compiling "/home/bil/clm/audio.c" ; Compiling "/home/bil/clm/sound.c" ; Compiling "/home/bil/clm/clm.c" ; Compiling "/home/bil/clm/vct.c" ; Compiling "/home/bil/clm/cmus.c" ; Creating "/home/bil/clm/libclm.so" ;;gcc -shared -fPIC -o /home/bil/clm/libclm.so /home/bil/clm/xen.o /home/bil/clm/headers.o /home/bil/clm/audio.o /home/bil/clm/io.o /home/bil/clm/sound.o /home/bil/clm/clm.o /home/bil/clm/vct.o /home/bil/clm/cmus.o -ljack -lsamplerate -lasound ;compiling /home/bil/clm/clm-package.lisp ;loading /home/bil/clm/clm-package.fasl ;compiling /home/bil/clm/initmus.lisp ;loading /home/bil/clm/initmus.fasl ;compiling /home/bil/clm/sndlib2clm.lisp ;loading /home/bil/clm/sndlib2clm.fasl ;compiling /home/bil/clm/defaults.lisp ;loading /home/bil/clm/defaults.fasl ;compiling /home/bil/clm/ffi.lisp ;loading /home/bil/clm/ffi.fasl ;compiling /home/bil/clm/mus.lisp ;loading /home/bil/clm/mus.fasl ;compiling /home/bil/clm/run.lisp ;loading /home/bil/clm/run.fasl ;compiling /home/bil/clm/sound.lisp ;loading /home/bil/clm/sound.fasl ;compiling /home/bil/clm/defins.lisp ;loading /home/bil/clm/defins.fasl ;compiling /home/bil/clm/env.lisp ;loading /home/bil/clm/env.fasl ;compiling /home/bil/clm/export.lisp ;loading /home/bil/clm/export.fasl ;compiling /home/bil/clm/clm1.lisp ;loading /home/bil/clm/clm1.fasl T * *features* (:CLM :CLM5 :CLM4 :CLM3 :CLM2 :JACK :ARENA-ALLOCATOR :X86-64 :GENCGC :64-BIT :ANSI-CL :COMMON-LISP :ELF :IEEE-FLOATING-POINT :LINUX :LITTLE-ENDIAN :PACKAGE-LOCAL-NICKNAMES :SB-LDB :SB-PACKAGE-LOCKS :SB-THREAD :SB-UNICODE :SBCL :UNIX) then I compiled/loaded and ran v.ins. (I didn't hear anything, but I hope that's because I don't have jack installed on this machine). From marco at marcotrevisani.it Fri Jun 14 12:04:57 2024 From: marco at marcotrevisani.it (Marco Trevisani) Date: Fri, 14 Jun 2024 21:04:57 +0200 Subject: [CM] about jack and clm-5 In-Reply-To: <0cc47746ea0494cf5dfa8d093ce43b74@ccrma.stanford.edu> References: <0cc47746ea0494cf5dfa8d093ce43b74@ccrma.stanford.edu> Message-ID: ?mhmm ehmm oohhh, nope? :-) As Jay used to say: if something doesnt work, first check the cable :-) now it runs as smooth as always. thanks, marco On 6/14/24 19:42, bil at ccrma.Stanford.EDU wrote: > (pushnew :jack *features*) -- *Marco Trevisani* http://marcotrevisani.it -------------- next part -------------- An HTML attachment was scrubbed... URL: From juanig at ccrma.Stanford.EDU Fri Jun 14 17:48:20 2024 From: juanig at ccrma.Stanford.EDU (Juan Reyes) Date: Fri, 14 Jun 2024 17:48:20 -0700 Subject: [CM] ambix ambisonics command line In-Reply-To: <069a4e84-a347-47c8-b7e0-e5c666f9056f@ccrma.stanford.edu> References: <87msny7akb.fsf@avinjar.no> <7abcfaba-1e4d-401d-998c-7e454e4c7ee7@ccrma.stanford.edu> <1a57ac6f-3f0f-4c4e-8717-3869d8fb820a@ccrma.stanford.edu> <069a4e84-a347-47c8-b7e0-e5c666f9056f@ccrma.stanford.edu> Message-ID: <59a75a3f-b5d8-44ff-b23a-87bbe381a90b@ccrma.stanford.edu> Hi Nando, Thanks a lot and I mean a lot! Been reading all pointers you are telling us in addition to various papers you wrote with Aaron Heller and of course the Sphear slides and documentation. Not just last night!, ...should say for months. Things are much clearer now. Maybe what's going on is that we use ready made software like Fons' Ardour panners or even AmbPan in Supercollider (real time) and we never look under the hood. They just work. But this is valid until you get into unique situations and, ... " there you are on your own". All of your explanations make fuzziness go away. However, I can't deny I need to sit down to read the code of 'alocsig-acn'. Thanks for sharing it. My take on the FOA encoder is as you are suggesting, using the canonical equations and thus passing signals through Ambdec. "Curiosity killed the cat". You are mentioning, "The Hidden and Mysterious Machinery of Sound". Can wait listening to it. Best of all, -- Juan > > If you want to pan sound in an Ambisonics soundfield then the four > equations that Anders posted would be a start for a first order > soundfield "encoder" for the FUMA format (mono input, 4 channels wide > output). > > > > See the attached scheme file for a panner (encoder) I wrote a while > back[*]. This will pan a mono signal in Ambisonics and create a 5th > order ACN/SN3D (aka Ambix) soundfile (36 channels wide). If you want > 2nd order you would use just the first 9 output channels, the first > 16 for third order, etc. This also creates a second scaled soundfile > to feed an Ambisonics reverb. > > No idea if this code still works, I wrote it for "The Hidden and > Mysterious Machinery of Sound" back in 2015... Time flies... > >> - Now the confusion between FUMA and Ambix -. > > No confusion :-) Just the most popular formats. FUMA is the original > historical one, defined only up to third order, Ambix (ACN/SN3D) is > the current one, widely used. Two main differences: order of the > components (FUMA == WXYZ/etc, ACN == WYZX/etc), and the weights of > each component. Your microphone or your encoder (panner) will > generate one of them. You want to always use the same format when > mixing, if you have different formats you have to convert to one of > them (there are utilities to do that). > > https://en.wikipedia.org/wiki/Ambisonic_data_exchange_formats > > And once you have your Ambisonics mix you will need a decoder for > your speaker configuration... BTW, the decoder will decode a > particular format, so you better feed it the right one or things will > be wrong (spatially). > > :-) > > The whole story fills books... -- Fernando > > [*] the equations come from a encoder generator written by Aaron > Heller that can write them in several languages, very handy. > > https://bitbucket.org/ajheller/symbolic_spherical_harmonics/src/master/ > From chohag at jtan.com Mon Jun 24 11:58:19 2024 From: chohag at jtan.com (chohag at jtan.com) Date: Mon, 24 Jun 2024 19:58:19 +0100 Subject: [CM] S7 wrapper around SDL Message-ID: <202406241858.45OIwL4v058047@zeus.jtan.com> A project I am working on needs to use SDL and OpenGL (among others) from S7 and so I am writing an S7 interface to SDL, which I have included below. The files can be loaded without any fuss into a fresh S7 context. The compiler and linker settings are hardcoded to values valid on OpenBSD at the bottom of the SCM files. I'm sending it to this list aside from my main project, which is a huge mess, to get feedback on my implementation before anything gets too set in stone. What's good, what's bad, what could be done better or just differently? Any thoughts or suggestions are very welcome, don't hold back! I have others, a matrix maths library, nuklear GUI and some of my own modules, and I think I will need sqlite very soon, but SDL will do for now and this will also inform how I get on with those. Cheers, Matthew -------------- next part -------------- A non-text attachment was scrubbed... Name: s7sdl-glthread.h Type: text/x-c Size: 774 bytes Desc: s7sdl-glthread.h URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: s7sdl-x11.scm Type: application/zlib Size: 2466 bytes Desc: s7sdl-x11.scm URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: s7sdl.scm Type: application/zlib Size: 38670 bytes Desc: s7sdl.scm URL: From bil at ccrma.Stanford.EDU Tue Jun 25 02:28:55 2024 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Tue, 25 Jun 2024 02:28:55 -0700 Subject: [CM] S7 wrapper around SDL In-Reply-To: <202406241858.45OIwL4v058047@zeus.jtan.com> References: <202406241858.45OIwL4v058047@zeus.jtan.com> Message-ID: <6ddb5b097ca0e733d27a418e0490348d@ccrma.stanford.edu> That's an interesting project! I don't know anything about SDL, so I can't offer any sage advice. On the matrix library, there's also the libgsl stuff in the s7 tarball. If you're writing the matrix functions in Scheme and notice anything that seems unnaturally slow, please let me know. Good Luck with SDL/OpenGL (I was pleased to see openGL in use!) From bil at ccrma.Stanford.EDU Fri Jun 28 06:09:10 2024 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Fri, 28 Jun 2024 06:09:10 -0700 Subject: [CM] Snd 24.5 Message-ID: <4f1b38eb0bc92fd2d908d5283db2b293@ccrma.stanford.edu> Snd 24.5: in s7, added (settable) symbol-initial-value (the #_... value) changed invalid-escape-function to invalid-exit-function new *s7* fields: symbol-quote?, symbol-printer, and make-function added function-arglist in sublet, varlet and s7_load_with_environment, () is no longer an abbreviation for (rootlet) checked: sbcl 2.4.5, gsl 2.8