Chaos in Faust

Hier de versie met detuning:

Code:
declare name "Chaos3";
declare options "[midi:on]";
declare options "[nvoices:12]";


import("maths.lib");
import("reverbs.lib");
import("filters.lib");
import("stdfaust.lib");



//------------------------------
freq = hslider("[1]freq",200,50,5000,0.01);
gate = button("[5]gate");
gain = hslider("[2]gain",0.5,0,1,0.01);
bend = ba.semi2ratio(hslider("bend[midi:pitchwheel]",0,-20,20,0.01)) : si.smoo;
oct  = hslider("octave", 1, 1, 2, 0.01);
//------------------------------



//------------------------------
add(x,y) = x,y : +;
block(x,y) = x,y :_*(1-_);
leak(x) = x*(1-le);

C = ((add,_) : (block:leak)) ~ _;

A(x,y) = x,y,y;
AA(x,y) = x,x,y,y;
AAA(x,y) = x,x,y;
//------------------------------



//------------------------------
le = hslider("[3]Leak[scale:log]", 0.00000000001,0.00000000001,1,0.00000000001);
pa = hslider("[4]Parameter", 0.6, 0.55,1,0.001);

timeconstant = 0.151/(bend*(freq*oct)^0.92);
//------------------------------



//----clean version of R -------
B = _ : _/SR : _/timeconstant : _;
Integrator = A : B,_,_ : block,_ : C;
P = _,_,_ : add,_ : A : Integrator,_ : AA : _,Integrator,_ : _,AAA : _,_, Integrator : _,_,_;
Q(x,y,z) = -1*pa*x - y + abs(z) - 1;
R = (P : Q) ~ _;
//------------------------------



//----first detuned version of R-----
det1 = hslider("detune1", 0, 0,0.02,0.00001);

Bd = _ : _/SR : _*(1+det1)/timeconstant : _;
Integratord = A : Bd,_,_ : block,_ : C;
Pd = _,_,_ : add,_ : A : Integratord,_ : AA : _,Integratord,_ : _,AAA : _,_, Integratord : _,_,_;
Q(x,y,z) = -1*pa*x - y + abs(z) - 1;
Rd = (Pd : Q) ~ _;
//------------------------------



//----second detuned version of R-----
det2 = hslider("detune2", 0, 0,0.02,0.00001);

Bdd = _ : _/SR : _*(1+det2)/timeconstant : _;
Integratordd = A : Bdd,_,_ : block,_ : C;
Pdd = _,_,_ : add,_ : A : Integratordd,_ : AA : _,Integratordd,_ : _,AAA : _,_, Integratordd : _,_,_;
Q(x,y,z) = -1*pa*x - y + abs(z) - 1;
Rdd = (Pdd : Q) ~ _;
//------------------------------



//-----envelope-----------------
att = hslider("[6]attack", 0.01, 0, 1, 0.01);
dec = hslider("[7]decay", 0.01, 0, 1, 0.01);
sus = hslider("[8]sustain", 0.8, 0.1, 1, 0.01);
rel = hslider("[9]release", 0.1, 0, 5, 0.01);

envelope = en.adsr(att,dec,sus,rel,gate)*gain;
//------------------------------



//---------reverb---------------
t60  = hslider("reverberation time", 10, 0.1, 60, 0.01);
damp = hslider("damping ", 0.5, 0, 1, 0.01);
size = hslider("size", 3, 0.5, 5, 0.01);
early_diff = hslider("early reflections", 0.5, 0, 1, 0.01);
mod_depth  = hslider("modulation depth", 0.1, 0, 1, 0.01);
mod_freq   = hslider("modulation frequency", 1, 0, 10, 0.01);
low  = hslider("low band", 0.5, 0, 1, 0.01);
mid  = hslider("mid band", 0.5, 0, 1, 0.01);
high = hslider("high band", 0.5, 0, 1, 0.01);
low_cutoff  = hslider("low cutoff", 500, 100, 6000, 1);
high_cutoff = hslider("high cutoff", 5000, 1000, 10000, 1);

V = jpverb(t60, damp, size, early_diff, mod_depth, mod_freq, low, mid, high, low_cutoff, high_cutoff);
//------------------------------


//------------------------------
vol1  = hslider("volume1", 0.5, 0, 1, 0.01);
vol2  = hslider("volume2", 0.5, 0, 1, 0.01);
vol3  = hslider("volume3", 0.5, 0, 1, 0.01);
//------------------------------



process = (R*vol1 + Rd*vol2 + Rdd*vol3)*0.1 : _*envelope <: V : dcblocker,dcblocker;
 
Dat kan ik vanuit de FaustIDE als volgt exporteren:

export.png


En dan krijg ik dit:
 

Attachments

  • binary.zip
    112,1 KB · Bekeken: 135
Nee - helaas! De geƫxporteerde Windows VST's in de diverse varianten werken (op mijn computer) in Carla maar gedeeltelijk.
 
Zo (als in de bijlage) laat ik 'm voorlopig. De GUI ziet er nu in de Faust IDE zo uit:

ChaosSynth3(UI).png


Voor Linux zou ik dat nog fraaier kunnen maken, door het progje als LV2 plugin te exporteren en dan met XUiDesigner op te leuken. Maar daar hebben de Windows gebruikers niet veel aan. Dus ik laat het even zo. Hier nog een geluidsfragment van wat je met het progje vermag:



Verder als bijlage het ingepakte progje van mijn soft synthje zelf. Dat zou ook onder Windows in de Faust IDE moeten draaien. Wil iemand dat nog even proberen?
 

Attachments

  • ChaosSynth3.dsp.zip
    1,2 KB · Bekeken: 153
Let op: Poly Voices mag niet op "Mono" staan!

screenshot.png


Als browser voor de Faust IDE gebruik ik Chromium (de Linux versie van Chrome).
 
Het werkt hier niet, maar dat is niet representatief. Stokoude hardware, antieke software. :D

Ziet er goed uit! :)
 
In Firefox werkt de Faust IDE voor geen meter, in Chrome doet het meer, maar dan krijg ik de foutmelding: "FaustDSP : 104 : ERROR : undefined symbol : jpverb".
 
Ja - leuk spul! Maar nu de volgende stap: hoe geef ik die synth een fraaie GUI die behalve onder Linux ook op Windows werkt? Het ziet er naar uit dat ik daarvoor een basiskennis van C++ en Juce nodig heb. En een extra laptopje met een recente versie van Windows om daarop mijn voor Windows gegenereerde apps te kunnen testen.

Hoe zou je mijn geluidfragmenten benoemen? Als aanzetten tot dark ambient wellicht, of is dat weer iets anders?
 
Ik moet zo weg, maar hoop vandaag of morgen ergens een laptopje met Windows te scoren. Dan moet de MS-20 mini maar wachten. Ik wil hier ook zelf kunnen zien wat het onder Windows doet.
 
Heb zojuist een refurbished laptopje met Windows11 gekocht. Eerste indruk is dat er met de Faust IDE op Chrome iets fout gaat. Wordt vervolgd...
 
Op mijn Windows laptop werkt de Faust IDE ook niet, maar:
The online Faust IDE can be used to edit, compile and run Faust code from any recent Web Browser with webassembly support. It works completely on the client side and it is therefore very convenient for situations with many simultaneous users (workshops, classrooms, etc.). It embeds the latest version of the Faust compiler with an efficient webassembly backend and offers polyphonic MIDI support.
Grote kans dus dat het ontbreken van WebAssembly het euvel is. Nu nog de vraag hoe dat te verhelpen...?
 
Heb het er maar op gewaagd, hoewel er hier en daar op het internet tegen het gebruik van Webassembly gewaarschuwd wordt. Als ik alle features van WebAssembly onder Chrome://flaggs activeer en pop ups toelaat dan werkt de Faust IDE ook in Chrome onder Windows 11. Maar het gaat traag, en het exporteren van Windows VSTi's levert nog steeds niets bruikbaars op.
 
Hmm, dat gaat dus nog niet goed. Vooral jammer dat een export niet goed werkt, dat zou verspreiding van iets dat je hebt gemaakt een stuk eenvoudiger maken.
 
Inmiddels wat meer vertrouwen dat het uiteindelijk gaat lukken. De plugin host Carla (van KXStudio) heeft ook een Windows versie, en daarin heb ik net op mijn Windows11 laptop mijn ChaosSynth3 aan de praat gekregen. Nog zonder fatsoenlijke GUI, maar dat is niet zo vreemd want een nette GUI moet ik nog maken (dat gaat niet in de Faust IDE).
 
Net geprobeerd, Carla werkt hier op m'n oude Windows-laptopje. Nu je synth nog, eerst 'ns kijken hoe je dat moet doen.
 
Hoe het bij mij werkt is dat je van CarlaVstShell met behulp van NanoHost een stand-alone PluginHost maakt. Daarin kun je dan ChaosSynth3.dll openen. Wellicht kan het eenvoudiger, maar hier ga ik even mee verder om nu eerst een fatsoenlijke GUI te maken en te testen.

Zie de bijlage:
 

Attachments

  • binary.zip
    113,1 KB · Bekeken: 105
Die gebruik ik het meest. Ik heb weliswaar nog eentje die nieuwer is, maar die heeft een vrij waardeloos beeldscherm en gebruik ik amper. Dit oude beestje heeft een heel goed scherm en is een stuk aangenamer om naar te kijken. Zijn beide HP, maar qua scherm een wereld van verschil.
 
Back
Top