Page 14 of 15

Re: XUiDesigner v0.5 released

Posted: Tue Sep 20, 2022 7:53 pm
by LinMusGuy
I had named the bender "76_bender[101frames].png" for my easy reference. After renaming the bender to "76_bender.png" it now works in XUiDesigner.

But how to activate the virtual keyboard on the GUI. I don't see it...?

Re: XUiDesigner v0.5 released

Posted: Wed Sep 21, 2022 5:43 am
by tramp
LinMusGuy wrote: Tue Sep 20, 2022 7:53 pm But how to activate the virtual keyboard on the GUI. I don't see it...?
Scroll down the widget selector menu, it's the last in the list.
When you do a update (I've done some small fixes), you could see it directly as I've extend the size of the menu so that you don't need to scroll down any-more.

Re: XUiDesigner v0.5 released

Posted: Wed Sep 21, 2022 8:44 am
by LinMusGuy
gui.png
gui.png (77.89 KiB) Viewed 1373 times
The GUI is as it should be now, except that the custom labels in some cases hide part of the knob images.

I will do some more testing later today...

Re: XUiDesigner v0.5 released

Posted: Wed Sep 21, 2022 8:54 am
by tramp
LinMusGuy wrote: Wed Sep 21, 2022 8:44 am The GUI is as it should be now, except that the custom labels in some cases hide part of the knob images.
Nice!
When you stretch the controller widgets in width, you'll get enough space for the labels and didn't need to use custom labels.
I've fixed as well the VSliders, so that they beehive now the same as Knobs do. (Do a update) When images been in use therefore, they scale now with aspect ratio. So when you wider the widget, the controller will stay in the middle and the space for the label grow.

The reason why a label may hide a part of the controller is when the widgets overlap, the one which was created later will win (stacking order).

Re: XUiDesigner v0.5 released

Posted: Wed Sep 21, 2022 4:10 pm
by LinMusGuy
When I drop FluteMIDI.dsp in XUiDesigner there appear two maps (FluteMIDI and FluteMIDI.lv2) on my Desktop. Is that as it should be?

Re: XUiDesigner v0.5 released

Posted: Thu Sep 29, 2022 6:30 am
by tramp
Those are artefacts from faust2lv2.
I consider to implement my own version of it in order to avoid them.
But currently I've no time at all.

Re: XUiDesigner v0.5 released

Posted: Thu Sep 29, 2022 9:24 am
by LinMusGuy
OK - a lot is working already.

See you when you have time for new updates.

Re: XUiDesigner v0.5 released

Posted: Thu Sep 29, 2022 2:04 pm
by tramp
I've done a quick fix for this. Means I've set the workdir for faust2lv2 to /tmp so that the artefacts been popup under /tmp. That way you don't need to care about them as they get removed on any login.

Re: XUiDesigner v0.5 released

Posted: Thu Sep 29, 2022 2:52 pm
by LinMusGuy
Thanks!! That works. :D

I will do some more testing today, but I will have to use another Faust dsp-file for that because the flute apparently needs a velocity sensitive keyboard. I'm only hearing the airflow now... :wink:

Re: XUiDesigner v0.5 released

Posted: Thu Sep 29, 2022 3:02 pm
by tramp
Yes, the keyboard using a fixed velocity at 64. I'll implement a menu to allow to set velocity, keyboard mapping and channel later on.

Re: XUiDesigner v0.5 released

Posted: Thu Sep 29, 2022 7:47 pm
by LinMusGuy
I used the following example dsp file for testing the virtual MIDI keyboard in the XUiDesigner made GUI:

Code: Select all

declare options "[nvoices:8]";
import("all.lib");

///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Simple FM synthesizer.
// 2 oscillators and FM feedback on modulant oscillator
//
///////////////////////////////////////////////////////////////////////////////////////////////////
// ANALOG IMPLEMENTATION:
//
// ANALOG_0	: Modulator frequency ratio
// ANALOG_1	: Attack
// ANALOG_2	: Decay/Release
// ANALOG_3	: Sustain
//
// MIDI:
// CC 1 : FM feedback on modulant oscillator.
//
///////////////////////////////////////////////////////////////////////////////////////////////////

// GENERAL, Keyboard
midigate = button("gate");
midifreq = nentry("freq[unit:Hz]", 440, 20, 20000, 1);
midigain = nentry("gain", 1, 0, 1, 0.01);

// modwheel:
feedb = (gFreq-1) * (hslider("feedb[midi:ctrl 1]", 0, 0, 1, 0.001) : si.smoo);
modFreqRatio = hslider("ratio[BELA: ANALOG_0]",2,0,20,0.01) : si.smoo;

// pitchwheel
bend = ba.semi2ratio(hslider("bend [midi:pitchwheel]",0,-2,2,0.01));

gFreq = midifreq * bend;

//=================================== Parameters Mapping =================================
//========================================================================================
// Same for volume & modulation:
volA = hslider("A[BELA: ANALOG_1]",0.01,0.01,4,0.01);
volDR = hslider("DR[BELA: ANALOG_2]",0.6,0.01,8,0.01);
volS = hslider("S[BELA: ANALOG_3]",0.2,0,1,0.01);
envelop = en.adsre(volA,volDR,volS,volDR,midigate);

// modulator frequency
modFreq = gFreq * modFreqRatio;

// modulation index
FMdepth = envelop * 1000 * midigain;

// Out amplitude
vol = envelop;

//============================================ DSP =======================================
//========================================================================================

FMfeedback(frq) = (+(_,frq):os.osci) ~ (* (feedb));
FMall(f) = os.osci(f+ (FMdepth*FMfeedback(f*modFreqRatio)));

//#################################################################################################//
//##################################### EFFECT SECTION ############################################//
//#################################################################################################//
//
// Simple FX chaine build for a mono synthesizer.
// It controle general volume and pan.
// FX Chaine is:
//		Drive
//		Flanger
//		Reverberation
//
// This version use ANALOG IN to controle some of the parameters.
// Other parameters continue to be available by MIDI or OSC.
//
///////////////////////////////////////////////////////////////////////////////////////////////////
// ANALOG IMPLEMENTATION:
//
// ANALOG_4	: Distortion Drive
// ANALOG_5	: Flanger Dry/Wet
// ANALOG_6	: Reverberation Dry/Wet
// ANALOG_7	: Reverberation Room size
//
// MIDI:
// CC 7	: Volume
// CC 10 : Pan
//
// CC 13 : Flanger Delay
// CC 13 : Flanger Delay
// CC 94 : Flanger Feedback
//
// CC 95 : Reverberation Damp
// CC 90 : Reverberation Stereo Width
// 
///////////////////////////////////////////////////////////////////////////////////////////////////

// VOLUME:
volFX = hslider("volume[midi:ctrl 7]",1,0,1,0.001);	// Should be 7 according to MIDI CC norm.

// EFFECTS /////////////////////////////////////////////
drive = hslider("drive[BELA: ANALOG_4]",0.3,0,1,0.001);

// Flanger
curdel = hslider("flangDel[midi:ctrl 13]",4,0.001,10,0.001);
fb = hslider("flangFeedback[midi:ctrl 94]",0.7,0,1,0.001);
fldw = hslider("dryWetFlang[BELA: ANALOG_5]",0.5,0,1,0.001);
flanger = efx
	with {
		fldel = (curdel + (os.lf_triangle(1) * 2) ) : min(10);
		efx = _ <: _, pf.flanger_mono(10,fldel,1,fb,0) : dry_wet(fldw);
	};

// Pannoramique:
panno = _ : sp.panner(hslider("pan[midi:ctrl 10]",0.5,0,1,0.001)) : _,_;

// REVERB (from freeverb_demo)
reverb = _,_ <: (*(g)*fixedgain,*(g)*fixedgain :
	re.stereo_freeverb(combfeed, allpassfeed, damping, spatSpread)),
	*(1-g), *(1-g) :> _,_
    with {
        scaleroom   = 0.28;
        offsetroom  = 0.7;
        allpassfeed = 0.5;
        scaledamp   = 0.4;
        fixedgain   = 0.1;
        origSR = 44100;

        damping = vslider("Damp[midi:ctrl 95]",0.5, 0, 1, 0.025)*scaledamp*origSR/ma.SR;
        combfeed = vslider("RoomSize[BELA: ANALOG_7]", 0.7, 0, 1, 0.025)*scaleroom*origSR/ma.SR + offsetroom;
        spatSpread = vslider("Stereo[midi:ctrl 90]",0.6,0,1,0.01)*46*ma.SR/origSR;
        g = vslider("dryWetReverb[BELA: ANALOG_6]", 0.4, 0, 1, 0.001);
        // (g = Dry/Wet)
    };

// Dry-Wet (from C. LEBRETON)
dry_wet(dw,x,y) = wet*y + dry*x
    with {
        wet = 0.5*(dw+1.0);
        dry = 1.0-wet;
    };

// ALL
effect = _ *(volFX) : ef.cubicnl_nodc(drive, 0.1) : flanger : panno : reverb;

process = FMall(gFreq) * vol;

In order to test the virtual keyboard I made the following quick and simple GUI with XUiDesigner:
gui.png
gui.png (59.94 KiB) Viewed 1219 times
And I'm happy to report that the XUiDesigner made GUI with virtual keyboard appeared to work in Jalv, in Carla, in Reaper, and in Carla Rack in LMMS.

Re: XUiDesigner v0.5 released

Posted: Mon Oct 03, 2022 8:10 am
by tramp
LinMusGuy wrote: Thu Sep 29, 2022 7:47 pm And I'm happy to report that the XUiDesigner made GUI with virtual keyboard appeared to work in Jalv, in Carla, in Reaper, and in Carla Rack in LMMS.
Nice. I'm glade to hear that. :)

I've now added a context menu to the virtual keyboard were you could set the keyboard mapping (qwertz, qwerty, azerty) the octave mapping (C0 - C4) and the velocity (set the value with mouse wheel, default is 64). I've to put the context menu on the middle mouse button because the right button is already mapped for drowning (keep note on when button release).

Re: XUiDesigner v0.5 released

Posted: Mon Oct 03, 2022 8:38 am
by LinMusGuy
I'm using such a mouse: https://www.bol.com/nl/nl/p/gembird-opt ... 0109278238

Is the small button in the middle the middle mouse button? I don't see anything happening when I press it...

Re: XUiDesigner v0.5 released

Posted: Mon Oct 03, 2022 9:25 am
by tramp
No, it's the mouse wheel when pressed, not moved.

Re: XUiDesigner v0.5 released

Posted: Mon Oct 03, 2022 2:55 pm
by LinMusGuy
Ah - thanks! It looks like it's working except that the menu disappears as soon as I try to change the value for velocity:
screenshot.png
screenshot.png (28.06 KiB) Viewed 1101 times
Or is the menu only for building the GUI in XUiDesigner and not for using the plugin in a plugin host?


It would also be nice when the velocity per key depends on the place where you press the key with the louder sounds for a lower pressed key:
screenshot2.png
screenshot2.png (16.16 KiB) Viewed 1101 times