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

Reply via email to