Hi HISE community,
We are always happy to add projects using Faust here: https://faust.grame.fr/community/powered-by-faust/.
Fell free to contact me if you want your project to be added.
Stéphane
Hi HISE community,
We are always happy to add projects using Faust here: https://faust.grame.fr/community/powered-by-faust/.
Fell free to contact me if you want your project to be added.
Stéphane
Will there be any interest in something related to Faust integration ? I can possibly participate next meeting if you guys have some questions I can prepare answers for.
@etXzat and @Christoph-Hart did most of the hard work of "inside HISE" integration and they have to be thanked for that.
On the Faust side, the project adds to the existing ecosystem (https://faust.grame.fr/community/made-with-faust/) and we are quite happy with that 
@etXzat or @Christoph-Hart do you have a nice screenshot we could add on the https://faust.grame.fr/community/made-with-faust/ page?
@dannytaurus JPverb and Greyhole Reverbs developed by Julian Parker have been moved to MIT licence some months ago (don't remember the exact date...) after discussion with Julian himself.
Claude code speaking to Faust MCP: https://drive.google.com/file/d/1SX5-JXjnb3vIMeiEMTfn1VYezMt6P5Fk/view
Using WIP project: https://github.com/sletz/faust-mcp
And a bit of ChatGPT: 
GRAME has been selected as a mentor organization on GSoC for the Faust project.
And HISE integration if one of the proposed projects, hoping somewhere can be interested there?
@HISEnberg Nice ! I was the "faust community" in this precise case 
We have tools to help debugging, read:
https://faustdoc.grame.fr/manual/debugging/#debugging-at-runtime
https://faustdoc.grame.fr/tutorials/debugging/
This interp-tracer tool is currently to be used in the terminal, so requires a local installation. But in theory this kind of tool could be integrated in HISE
, since the libfaust library used in HISE also embeds the needed Interpreter backend.
For more local NAN protection, using ma.EPSILON is a more portable solution, since is adapts the single/double compilation option.
@Morphoice They are some sophisticated models in the Faust envelop library like https://faustlibraries.grame.fr/libs/envelopes/#enadsrf_bias or the following. Could one of them be used or adapted ?
@dannytaurus JPverb and Greyhole Reverbs developed by Julian Parker have been moved to MIT licence some months ago (don't remember the exact date...) after discussion with Julian himself.
Code to be tested here.
import("stdfaust.lib");
declare name "brightOrgan";
declare author "Claude AI";
// Organ parameters
freq = hslider("h:Main/freq [style:knob][midi:ctrl 1]", 220, 55, 880, 0.1);
gate = button("h:Main/gate [midi:ctrl 64]");
volume = hslider("h:Main/volume [style:knob][midi:ctrl 7]", 0.5, 0, 1, 0.01);
// Organ stops
foundation8 = hslider("h:Stops/Foundation 8' [style:knob][midi:ctrl 14]", 0.8, 0, 1, 0.01);
principal4 = hslider("h:Stops/Principal 4' [style:knob][midi:ctrl 15]", 0.5, 0, 1, 0.01);
fifteenth2 = hslider("h:Stops/Fifteenth 2' [style:knob][midi:ctrl 16]", 0.3, 0, 1, 0.01);
flute8 = hslider("h:Stops/Flute 8' [style:knob][midi:ctrl 17]", 0.4, 0, 1, 0.01);
nasard = hslider("h:Stops/Nasard 2 2/3' [style:knob][midi:ctrl 18]", 0.2, 0, 1, 0.01);
tierce = hslider("h:Stops/Tierce 1 3/5' [style:knob][midi:ctrl 19]", 0.15, 0, 1, 0.01);
// Reverb parameters
reverbAmount = hslider("h:Reverb/Amount [style:knob][midi:ctrl 91]", 0.3, 0, 1, 0.01);
reverbDamp = hslider("h:Reverb/Damp [style:knob][midi:ctrl 92]", 0.5, 0, 1, 0.01);
reverbSize = hslider("h:Reverb/Size [style:knob][midi:ctrl 93]", 0.6, 0, 1, 0.01);
// Organ pipe generator (filtered square wave + breath noise)
organ_pipe(f, brightness) = pipe
with {
// Square wave with odd harmonics
square = os.square(f);
// Low-pass filter to soften the sound
cutoff = f * (2 + brightness * 8);
filtered = square : fi.lowpass(2, min(cutoff, 10000));
// Characteristic organ breath noise
breath = no.noise * 0.015 : fi.resonlp(f, 1, 1);
pipe = filtered + breath;
};
// Flute pipe (more sinusoidal)
flute_pipe(f) = pipe
with {
// Dominant sinusoidal fundamental
fundamental = os.osc(f);
// Some harmonics
h2 = os.osc(f * 2) * 0.25;
h3 = os.osc(f * 3) * 0.08;
// Flute breath noise
breath = no.noise * 0.02 : fi.resonlp(f * 1.5, 2, 1);
pipe = fundamental + h2 + h3 + breath;
};
// Combined stops
organ = (
// Foundation 8' (fundamental)
organ_pipe(freq, 0.3) * foundation8 +
// Principal 4' (upper octave)
organ_pipe(freq * 2, 0.4) * principal4 +
// Fifteenth 2' (two octaves)
organ_pipe(freq * 4, 0.5) * fifteenth2 +
// Flute 8'
flute_pipe(freq) * flute8 +
// Nasard 2 2/3' (perfect fifth)
flute_pipe(freq * 3) * nasard * 0.7 +
// Tierce 1 3/5' (major third)
flute_pipe(freq * 5) * tierce * 0.5
) / 4;
// Organ envelope (characteristic slow attack)
env = en.asr(0.1, 1, 0.2, gate);
// Dry signal
dry = organ * env * volume;
// Smaller reverb with adjustable parameters
reverb(x) = x : re.mono_freeverb(reverbSize, reverbDamp, 0.3, 6000);
// Dry/wet mix
output = dry * (1 - reverbAmount * 0.5) + reverb(dry) * reverbAmount;
// Stereo output
process = output <: _,_;

With Claude desktop, which seems like much more capable, and the workflow is much faster...
Claude code speaking to Faust MCP: https://drive.google.com/file/d/1SX5-JXjnb3vIMeiEMTfn1VYezMt6P5Fk/view
Using WIP project: https://github.com/sletz/faust-mcp
And a bit of ChatGPT: 
@JulesV You can possibly use ba.selectmulti as in:
process = ba.selectmulti(100, (fx1, fx2, fx3), nentry("Model", 0, 0, 2, 1))
with {
fx1 = re.jcrev;
fx2 = re.zita_rev1_stereo(20, 200, 2000, 3.0, 2.0, 48000);
fx3 = re.dattorro_rev(200, 0.5, 0.7, 0.6, 0.5, 0.7, 0.5, 0.2);
};
But yes the 3 branches will always run here.
@JulesV Then updating the Faust version inside HISE is the way to do.
The wanted HISE.app file does not exist;;;, I guess is should be part of the installer yes ?
The wanted HISE.app file does not exist;;;, I guess is should be part of the installer yes ?
I get this kind of issue with the latest HISE.4.1.0.dmg.macOS.Universal.Binary.dmg
Any idea why ?

I don't think so. This would require using a SoundUI object as explained here: https://faustdoc.grame.fr/manual/architectures/#developing-a-new-soundfile-loader
But since HISE use based on JUCE, then using the already written JuceReader should be strait forward.