XUiDesigner v0.5 released
Moderators: raboof, MattKingUSA, khz
- LinMusGuy
- Established Member
- Posts: 551
- Joined: Wed Feb 27, 2019 9:33 pm
- Has thanked: 22 times
- Been thanked: 2 times
Re: XUiDesigner v0.5 released
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...?
But how to activate the virtual keyboard on the GUI. I don't see it...?
-
- Established Member
- Posts: 2348
- Joined: Mon Jul 01, 2013 8:13 am
- Has thanked: 9 times
- Been thanked: 468 times
Re: XUiDesigner v0.5 released
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.
On the road again.
-
- Established Member
- Posts: 2348
- Joined: Mon Jul 01, 2013 8:13 am
- Has thanked: 9 times
- Been thanked: 468 times
Re: XUiDesigner v0.5 released
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).
On the road again.
-
- Established Member
- Posts: 2348
- Joined: Mon Jul 01, 2013 8:13 am
- Has thanked: 9 times
- Been thanked: 468 times
Re: XUiDesigner v0.5 released
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.
I consider to implement my own version of it in order to avoid them.
But currently I've no time at all.
On the road again.
-
- Established Member
- Posts: 2348
- Joined: Mon Jul 01, 2013 8:13 am
- Has thanked: 9 times
- Been thanked: 468 times
Re: XUiDesigner v0.5 released
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.
On the road again.
- LinMusGuy
- Established Member
- Posts: 551
- Joined: Wed Feb 27, 2019 9:33 pm
- Has thanked: 22 times
- Been thanked: 2 times
Re: XUiDesigner v0.5 released
Thanks!! That works.
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...
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...
-
- Established Member
- Posts: 2348
- Joined: Mon Jul 01, 2013 8:13 am
- Has thanked: 9 times
- Been thanked: 468 times
Re: XUiDesigner v0.5 released
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.
On the road again.
- LinMusGuy
- Established Member
- Posts: 551
- Joined: Wed Feb 27, 2019 9:33 pm
- Has thanked: 22 times
- Been thanked: 2 times
Re: XUiDesigner v0.5 released
I used the following example dsp file for testing the virtual MIDI keyboard in the XUiDesigner made GUI:
In order to test the virtual keyboard I made the following quick and simple GUI with XUiDesigner:
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.
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;
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.
-
- Established Member
- Posts: 2348
- Joined: Mon Jul 01, 2013 8:13 am
- Has thanked: 9 times
- Been thanked: 468 times
Re: XUiDesigner v0.5 released
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).
On the road again.
- LinMusGuy
- Established Member
- Posts: 551
- Joined: Wed Feb 27, 2019 9:33 pm
- Has thanked: 22 times
- Been thanked: 2 times
Re: XUiDesigner v0.5 released
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...
Is the small button in the middle the middle mouse button? I don't see anything happening when I press it...
- LinMusGuy
- Established Member
- Posts: 551
- Joined: Wed Feb 27, 2019 9:33 pm
- Has thanked: 22 times
- Been thanked: 2 times
Re: XUiDesigner v0.5 released
Ah - thanks! It looks like it's working except that the menu disappears as soon as I try to change the value for velocity:
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:
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: