I started a «Faust and Unity » discussion here : https://github.com/grame-cncm/faust/discussions/671
hoping the discussion and content can be moving there, until we get enough content to create « Faust and Unity » tutorial? Stéphane > Le 1 nov. 2021 à 11:22, PARKER Martin <martin.par...@ed.ac.uk> a écrit : > > HI Rob, to get Unity's native spatialization to work on a Faust plugin in > Unity, the following may help: > > • IN UNITY: On the AudioSource place a .wav file to play on a loop, on > load. This wav file should have all sample values set to 1. Try this one: > https://www.dropbox.com/s/dpc4mda051qmiyo/all1.wav?dl=0 Add your FaustPlugin > to the game object with the audiosource on it and Unity's spatialisation > parameters will be multiplied by the .wav file and fed into your Faust Plugin. > > • The Faust code needs something like the following at the process > stage. In the IDE it will be silent, but in Unity, it will be multiplied by > the house spatialisation. > import("stdfaust.lib"); > > vol = hslider("volume [unit:dB]", -24, -96, 0, 0.1) : ba.db2linear : si.smoo ; > freq = hslider("freq [unit:Hz]", 1000, 20, 24000, 1) : si.smoo ; > > process(in1,in2,in3,in4,in5,in6) = vgroup("Oscillator", os.osci(freq) * vol) > <: (_*in1,_*in2,_*in3,_*in4,_*in5,_*in6); > > > This will make your plugin surround panning ready in the Unity environment > but if you're not going six channels, you can just process inputs 1 and 2. > > Good luck > Best > Martin~ > > From: Alberto Boem <boem.albe...@gmail.com> > Sent: 01 November 2021 07:18 > To: Rob Hamilton <robert.k.hamil...@gmail.com> > Cc: faudiostream-users@lists.sourceforge.net > <faudiostream-users@lists.sourceforge.net> > Subject: Re: [Faudiostream-users] Unity mono vs. stereo with pm instruments > > This email was sent to you by someone outside the University. > You should only click on links or attachments if you are certain that the > email is genuine and the content is safe. > Hi Rob, sorry I might have misunderstood your question. > But somehow the problem you encountered seems unavoidable. > > I never actually encountered it before, because I never used panning in > Unity. with Faust plugins...I always did in the way I suggested you :) > > Mostly -I think- comes down to how audio is generated and managed in Unity. > Basically, the Faust plugin will fill an OnAudioFilterRead() which is the way > you usually go for implementing custom DSP in Unity (aka filters/effects). > > Somehow (but I am far from an expert) when you create an OnAudioFilterRead() > this will basically take over the functionalities of the Audio Source. > Even if Pitch and Volume can be applied to the generated sound, this seems > not to be the case for stereo panning. > That's why, usually, you will need to make the panning yourself inside the > OnAudioFilterRead(). > > I used Faust in projects for Oculus Quest, Hololens and nReal. If you use > some sound spatializer plugins (such as the one from Oculus or the one from > Microsoft or Steam Audio), usually they somehow fix the problem (sometimes > you need to add a dummy audio file in the AudioClip of the Audio Source) > > I think who developed this > https://github.com/LibPdIntegration/LibPdIntegration/wiki/spatialisation > found an interesting way to deal with such a problem. > Maybe it can be adapted in a similar way in Faust. > > > Il giorno lun 1 nov 2021 alle ore 01:18 Rob Hamilton > <robert.k.hamil...@gmail.com> ha scritto: > Thanks for the speedy and helpful reply Alberto. > > I tested this example splitting the signal in two (which still resulted in > audio in both channels regardless of Unity panners), but adding the > left/right parameterization on those outputs allows me to separately adjust > channel levels in Unity. > > As for replacing sliders with just numerical inputs, I built the example > pasted below, but Unity throws an error within the associated FaustUtilities_ > script, seemingly looking for UI elements: > > if (!FaustUI.fJSONParser(ref fJSON, out fUI)) { // Parses the JSON file > UnityEngine.Debug.LogError("Error JSON Parser"); > } > > Does violinModel by default require UI elements, even if sliders and the like > aren't specified in the FAUST declaration? Or is the manner I declared it > below confusing things... > > Again, any suggestions or guidances are extremely helpful. > > ------------- > > TEST SCRIPT (ATTEMPTING TO REMOVE UI ELEMENTS): > > import("stdfaust.lib"); > > my_violin= pm.violinModel(stringLength,bowPress,bowVel,bowPos)*outGain > with{ > stringLength = 0; > bowVel = 0; > bowPress = 0; > bowPos = 0; > outGain = 0; > }; > > left = 0; > right = 0; > > process = my_violin <: _ * left ,_ * right; > > > > On Sun, Oct 31, 2021 at 2:25 AM Alberto Boem <boem.albe...@gmail.com> wrote: > Hi Rob, > > I think you need to specify this in your Faust code. > > Have you considered doing this for splitting the signal in two? > > process = my_violin_ui <: _,_; > > https://faustdoc.grame.fr/manual/syntax/#split-composition > > and maybe: > > left = hslider("[0]left",0,0,1,0.1); > right = hslider("[0] right",0,0,1,0.1); > > process = my_violin_ui <: _ * left ,_ * right; > > in this way, you should gain control of the two channels separately. > > Or maybe, try to look at the example spat/panpot.dsp in the "Examples" of the > Faust IDE. > > > As a small suggestion. > Sometimes I found that if you need to export a .dsp file as a unity plugin it > is better to get rid of the UI elements of Faust. Replacing sliders with just > numerical inputs seems to make everything more smooth and easier to process > for Unity. > > Il giorno dom 31 ott 2021 alle ore 11:19 Rob Hamilton > <robert.k.hamil...@gmail.com> ha scritto: > Hi all, > > Long time fan, first time caller. > > I'm playing with some Faust violins in a Unity project and am unsure as to > what I should expect to hear in terms of spatialization for the output I'm > getting. With a simple violinModel ui example such as listed below (thanks > 250A) loaded into a 2-dimensional unity scene, I seem to get two channels of > audio, which show no consideration of the Unity AudioSource "Stereo Pan" > parameter, either adjusted manually in the IDE or in code. For a standard > mono wav asset, this would pan the single channel left to right (-1 to 1), > and for a standard stereo wav asset this would increase/decrease the volume > of channels 0 or 1 respectively. > > In the online Faust ide for this example, I can see that two channels are > generated, so I assume stereo output. But the plugin output doesn't act as a > stereo asset would. Or am I missing something (I assume the latter). > > I've tested routing these through Unity Mixer groups and can see audio level > data in both channels too, so I'm sure it's not my home audio rig. And this > is for a simple 2D project, no 3D spatialization, so I have Unity's "Spatial > Blend" Audio Source parameter set to 2D (which then ignores the roll-off > settings). > > Any suggestions would be great. > > thanks! > > Rob > > ***** CODE EXAMPLE ***** > > import("stdfaust.lib"); > > my_violin_ui > = pm.violinModel(stringLength,bowPress,bowVel,bowPos)*outGain > > with{ > stringLength > = hslider("v:violin/v:[0]string/[0]length[midi: ctrl 72]",0.75,0,2,0.01) : > si.smoo; > > bowVel > = hslider("v:violin/v:[1]bow/[0]velocity[midi: ctrl 71]",0,0,1,0.01) : > si.smoo; > > bowPress > = hslider("v:violin/v:[1]bow/[1]pressure[midi: ctrl 74]",0.5,0,1,0.01) : > si.smoo; > > bowPos > = hslider("v:violin/v:[1]bow/[2]position[midi: ctrl 73]",0.7,0,1,0.01) : > si.smoo; > > outGain > = hslider("v:violin/outGain",0.5,0,1,0.01); > > }; > > process = > my_violin_ui; > > > _______________________________________________ > Faudiostream-users mailing list > Faudiostream-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/faudiostream-users > > > -- > Robert Hamilton > Center for Computer Research in Music and Acoustics (CCRMA) > Stanford University > http://ccrma.stanford.edu/~rob > The University of Edinburgh is a charitable body, registered in Scotland, > with registration number SC005336. Is e buidheann carthannais a th’ ann an > Oilthigh Dhùn Èideann, clàraichte an Alba, àireamh clàraidh SC005336. > _______________________________________________ > Faudiostream-users mailing list > Faudiostream-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/faudiostream-users _______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users