//############################### acGuitar.dsp #################################
// Faust instrument specifically designed for faust2smartkeyb where 6 virtual
// nylon strings can be strummed and plucked using a dedicated keyboard. The
// extra "strumming keyboard" could be easily replaced by an external strumming
// interface while the touch screen could keep being used to change the pitch
// of the strings.
//
// ## SmartKeyboard Use Strategy
//
// The first 6 keyboards implement each individual string of the instrument. A
// seventh keybaord is used a strumming/plucking interface. As mentionned
// previously, it could be easily replaced by an external interface.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets.
// However it was specifically designed to be used with faust2smartkeyb. For
// best results, we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp acGuitar.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Aug. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//##############################################################################
declare interface "SmartKeyboard{
'Number of Keyboards':'7',
'Max Keyboard Polyphony':'0',
'Rounding Mode':'2',
'Keyboard 0 - Number of Keys':'14',
'Keyboard 1 - Number of Keys':'14',
'Keyboard 2 - Number of Keys':'14',
'Keyboard 3 - Number of Keys':'14',
'Keyboard 4 - Number of Keys':'14',
'Keyboard 5 - Number of Keys':'14',
'Keyboard 6 - Number of Keys':'6',
'Keyboard 0 - Lowest Key':'52',
'Keyboard 1 - Lowest Key':'57',
'Keyboard 2 - Lowest Key':'62',
'Keyboard 3 - Lowest Key':'67',
'Keyboard 4 - Lowest Key':'71',
'Keyboard 5 - Lowest Key':'76',
'Keyboard 0 - Send Keyboard Freq':'1',
'Keyboard 1 - Send Keyboard Freq':'1',
'Keyboard 2 - Send Keyboard Freq':'1',
'Keyboard 3 - Send Keyboard Freq':'1',
'Keyboard 4 - Send Keyboard Freq':'1',
'Keyboard 5 - Send Keyboard Freq':'1',
'Keyboard 6 - Piano Keyboard':'0',
'Keyboard 6 - Send Key Status':'1',
'Keyboard 6 - Key 0 - Label':'S0',
'Keyboard 6 - Key 1 - Label':'S1',
'Keyboard 6 - Key 2 - Label':'S2',
'Keyboard 6 - Key 3 - Label':'S3',
'Keyboard 6 - Key 4 - Label':'S4',
'Keyboard 6 - Key 5 - Label':'S5'
}";
import("stdfaust.lib");
// SMARTKEYBOARD PARAMS
kbfreq(0) = hslider("kb0freq",164.8,20,10000,0.01);
kbbend(0) = hslider("kb0bend",1,ma.EPSILON,10,0.01);
kbfreq(1) = hslider("kb1freq",220,20,10000,0.01);
kbbend(1) = hslider("kb1bend",1,ma.EPSILON,10,0.01);
kbfreq(2) = hslider("kb2freq",293.7,20,10000,0.01);
kbbend(2) = hslider("kb2bend",1,ma.EPSILON,10,0.01);
kbfreq(3) = hslider("kb3freq",392,20,10000,0.01);
kbbend(3) = hslider("kb3bend",1,ma.EPSILON,10,0.01);
kbfreq(4) = hslider("kb4freq",493.9,20,10000,0.01);
kbbend(4) = hslider("kb4bend",1,ma.EPSILON,10,0.01);
kbfreq(5) = hslider("kb5freq",659.2,20,10000,0.01);
kbbend(5) = hslider("kb5bend",1,ma.EPSILON,10,0.01);
kb6kstatus(0) = hslider("kb6k0status",0,0,1,1) <: ==(1) | ==(4) : int;
kb6kstatus(1) = hslider("kb6k1status",0,0,1,1) <: ==(1) | ==(4) : int;
kb6kstatus(2) = hslider("kb6k2status",0,0,1,1) <: ==(1) | ==(4) : int;
kb6kstatus(3) = hslider("kb6k3status",0,0,1,1) <: ==(1) | ==(4) : int;
kb6kstatus(4) = hslider("kb6k4status",0,0,1,1) <: ==(1) | ==(4) : int;
kb6kstatus(5) = hslider("kb6k5status",0,0,1,1) <: ==(1) | ==(4) : int;
// MODEL PARAMETERS
// strings length
sl(i) = kbfreq(i)*kbbend(i) : pm.f2l : si.smoo;
// pluck position is controlled by the x axis of the accel
pluckPosition =
hslider("pluckPosition[acc: 1 0 -10 0 10]",0.5,0,1,0.01) : si.smoo;
// ASSEMBLING MODELS
// number of strings
nStrings = 6;
guitar = par(i,nStrings,
kb6kstatus(i) : ba.impulsify : // using "raw" impulses to drive the models
pm.nylonGuitarModel(sl(i),pluckPosition)) :> _;
process = guitar <: _,_;
bells
//################################ bells.dsp ###################################
// Faust instrument specifically designed for faust2smartkeyb where the
// physical models of 4 different bells can be played using screen pads. The
// models are taken from physmodels.lib.
//
// ## SmartKeyboard Use Strategy
//
// The SmartKeyboard interface is used to implement percussion pads where
// the X/Y position of fingers is retrieved to control the strike position on
// the bells.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets.
// However it was specifically designed to be used with faust2smartkeyb. For
// best results, we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp bells.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Aug. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//##############################################################################
declare interface "SmartKeyboard{
'Number of Keyboards':'2',
'Max Keyboard Polyphony':'0',
'Keyboard 0 - Number of Keys':'2',
'Keyboard 1 - Number of Keys':'2',
'Keyboard 0 - Send Freq':'0',
'Keyboard 1 - Send Freq':'0',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 1 - Piano Keyboard':'0',
'Keyboard 0 - Send Key Status':'1',
'Keyboard 1 - Send Key Status':'1',
'Keyboard 0 - Send X':'1',
'Keyboard 0 - Send Y':'1',
'Keyboard 1 - Send X':'1',
'Keyboard 1 - Send Y':'1',
'Keyboard 0 - Key 0 - Label':'English Bell',
'Keyboard 0 - Key 1 - Label':'French Bell',
'Keyboard 1 - Key 0 - Label':'German Bell',
'Keyboard 1 - Key 1 - Label':'Russian Bell'
}";
import("stdfaust.lib");
// SMARTKEYBOARD PARAMS
kb0k0status = hslider("kb0k0status",0,0,1,1) : min(1) : int;
kb0k1status = hslider("kb0k1status",0,0,1,1) : min(1) : int;
kb1k0status = hslider("kb1k0status",0,0,1,1) : min(1) : int;
kb1k1status = hslider("kb1k1status",0,0,1,1) : min(1) : int;
x = hslider("x",1,0,1,0.001);
y = hslider("y",1,0,1,0.001);
// MODEL PARAMETERS
strikeCutoff = 6500;
strikeSharpness = 0.5;
strikeGain = 1;
// synthesize 10 modes out of 50
nModes = 10;
// resonance duration is 30s
t60 = 30;
// number of excitation pos (retrieved from model)
nExPos = 7;
// computing excitation position from X and Y
exPos = min((x*2-1 : abs),(y*2-1 : abs))*(nExPos-1) : int;
// ASSEMBLING MODELS
bells =
(kb0k0status : pm.strikeModel(10,strikeCutoff,strikeSharpness,strikeGain) : pm.englishBellModel(nModes,exPos,t60,1,3)) +
(kb0k1status : pm.strikeModel(10,strikeCutoff,strikeSharpness,strikeGain) : pm.frenchBellModel(nModes,exPos,t60,1,3)) +
(kb1k0status : pm.strikeModel(10,strikeCutoff,strikeSharpness,strikeGain) : pm.germanBellModel(nModes,exPos,t60,1,2.5)) +
(kb1k1status : pm.strikeModel(10,strikeCutoff,strikeSharpness,strikeGain) : pm.russianBellModel(nModes,exPos,t60,1,3)) :> *(0.2);
process = bells <: _,_;
bowed
//##################################### bowed.dsp ########################################
// Faust instrument specifically designed for faust2smartkeyb implementing a
// non-polyphonic synthesizer (e.g., physical model; etc.) using a combination of
// different types of UI elements.
//
// ## SmartKeyboard Use Strategy
//
// 5 keyboards are declared (4 actual keyboards and 1 control surface). We want to
// disable the voice allocation system and we want to activate a voice on start-up
// so that all strings are constantly running so we set Max Keyboard Polyphony to
// 0. Since we don't want the first 4 keyboards to send the X and Y position of
// fingers on the screen, we set Send X and Send Y to 0 for all these keyboards.
// Similarly, we don't want the fifth keyboard to send pitch information to the synth
// so we set Send Freq to 0 for that keyboard. Finally, we deactivate piano keyboard
// mode for the fifth keyboard to make sure that color doesn't change when the key is
// touch and that note names are not displayed.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp midiOnly.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
declare interface "SmartKeyboard{
'Number of Keyboards':'5',
'Max Keyboard Polyphony':'0',
'Rounding Mode':'1',
'Keyboard 0 - Number of Keys':'19',
'Keyboard 1 - Number of Keys':'19',
'Keyboard 2 - Number of Keys':'19',
'Keyboard 3 - Number of Keys':'19',
'Keyboard 4 - Number of Keys':'1',
'Keyboard 4 - Send Freq':'0',
'Keyboard 0 - Send X':'0',
'Keyboard 1 - Send X':'0',
'Keyboard 2 - Send X':'0',
'Keyboard 3 - Send X':'0',
'Keyboard 0 - Send Y':'0',
'Keyboard 1 - Send Y':'0',
'Keyboard 2 - Send Y':'0',
'Keyboard 3 - Send Y':'0',
'Keyboard 0 - Lowest Key':'55',
'Keyboard 1 - Lowest Key':'62',
'Keyboard 2 - Lowest Key':'69',
'Keyboard 3 - Lowest Key':'76',
'Keyboard 4 - Piano Keyboard':'0',
'Keyboard 4 - Key 0 - Label':'Bow'
}";
import("stdfaust.lib");
// parameters
f = hslider("freq",400,50,2000,0.01);
bend = hslider("bend",1,0,10,0.01);
keyboard = hslider("keyboard",0,0,5,1) : int;
key = hslider("key",0,0,18,1) : int;
x = hslider("x",0.5,0,1,0.01) : si.smoo;
y = hslider("y",0,0,1,0.01) : si.smoo;
// mapping
freq = f*bend;
// dirty motion tracker
velocity = x-x' : abs : an.amp_follower_ar(0.1,1) : *(8000) : min(1);
// 4 "strings"
synthSet = par(i,4,synth(localFreq(i),velocity)) :> _
with{
localFreq(i) = freq : ba.sAndH(keyboard == i) : si.smoo;
synth(freq,velocity) = sy.fm((freq,freq + freq*modFreqRatio),index*velocity)*velocity
with{
index = 1000;
modFreqRatio = y*0.3;
};
};
process = synthSet <: _,_;
brass
//############################### brass.dsp ###################################
// Faust instrument specifically designed for faust2smartkeyb where a
// trumpet physical model is controlled using some of the built-in sensors of
// the device and the touchscreen. Some of these elements could be replaced by
// external controllers (e.g., breath/mouth piece controller).
//
// ## SmartKeyboard Use Strategy
//
// 1 keyboard is used to implement the pistons of the trumpet (3 keys) and the
// other allows to control the lips tension.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets.
// However it was specifically designed to be used with faust2smartkeyb. For
// best results, we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp brass.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Aug. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//##############################################################################
declare interface "SmartKeyboard{
'Number of Keyboards':'2',
'Max Keyboard Polyphony':'0',
'Keyboard 0 - Number of Keys':'1',
'Keyboard 1 - Number of Keys':'3',
'Keyboard 0 - Send Freq':'0',
'Keyboard 1 - Send Freq':'0',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 1 - Piano Keyboard':'0',
'Keyboard 0 - Send Key X':'1',
'Keyboard 1 - Send Key Status':'1',
'Keyboard 0 - Static Mode':'1',
'Keyboard 0 - Key 0 - Label':'Lips Tension',
'Keyboard 1 - Key 0 - Label':'P1',
'Keyboard 1 - Key 1 - Label':'P2',
'Keyboard 1 - Key 2 - Label':'P3'
}";
import("stdfaust.lib");
// SMARTKEYBOARD PARAMS
kb0k0x = hslider("kb0k0x",0,0,1,1);
kb1k0status = hslider("kb1k0status",0,0,1,1) : min(1) : int;
kb1k1status = hslider("kb1k1status",0,0,1,1) : min(1) : int;
kb1k2status = hslider("kb1k2status",0,0,1,1) : min(1) : int;
// MODEL PARAMETERS
// pressure is controlled by accelerometer
pressure = hslider("pressure[acc: 1 1 -10 0 10]",0,0,1,0.01) : si.smoo;
breathGain = 0.005; breathCutoff = 2000;
vibratoFreq = 5; vibratoGain = 0;
//pitch when no pistons are pushed
basePitch = 48; // C4
// calculate pitch shift in function of piston combination
pitchShift =
((kb1k0status == 0) & (kb1k1status == 1) & (kb1k2status == 0))*(1) +
((kb1k0status == 1) & (kb1k1status == 0) & (kb1k2status == 0))*(2) +
((kb1k0status == 1) & (kb1k1status == 1) & (kb1k2status == 0))*(3) +
((kb1k0status == 0) & (kb1k1status == 1) & (kb1k2status == 1))*(4) +
((kb1k0status == 1) & (kb1k1status == 0) & (kb1k2status == 1))*(5) +
((kb1k0status == 1) & (kb1k1status == 1) & (kb1k2status == 1))*(6);
// tube length is calculated based on piston combination
tubeLength = basePitch-pitchShift : ba.midikey2hz : pm.f2l : si.smoo;
// lips tension is controlled using pad on screen
lipsTension = kb0k0x : si.smoo;
// default mute value
mute = 0.5;
// ASSEMBLING MODEL
model =
pm.blower(pressure,breathGain,breathCutoff,vibratoFreq,vibratoGain) :
pm.brassModel(tubeLength,lipsTension,mute);
process = model <: _,_;
clarinet
//############################### clarinet.dsp #################################
// Faust instrument specifically designed for faust2smartkeyb where a
// clarinet physical model is controlled by an interface implementing
// fingerings similar to that of a the real instrument. The pressure of the
// breath in the mouthpiece of the clarinet is controlled by blowing on the
// built-in microphone of the device.
//
// ## SmartKeyboard Use Strategy
//
// The device is meant to be held with 2 hands vertically in order to put all
// fingers on the screen at the same time. Key combinations determine the
// pitch of the instrument. A single voice is constantly ran.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets.
// However it was specifically designed to be used with faust2smartkeyb. For
// best results, we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] clarinet.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Aug. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//##############################################################################
declare interface "SmartKeyboard{
'Number of Keyboards':'2',
'Max Keyboard Polyphony':'0',
'Keyboard 0 - Number of Keys':'4',
'Keyboard 1 - Number of Keys':'5',
'Keyboard 0 - Send Freq':'0',
'Keyboard 1 - Send Freq':'0',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 1 - Piano Keyboard':'0',
'Keyboard 0 - Send Key Status':'1',
'Keyboard 1 - Send Key Status':'1',
'Keyboard 0 - Key 3 - Label':'O+',
'Keyboard 1 - Key 4 - Label':'O-'
}";
import("stdfaust.lib");
// SMARTKEYBOARD PARAMS
kb0k0status = hslider("kb0k0status",0,0,1,1) : min(1) : int;
kb0k1status = hslider("kb0k1status",0,0,1,1) : min(1) : int;
kb0k2status = hslider("kb0k2status",0,0,1,1) : min(1) : int;
kb0k3status = hslider("kb0k3status",0,0,1,1) : min(1) : int;
kb1k0status = hslider("kb1k0status",0,0,1,1) : min(1) : int;
kb1k1status = hslider("kb1k1status",0,0,1,1) : min(1) : int;
kb1k2status = hslider("kb1k2status",0,0,1,1) : min(1) : int;
kb1k3status = hslider("kb1k3status",0,0,1,1) : min(1) : int;
kb1k4status = hslider("kb1k4status",0,0,1,1) : min(1) : int;
// MODEL PARAMETERS
reedStiffness = hslider("reedStiffness[acc: 1 1 -10 0 10]",0,0,1,0.01) : si.smoo;
basePitch = 73; // C#4
pitchShift = // calculate pitch shfit in function of "keys" combination
((kb0k0status == 0) & (kb0k1status == 1) & (kb0k2status == 0) &
(kb1k0status == 0) & (kb1k1status == 0) & (kb1k2status == 0) &
(kb1k3status == 0))*(-1) + // C
((kb0k0status == 1) & (kb0k1status == 0) & (kb0k2status == 0) &
(kb1k0status == 0) & (kb1k1status == 0) & (kb1k2status == 0) &
(kb1k3status == 0))*(-2) + // B
((kb0k0status == 1) & (kb0k1status == 0) & (kb0k2status == 1) &
(kb1k0status == 0) & (kb1k1status == 0) & (kb1k2status == 0) &
(kb1k3status == 0))*(-3) + // Bb
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 0) &
(kb1k0status == 0) & (kb1k1status == 0) & (kb1k2status == 0) &
(kb1k3status == 0))*(-4) + // A
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 0) &
(kb1k0status == 1) & (kb1k1status == 0) & (kb1k2status == 0) &
(kb1k3status == 0))*(-5) + // G#
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 1) &
(kb1k0status == 0) & (kb1k1status == 0) & (kb1k2status == 0) &
(kb1k3status == 0))*(-6) + // G
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 1) &
(kb1k0status == 0) & (kb1k1status == 1) & (kb1k2status == 0) &
(kb1k3status == 0))*(-7) + // F#
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 1) &
(kb1k0status == 1) & (kb1k1status == 0) & (kb1k2status == 0) &
(kb1k3status == 0))*(-8) + // F
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 1) &
(kb1k0status == 1) & (kb1k1status == 1) & (kb1k2status == 0) &
(kb1k3status == 0))*(-9) + // E
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 1) &
(kb1k0status == 1) & (kb1k1status == 1) & (kb1k2status == 0) &
(kb1k3status == 1))*(-10) + // Eb
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 1) &
(kb1k0status == 1) & (kb1k1status == 1) & (kb1k2status == 1) &
(kb1k3status == 0))*(-11) + // D
((kb0k0status == 0) & (kb0k1status == 0) & (kb0k2status == 0) &
(kb1k0status == 0) & (kb1k1status == 0) & (kb1k2status == 0) &
(kb1k3status == 1))*(-12) + // C#
((kb0k0status == 1) & (kb0k1status == 1) & (kb0k2status == 1) &
(kb1k0status == 1) & (kb1k1status == 1) & (kb1k2status == 1) &
(kb1k3status == 1))*(-13); // C
octaveShiftUp = +(kb0k3status : ba.impulsify)~_; // counting up
octaveShiftDown = +(kb1k4status : ba.impulsify)~_; // counting down
octaveShift = (octaveShiftUp-octaveShiftDown)*(12);
// tube length is just smoothed: could be improved
tubeLength = basePitch+pitchShift+octaveShift : ba.midikey2hz : pm.f2l : si.smoo;
bellOpening = 0.5;
// ASSEMBLING MODEL
model(pressure) = pm.clarinetModel(tubeLength,pressure,reedStiffness,bellOpening);
// pressure is estimated from mic signal
process = an.amp_follower_ud(0.02,0.02)*0.7 : model <: _,_;
crazyGuiro
//################################### crazyGuiro.dsp #####################################
// A simple smart phone "Guiro" where the touch screen is used to drive the instrument and
// select its pitch and where the x and y axis of the accelerometer control the
// resonance properties of the instrument.
//
// ## SmartKeyboard Use Strategy
//
// Since the sounds generated by this synth are very short, the strategy here is to take
// advantage of the polyphony capabilities of the iOSKeyboard architecture by creating
// a new voice every time a new key is pressed. Since the SmartKeyboard interface has a
// large number of keys here (128), lots of sounds are generated when sliding a
// finger across the keyboard. Also, it's interesting to notice that the freq parameter
// is not used here. Instead keyboard and key are used which allows us to easily
// make custom mappings.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] crazyGuiro.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
import("stdfaust.lib");
//========================= Smart Keyboard Configuration =================================
// 8 keyboards, each has 16 keys, none of them display key names.
//========================================================================================
declare interface "SmartKeyboard{
'Number of Keyboards':'8',
'Keyboard 0 - Number of Keys':'16',
'Keyboard 1 - Number of Keys':'16',
'Keyboard 2 - Number of Keys':'16',
'Keyboard 3 - Number of Keys':'16',
'Keyboard 4 - Number of Keys':'16',
'Keyboard 5 - Number of Keys':'16',
'Keyboard 6 - Number of Keys':'16',
'Keyboard 7 - Number of Keys':'16',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 1 - Piano Keyboard':'0',
'Keyboard 2 - Piano Keyboard':'0',
'Keyboard 3 - Piano Keyboard':'0',
'Keyboard 4 - Piano Keyboard':'0',
'Keyboard 5 - Piano Keyboard':'0',
'Keyboard 6 - Piano Keyboard':'0',
'Keyboard 7 - Piano Keyboard':'0'
}";
//================================ Instrument Parameters =================================
// Creates the connection between the synth and the mobile device
//========================================================================================
// the current keyboard
keyboard = hslider("keyboard",0,0,2,1);
// the current key of the current keyboard
key = hslider("key",0,0,2,1);
// the wet factor of the reverb
wet = hslider("wet[acc: 0 0 -10 0 10]",0,0,1,0.01);
// the resonance factor of the reverb
res = hslider("res[acc: 1 0 -10 0 10]",0.5,0,1,0.01);
// smart keyboard gate parameter
gate = button("gate");
//=================================== Parameters Mapping =================================
//========================================================================================
// the resonance frequency of each click of the Guiro changes in function of
// the selected keyboard and key on it
minKey = 50; // min key of lowest keyboard
keySkipKeyboard = 8; // key skip per keyboard
drumResFreq = (key+minKey)+(keyboard*keySkipKeyboard) : ba.midikey2hz;
reverbWet = wet : si.smoo;
reverbRes = wet : si.smoo;
// filter q
q = 8;
//============================================ DSP =======================================
//========================================================================================
reverb(wet,res) = _ <: *(1-wet),(*(wet) : re.mono_freeverb(res, 0.5, 0.5, 0)) :> _;
process = sy.popFilterDrum(drumResFreq,q,gate) : reverb(wet,res) <: _,_;
drums
//##################################### drums.dsp ########################################
// Faust instrument specifically designed for faust2smartkeyb where 3 drums can
// be controlled using pads. The X/Y postion of fingers is detected on each key
// and use to control the strike postion on the virtual membrane.
//
// ## SmartKeyboard Use Strategy
//
// The drum physical model used here is implemented to be generic so that its
// fundamental frequency can be changed for each voice. SmartKeyboard is used
// in polyphonic mode so each new strike on the interface corresponds to a new
// new voice.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp drums.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
// Interface with 2 keyboards of 2 and 1 keys (3 pads)
// Static mode is used so that keys don't change color when touched
// Note labels are hidden
// Piano Keyboard mode is deactivated so all the keys look the same
declare interface "SmartKeyboard{
'Number of Keyboards':'2',
'Keyboard 0 - Number of Keys':'2',
'Keyboard 1 - Number of Keys':'1',
'Keyboard 0 - Static Mode':'1',
'Keyboard 1 - Static Mode':'1',
'Keyboard 0 - Send X':'1',
'Keyboard 0 - Send Y':'1',
'Keyboard 1 - Send X':'1',
'Keyboard 1 - Send Y':'1',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 1 - Piano Keyboard':'0',
'Keyboard 0 - Key 0 - Label':'High',
'Keyboard 0 - Key 1 - Label':'Mid',
'Keyboard 1 - Key 0 - Label':'Low'
}";
import("stdfaust.lib");
// standard parameters
gate = button("gate");
x = hslider("x",1,0,1,0.001);
y = hslider("y",1,0,1,0.001);
keyboard = hslider("keyboard",0,0,1,1) : int;
key = hslider("key",0,0,1,1) : int;
drumModel = pm.djembe(rootFreq,exPos,strikeSharpness,gain,gate)
with{
// frequency of the lowest drum
bFreq = 60;
// retrieving pad ID (0-2)
padID = 2-(keyboard*2+key);
// drum root freq is computed in function of pad number
rootFreq = bFreq*(padID+1);
// excitation position
exPos = min((x*2-1 : abs),(y*2-1 : abs));
strikeSharpness = 0.5;
gain = 2;
};
process = drumModel <: _,_;
dubDub
//################################### dubDub.dsp #####################################
// A simple smartphone abstract instrument than can be controlled using the touch
// screen and the accelerometers of the device.
//
// ## SmartKeyboard Use Strategy
//
// The idea here is to use the SmartKeyboard interface as an X/Y control pad by just
// creating one keyboard with on key and by retrieving the X and Y position on that single
// key using the x and y standard parameters. Keyboard mode is deactivated so that
// the color of the pad doesn't change when it is pressed.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] dubDub.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
declare name "dubDub";
import("stdfaust.lib");
//========================= Smart Keyboard Configuration =================================
// (1 keyboards with 1 key configured as a pad.
//========================================================================================
declare interface "SmartKeyboard{
'Number of Keyboards':'1',
'Keyboard 0 - Number of Keys':'1',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 0 - Static Mode':'1',
'Keyboard 0 - Send X':'1',
'Keyboard 0 - Send Y':'1'
}";
//================================ Instrument Parameters =================================
// Creates the connection between the synth and the mobile device
//========================================================================================
// SmartKeyboard X parameter
x = hslider("x",0,0,1,0.01);
// SmartKeyboard Y parameter
y = hslider("y",0,0,1,0.01);
// SmartKeyboard gate parameter
gate = button("gate");
// modulation frequency is controlled with the x axis of the accelerometer
modFreq = hslider("modFeq[acc: 0 0 -10 0 10]",9,0.5,18,0.01);
// general gain is controlled with the y axis of the accelerometer
gain = hslider("gain[acc: 1 0 -10 0 10]",0.5,0,1,0.01);
//=================================== Parameters Mapping =================================
//========================================================================================
// sawtooth frequency
minFreq = 80;
maxFreq = 500;
freq = x*(maxFreq-minFreq) + minFreq : si.polySmooth(gate,0.999,1);
// filter q
q = 8;
// filter cutoff frequency is modulate with a triangle wave
minFilterCutoff = 50;
maxFilterCutoff = 5000;
filterModFreq = modFreq : si.smoo;
filterCutoff = (1-os.lf_trianglepos(modFreq)*(1-y))*(maxFilterCutoff-minFilterCutoff)+minFilterCutoff;
// general gain of the synth
generalGain = gain : ba.lin2LogGain : si.smoo;
//============================================ DSP =======================================
//========================================================================================
process = sy.dubDub(freq,filterCutoff,q,gate)*generalGain <: _,_;
elecGuitar
//################################### elecGuitar.dsp #####################################
// Faust instruments specifically designed for faust2smartkeyb where an electric
// guitar physical model is controlled using an isomorphic keyboard. Rock on!
//
// ## SmartKeyboard Use Strategy
//
// we want to create an isomorphic keyboard where each keyboard is monophonic and
// implements a "string". Keyboards should be one fourth apart from each other
// (more or less like on a guitar). We want to be able to slide between keyboards
// (strum) to trigger a new note (voice) and we want new fingers on a keyboard to
// "steal" the pitch from the previous finger (sort of hammer on).
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect elecGuitarEffecr.dsp elecGuitar.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017:
// https://ccrma.stanford.edu/~rmichon
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
// Interface with 6 monophonic keyboards one fourth apart from each other
declare interface "SmartKeyboard{
'Number of Keyboards':'6',
'Max Keyboard Polyphony':'1',
'Keyboard 0 - Number of Keys':'13',
'Keyboard 1 - Number of Keys':'13',
'Keyboard 2 - Number of Keys':'13',
'Keyboard 3 - Number of Keys':'13',
'Keyboard 4 - Number of Keys':'13',
'Keyboard 5 - Number of Keys':'13',
'Keyboard 0 - Lowest Key':'72',
'Keyboard 1 - Lowest Key':'67',
'Keyboard 2 - Lowest Key':'62',
'Keyboard 3 - Lowest Key':'57',
'Keyboard 4 - Lowest Key':'52',
'Keyboard 5 - Lowest Key':'47',
'Rounding Mode':'2'
}";
import("stdfaust.lib");
// standard parameters
f = hslider("freq",300,50,2000,0.01);
bend = hslider("bend[midi:pitchwheel]",1,0,10,0.01) : si.polySmooth(gate,0.999,1);
gain = hslider("gain",1,0,1,0.01);
s = hslider("sustain[midi:ctrl 64]",0,0,1,1); // for sustain pedal
t = button("gate");
// mapping params
gate = t+s : min(1);
freq = f*bend : max(50); // min freq is 50 Hz
stringLength = freq : pm.f2l;
pluckPosition = 0.8;
mute = gate : si.polySmooth(gate,0.999,1);
process = pm.elecGuitar(stringLength,pluckPosition,mute,gain,gate) <: _,_;
fm
//###################################### fm.dsp ##########################################
// A simple smart phone percussion abstract sound toy based on an FM synth.
//
// ## SmartKeyboard Use Strategy
//
// The idea here is to use the SmartKeyboard interface as an X/Y control pad by just
// creating one keyboard with on key and by retrieving the X and Y position on that single
// key using the x and y standard parameters. Keyboard mode is deactivated so that
// the color of the pad doesn't change when it is pressed.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] crazyGuiro.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
declare name "fm";
import("stdfaust.lib");
//========================= Smart Keyboard Configuration =================================
// (1 keyboards with 1 key configured as a pad.
//========================================================================================
declare interface "SmartKeyboard{
'Number of Keyboards':'1',
'Keyboard 0 - Number of Keys':'1',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 0 - Static Mode':'1',
'Keyboard 0 - Send X':'1',
'Keyboard 0 - Send Y':'1'
}";
//================================ Instrument Parameters =================================
// Creates the connection between the synth and the mobile device
//========================================================================================
// SmartKeyboard X parameter
x = hslider("x",0,0,1,0.01);
// SmartKeyboard Y parameter
y = hslider("y",0,0,1,0.01);
// SmartKeyboard gate parameter
gate = button("gate") ;
// mode resonance duration is controlled with the x axis of the accelerometer
modFreqRatio = hslider("res[acc: 0 0 -10 0 10]",1,0,2,0.01) : si.smoo;
//=================================== Parameters Mapping =================================
//========================================================================================
// carrier frequency
minFreq = 80;
maxFreq = 500;
cFreq = x*(maxFreq-minFreq) + minFreq : si.polySmooth(gate,0.999,1);
// modulator frequency
modFreq = cFreq*modFreqRatio;
// modulation index
modIndex = y*1000 : si.smoo;
//============================================ DSP =======================================
//========================================================================================
// since the generated sound is pretty chaotic, there is no need for an envelope generator
fmSynth = sy.fm((cFreq,modFreq),(modIndex))*(gate : si.smoo)*0.5;
process = fmSynth;
frog
//################################### frog.dsp #####################################
// A simple smart phone abstract instrument than can be controlled using the touch
// screen and the accelerometers of the device.
//
// ## SmartKeyboard Use Strategy
//
// The idea here is to use the SmartKeyboard interface as an X/Y control pad by just
// creating one keyboard with on key and by retrieving the X and Y position on that single
// key using the x and y standard parameters. Keyboard mode is deactivated so that
// the color of the pad doesn't change when it is pressed.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] frog.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
declare name "frog";
import("stdfaust.lib");
//========================= Smart Keyboard Configuration =================================
// (1 keyboards with 1 key configured as a pad.
//========================================================================================
declare interface "SmartKeyboard{
'Number of Keyboards':'1',
'Keyboard 0 - Number of Keys':'1',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 0 - Static Mode':'1',
'Keyboard 0 - Send X':'1',
'Keyboard 0 - Send Y':'1'
}";
//================================ Instrument Parameters =================================
// Creates the connection between the synth and the mobile device
//========================================================================================
// SmartKeyboard X parameter
x = hslider("x",0,0,1,0.01);
// SmartKeyboard Y parameter
y = hslider("y",0,0,1,0.01);
// SmartKeyboard gate parameter
gate = button("gate");
// the cutoff frequency of the filter is controlled with the x axis of the accelerometer
cutoff = hslider("cutoff[acc: 0 0 -10 0 10]",2500,50,5000,0.01);
//=================================== Parameters Mapping =================================
//========================================================================================
maxFreq = 100;
minFreq = 1;
freq = x*(maxFreq-minFreq) + minFreq : si.polySmooth(gate,0.999,1);
maxQ = 40;
minQ = 1;
q = (1-y)*(maxQ-minQ) + minQ : si.smoo;
filterCutoff = cutoff : si.smoo;
//============================================ DSP =======================================
//========================================================================================
process = sy.dubDub(freq,filterCutoff,q,gate) <: _,_;
harp
//######################################## harp.dsp ######################################
// A simple smart phone based harp (if we dare to call it like that).
//
// ## SmartKeyboard Use Strategy
//
// Since the sounds generated by this synth are very short, the strategy here is to take
// advantage of the polyphony capabilities of the iOSKeyboard architecture by creating
// a new voice every time a new key is pressed. Since the SmartKeyboard interface has a
// large number of keys here (128), lots of sounds are generated when sliding a
// finger across the keyboard.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] harp.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
declare name "harp";
import("stdfaust.lib");
//========================= Smart Keyboard Configuration =================================
// (8 keyboards with 16 keys configured as a pitch matrix.
//========================================================================================
declare interface "SmartKeyboard{
'Number of Keyboards':'8',
'Keyboard 0 - Number of Keys':'16',
'Keyboard 1 - Number of Keys':'16',
'Keyboard 2 - Number of Keys':'16',
'Keyboard 3 - Number of Keys':'16',
'Keyboard 4 - Number of Keys':'16',
'Keyboard 5 - Number of Keys':'16',
'Keyboard 6 - Number of Keys':'16',
'Keyboard 7 - Number of Keys':'16',
'Keyboard 0 - Lowest Key':'40',
'Keyboard 1 - Lowest Key':'45',
'Keyboard 2 - Lowest Key':'50',
'Keyboard 3 - Lowest Key':'55',
'Keyboard 4 - Lowest Key':'60',
'Keyboard 5 - Lowest Key':'65',
'Keyboard 6 - Lowest Key':'70',
'Keyboard 7 - Lowest Key':'75',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 1 - Piano Keyboard':'0',
'Keyboard 2 - Piano Keyboard':'0',
'Keyboard 3 - Piano Keyboard':'0',
'Keyboard 4 - Piano Keyboard':'0',
'Keyboard 5 - Piano Keyboard':'0',
'Keyboard 6 - Piano Keyboard':'0',
'Keyboard 7 - Piano Keyboard':'0'
}";
//================================ Instrument Parameters =================================
// Creates the connection between the synth and the mobile device
//========================================================================================
// the string resonance in second is controlled by the x axis of the accelerometer
res = hslider("res[acc: 0 0 -10 0 10]",2,0.1,4,0.01);
// Smart Keyboard frequency parameter
freq = hslider("freq",400,50,2000,0.01);
// Smart Keyboard gate parameter
gate = button("gate");
//=================================== Parameters Mapping =================================
//========================================================================================
stringFreq = freq;
//============================================ DSP =======================================
//========================================================================================
process = sy.combString(freq,res,gate);
midiOnly
//################################### midiOnly.dsp ######################################
// Faust instrument specifically designed for faust2smartkeyb implementing a MIDI
// controllable app where the mobile device's touch screen is used to control
// specific parameters of the synth continuously using two separate X/Y control surfaces.
//
// ## SmartKeyboard Use Strategy
//
// The SmartKeyboard configuration for this instrument consists in a single keyboard
// with two keys. Each key implements a control surface. Piano Keyboard mode is
// disabled so that key names are not displayed and that keys don't change color when
// touched. Finally, Send Freq is set to 0 so that new voices are not allocated by
// the touch screen and that the freq and bend parameters are not computed.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp midiOnly.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
// Interface with 4 polyphnic keyboards of 13 keys with the same config
declare interface "SmartKeyboard{
'Number of Keyboards':'1',
'Keyboard 0 - Number of Keys':'2',
'Keyboard 0 - Send Freq':'0',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 0 - Static Mode':'1',
'Keyboard 0 - Send Key X':'1',
'Keyboard 0 - Key 0 - Label':'Mod Index',
'Keyboard 0 - Key 1 - Label':'Mod Freq'
}";
import("stdfaust.lib");
f = hslider("freq",300,50,2000,0.01);
bend = ba.semi2ratio(hslider("bend[midi:pitchwheel]",0,-2,2,0.001)) : si.polySmooth(gate,0.999,1);
gain = hslider("gain",1,0,1,0.01);
key = hslider("key",0,0,1,1) : int;
kb0k0x = hslider("kb0k0x[midi:ctrl 1]",0.5,0,1,0.01) : si.smoo;
kb0k1x = hslider("kb0k1x[midi:ctrl 1]",0.5,0,1,0.01) : si.smoo;
s = hslider("sustain[midi:ctrl 64]",0,0,1,1);
t = button("gate");
// fomating parameters
gate = t+s : min(1);
freq = f*bend;
index = kb0k0x*1000;
modFreqRatio = kb0k1x;
envelope = gain*gate : si.smoo;
process = sy.fm((freq,freq + freq*modFreqRatio),index*envelope)*envelope <: _,_;
multiSynth
//################################### multiSynth.dsp ######################################
// Faust instrument specifically designed for faust2smartkeyb where 4 keyboards
// are used to control 4 independent synths.
//
// ## SmartKeyboard Use Strategy
//
// The SmartKeyboard configuration is relatively simple for this example and
// only consists in four polyphonic keyboards in parallel. The keyboard standard
// parameter is used to activate specific elements of the synthesizer.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp multiSynth.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
// Interface with 4 polyphnic keyboards of 13 keys with the same config
declare interface "SmartKeyboard{
'Number of Keyboards':'4',
'Rounding Mode':'2',
'Inter-Keyboard Slide':'0',
'Keyboard 0 - Number of Keys':'13',
'Keyboard 1 - Number of Keys':'13',
'Keyboard 2 - Number of Keys':'13',
'Keyboard 3 - Number of Keys':'13',
'Keyboard 0 - Lowest Key':'60',
'Keyboard 1 - Lowest Key':'60',
'Keyboard 2 - Lowest Key':'60',
'Keyboard 3 - Lowest Key':'60',
'Keyboard 0 - Send Y':'1',
'Keyboard 1 - Send Y':'1',
'Keyboard 2 - Send Y':'1',
'Keyboard 3 - Send Y':'1'
}";
import("stdfaust.lib");
// standard parameters
f = hslider("freq",300,50,2000,0.01);
bend = ba.semi2ratio(hslider("bend[midi:pitchwheel]",0,-2,2,0.001)) : si.polySmooth(gate,0.999,1);
gain = hslider("gain",1,0,1,0.01);
s = hslider("sustain[midi:ctrl 64]",0,0,1,1); // for sustain pedal
t = button("gate");
y = hslider("y[midi:ctrl 1]",1,0,1,0.001) : si.smoo;
keyboard = hslider("keyboard",0,0,3,1) : int;
// fomating parameters
gate = t+s : min(1);
freq = f*bend;
cutoff = y*4000+50;
// oscillators
oscilators(0) = os.sawtooth(freq);
oscilators(1) = os.triangle(freq);
oscilators(2) = os.square(freq);
oscilators(3) = os.osc(freq);
// oscs are selected in function of the current keyboard
synths = par(i,4,select2(keyboard == i,0,oscilators(i))) :> fi.lowpass(3,cutoff) : *(envelope)
with{
envelope = gate*gain : si.smoo;
};
process = synths <: _,_;
toy
//##################################### toy.dsp #######################################
// Faust sound toy specifically designed for faust2smartkeyb where a funny
// synth can be controlled using several fingers on the screen and the built-in
// accelerometer.
//
// ## SmartKeyboard Use Strategy
//
// We just want a blank screen where the position of the different fingers on
// the screen can be tracked and retrieved in the Faust object. For that, we
// create one keyboard with one key, that should fill the screen. We ask the
// interface to not compute the freq and bend parameters to save
// computation by setting 'Keyboard 0 - Send Freq':'0'. We don't want the
// color of the key to change when it is touched so we deactivate the
// Piano Keyboard mode. Fingers should be numbered to be able to use the
// numbered x and y parameters (x0, y0, x1, etc.), so Count Fingers
// is enabled. Finally, by setting Max Keyboard Polyphony to 0, we deactivate
// the voice allocation system and we automatically start a voice when the app
// is launched. This means that fingers are no longer associated to specific voices.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] toy.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017:
// https://ccrma.stanford.edu/~rmichon
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
// X/Y interface: one keyboard with one key
// freq and bend are not computed
// fingers are counted
// voice is launched on startup
declare interface "SmartKeyboard{
'Number of Keyboards':'1',
'Max Keyboard Polyphony':'0',
'Keyboard 0 - Number of Keys':'1',
'Keyboard 0 - Send Freq':'0',
'Keyboard 0 - Static Mode':'1',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 0 - Send Numbered X':'1',
'Keyboard 0 - Send Numbered Y':'1'
}";
import("stdfaust.lib");
// parameters
x0 = hslider("x0",0.5,0,1,0.01) : si.smoo;
y0 = hslider("y0",0.5,0,1,0.01) : si.smoo;
y1 = hslider("y1",0,0,1,0.01) : si.smoo;
q = hslider("q[acc: 0 0 -10 0 10]",30,10,50,0.01) : si.smoo;
del = hslider("del[acc: 0 0 -10 0 10]",0.5,0.01,1,0.01) : si.smoo;
fb = hslider("fb[acc: 1 0 -10 0 10]",0.5,0,1,0.01) : si.smoo;
// mapping
impFreq = 2 + x0*20;
resFreq = y0*3000+300;
// simple echo effect
echo = +~(de.delay(65536,del*ma.SR)*fb);
// putting it together
process = os.lf_imptrain(impFreq) : fi.resonlp(resFreq,q,1) : echo : ef.cubicnl(y1,0)*0.95 <: _,_;
trumpet
//################################### trumpet.dsp #####################################
// A simple trumpet app... (for large screens).
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp trumpet.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
import("stdfaust.lib");
declare interface "SmartKeyboard{
'Number of Keyboards':'5',
'Max Keyboard Polyphony':'1',
'Mono Mode':'1',
'Keyboard 0 - Number of Keys':'13',
'Keyboard 1 - Number of Keys':'13',
'Keyboard 2 - Number of Keys':'13',
'Keyboard 3 - Number of Keys':'13',
'Keyboard 4 - Number of Keys':'13',
'Keyboard 0 - Lowest Key':'77',
'Keyboard 1 - Lowest Key':'72',
'Keyboard 2 - Lowest Key':'67',
'Keyboard 3 - Lowest Key':'62',
'Keyboard 4 - Lowest Key':'57',
'Rounding Mode':'2',
'Keyboard 0 - Send Y':'1',
'Keyboard 1 - Send Y':'1',
'Keyboard 2 - Send Y':'1',
'Keyboard 3 - Send Y':'1',
'Keyboard 4 - Send Y':'1',
}";
// standard parameters
f = hslider("freq",300,50,2000,0.01);
bend = ba.semi2ratio(hslider("bend[midi:pitchwheel]",0,-2,2,0.001)) : si.polySmooth(gate,0.999,1);
gain = hslider("gain",1,0,1,0.01);
s = hslider("sustain[midi:ctrl 64]",0,0,1,1); // for sustain pedal
t = button("gate");
y = hslider("y[midi:ctrl 1]",1,0,1,0.001) : si.smoo;
// fomating parameters
gate = t+s : min(1);
freq = f*bend;
cutoff = y*4000+50;
envelope = gate*gain : si.smoo;
process = os.sawtooth(freq)*envelope : fi.lowpass(3,cutoff) <: _,_;
turenas
//################################### turenas.dsp ########################################
// A simple smart phone percussion based on an additive synthesizer.
//
// ## SmartKeyboard Use Strategy
//
// Since the sounds generated by this synth are very short, the strategy here is to take
// advantage of the polyphony capabilities of the iOSKeyboard architecture by creating
// a new voice every time a new key is pressed. Since the SmartKeyboard interface has a
// large number of keys here (180), lots of sounds are generated when sliding a
// finger across the keyboard.
//
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] turenas.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
declare name "turenas";
import("stdfaust.lib");
//========================= Smart Keyboard Configuration =================================
// (10 keyboards with 18 keys each configured as a pitch matrix.
//========================================================================================
declare interface "SmartKeyboard{
'Number of Keyboards':'10',
'Keyboard 0 - Number of Keys':'18',
'Keyboard 1 - Number of Keys':'18',
'Keyboard 2 - Number of Keys':'18',
'Keyboard 3 - Number of Keys':'18',
'Keyboard 4 - Number of Keys':'18',
'Keyboard 5 - Number of Keys':'18',
'Keyboard 6 - Number of Keys':'18',
'Keyboard 7 - Number of Keys':'18',
'Keyboard 8 - Number of Keys':'18',
'Keyboard 9 - Number of Keys':'18',
'Keyboard 0 - Lowest Key':'50',
'Keyboard 1 - Lowest Key':'55',
'Keyboard 2 - Lowest Key':'60',
'Keyboard 3 - Lowest Key':'65',
'Keyboard 4 - Lowest Key':'70',
'Keyboard 5 - Lowest Key':'75',
'Keyboard 6 - Lowest Key':'80',
'Keyboard 7 - Lowest Key':'85',
'Keyboard 8 - Lowest Key':'90',
'Keyboard 9 - Lowest Key':'95',
'Keyboard 0 - Piano Keyboard':'0',
'Keyboard 1 - Piano Keyboard':'0',
'Keyboard 2 - Piano Keyboard':'0',
'Keyboard 3 - Piano Keyboard':'0',
'Keyboard 4 - Piano Keyboard':'0',
'Keyboard 5 - Piano Keyboard':'0',
'Keyboard 6 - Piano Keyboard':'0',
'Keyboard 7 - Piano Keyboard':'0',
'Keyboard 8 - Piano Keyboard':'0',
'Keyboard 9 - Piano Keyboard':'0',
'Keyboard 0 - Send X':'0',
'Keyboard 1 - Send X':'0',
'Keyboard 2 - Send X':'0',
'Keyboard 3 - Send X':'0',
'Keyboard 4 - Send X':'0',
'Keyboard 5 - Send X':'0',
'Keyboard 6 - Send X':'0',
'Keyboard 7 - Send X':'0',
'Keyboard 8 - Send X':'0',
'Keyboard 9 - Send X':'0'
}";
//================================ Instrument Parameters =================================
// Creates the connection between the synth and the mobile device
//========================================================================================
// SmartKeyboard Y parameter
y = hslider("y",0,0,1,0.01);
// Smart Keyboard frequency parameter
freq = hslider("freq",400,50,2000,0.01);
// SmartKeyboard gate parameter
gate = button("gate");
// mode resonance duration is controlled with the x axis of the accelerometer
res = hslider("res[acc: 0 0 -10 0 10]",2.5,0.01,5,0.01);
//=================================== Parameters Mapping =================================
//========================================================================================
// number of modes
nModes = 6;
// distance between each mode
maxModeSpread = 5;
modeSpread = y*maxModeSpread;
// computing modes frequency ratio
modeFreqRatios = par(i,nModes,1+(i+1)/nModes*modeSpread);
// computing modes gain
minModeGain = 0.3;
modeGains = par(i,nModes,1-(i+1)/(nModes*minModeGain));
// smoothed mode resonance
modeRes = res : si.smoo;
//============================================ DSP =======================================
//========================================================================================
process = sy.additiveDrum(freq,modeFreqRatios,modeGains,0.8,0.001,modeRes,gate)*0.05;
violin
//############################### violin.dsp ###################################
// Faust instrument specifically designed for faust2smartkeyb where a
// complete violin physical model can be played using the touch sceen
// interface. While the 4 virtual strings can be bowed using a control
// surface on the screen, it could be easily substituted with an external
// interface.
//
// ## SmartKeyboard Use Strategy
//
// 4 keyboards are used to control the pitch of the 4 bowed strings. Strings
// are connected to the virtual bow when they are touched. A pad created from
// a keybaord with a single key can be used to control the bow velocity and
// pressure on the selected strings.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets.
// However it was specifically designed to be used with faust2smartkeyb. For
// best results, we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp violin.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Aug. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//##############################################################################
declare interface "SmartKeyboard{
'Number of Keyboards':'5',
'Max Keyboard Polyphony':'0',
'Rounding Mode':'2',
'Send Fingers Count':'1',
'Keyboard 0 - Number of Keys':'19',
'Keyboard 1 - Number of Keys':'19',
'Keyboard 2 - Number of Keys':'19',
'Keyboard 3 - Number of Keys':'19',
'Keyboard 4 - Number of Keys':'1',
'Keyboard 0 - Lowest Key':'55',
'Keyboard 1 - Lowest Key':'62',
'Keyboard 2 - Lowest Key':'69',
'Keyboard 3 - Lowest Key':'76',
'Keyboard 0 - Send Keyboard Freq':'1',
'Keyboard 1 - Send Keyboard Freq':'1',
'Keyboard 2 - Send Keyboard Freq':'1',
'Keyboard 3 - Send Keyboard Freq':'1',
'Keyboard 4 - Send Freq':'0',
'Keyboard 4 - Send Key X':'1',
'Keyboard 4 - Send Key Y':'1',
'Keyboard 4 - Key 0 - Label':'Bow',
'Keyboard 4 - Static Mode':'1'
}";
import("stdfaust.lib");
// SMARTKEYBOARD PARAMS
kbfreq(0) = hslider("kb0freq",220,20,10000,0.01);
kbbend(0) = hslider("kb0bend",1,ma.EPSILON,10,0.01);
kbfreq(1) = hslider("kb1freq",330,20,10000,0.01);
kbbend(1) = hslider("kb1bend",1,ma.EPSILON,10,0.01);
kbfreq(2) = hslider("kb2freq",440,20,10000,0.01);
kbbend(2) = hslider("kb2bend",1,ma.EPSILON,10,0.01);
kbfreq(3) = hslider("kb3freq",550,20,10000,0.01);
kbbend(3) = hslider("kb3bend",1,ma.EPSILON,10,0.01);
kb4k0x = hslider("kb4k0x",0,0,1,1) : si.smoo;
kb4k0y = hslider("kb4k0y",0,0,1,1) : si.smoo;
kbfingers(0) = hslider("kb0fingers",0,0,10,1) : int;
kbfingers(1) = hslider("kb1fingers",0,0,10,1) : int;
kbfingers(2) = hslider("kb2fingers",0,0,10,1) : int;
kbfingers(3) = hslider("kb3fingers",0,0,10,1) : int;
// MODEL PARAMETERS
// strings lengths
sl(i) = kbfreq(i)*kbbend(i) : pm.f2l : si.smoo;
// string active only if fingers are touching the keyboard
as(i) = kbfingers(i)>0;
// bow pressure could also be controlled by an external parameter
bowPress = kb4k0y;
// retrieving finger displacement on screen (dirt simple)
bowVel = kb4k0x-kb4k0x' : abs : *(8000) : min(1) : si.smoo;
// bow position is constant but could be ontrolled by an external interface
bowPos = 0.7;
// ASSEMBLING MODELS
// essentially 4 parallel violin strings
model = par(i,4,pm.violinModel(sl(i),bowPress,bowVel*as(i),bowPos)) :> _;
process = model <: _,_;
violin2
//############################### violin2.dsp ##################################
// Faust instrument specifically designed for faust2smartkeyb where a
// complete violin physical model can be played using the touch sceen
// interface. Bowing is carried out by constantly moving a finger on the
// y axis of a key.
//
// ## SmartKeyboard Use Strategy
//
// 4 keyboards are used to control the pitch of the 4 bowed strings. Strings
// are connected to the virtual bow when they are touched.
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets.
// However it was specifically designed to be used with faust2smartkeyb. For
// best results, we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] -effect reverb.dsp violin.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Aug. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//##############################################################################
declare interface "SmartKeyboard{
'Number of Keyboards':'4',
'Max Keyboard Polyphony':'0',
'Rounding Mode':'2',
'Send Fingers Count':'1',
'Keyboard 0 - Number of Keys':'12',
'Keyboard 1 - Number of Keys':'12',
'Keyboard 2 - Number of Keys':'12',
'Keyboard 3 - Number of Keys':'12',
'Keyboard 0 - Lowest Key':'55',
'Keyboard 1 - Lowest Key':'62',
'Keyboard 2 - Lowest Key':'69',
'Keyboard 3 - Lowest Key':'76',
'Keyboard 0 - Send Keyboard Freq':'1',
'Keyboard 1 - Send Keyboard Freq':'1',
'Keyboard 2 - Send Keyboard Freq':'1',
'Keyboard 3 - Send Keyboard Freq':'1',
'Keyboard 0 - Send Y':'1',
'Keyboard 1 - Send Y':'1',
'Keyboard 2 - Send Y':'1',
'Keyboard 3 - Send Y':'1'
}";
import("stdfaust.lib");
// SMARTKEYBOARD PARAMS
kbfreq(0) = hslider("kb0freq",220,20,10000,0.01);
kbbend(0) = hslider("kb0bend",1,ma.EPSILON,10,0.01);
kbfreq(1) = hslider("kb1freq",330,20,10000,0.01);
kbbend(1) = hslider("kb1bend",1,ma.EPSILON,10,0.01);
kbfreq(2) = hslider("kb2freq",440,20,10000,0.01);
kbbend(2) = hslider("kb2bend",1,ma.EPSILON,10,0.01);
kbfreq(3) = hslider("kb3freq",550,20,10000,0.01);
kbbend(3) = hslider("kb3bend",1,ma.EPSILON,10,0.01);
kbfingers(0) = hslider("kb0fingers",0,0,10,1) : int;
kbfingers(1) = hslider("kb1fingers",0,0,10,1) : int;
kbfingers(2) = hslider("kb2fingers",0,0,10,1) : int;
kbfingers(3) = hslider("kb3fingers",0,0,10,1) : int;
y = hslider("y",0,0,1,1) : si.smoo;
// MODEL PARAMETERS
// strings lengths
sl(i) = kbfreq(i)*kbbend(i) : pm.f2l : si.smoo;
// string active only if fingers are touching the keyboard
as(i) = kbfingers(i)>0;
// retrieving finger displacement on screen (dirt simple)
bowVel = y-y' : abs : *(3000) : min(1) : si.smoo;
// bow position is constant but could be ontrolled by an external interface
bowPos = 0.7;
bowPress = 0.5;
// ASSEMBLING MODELS
// essentially 4 parallel violin strings
model = par(i,4,pm.violinModel(sl(i),bowPress,bowVel*as(i),bowPos)) :> _;
process = model <: _,_;
vocal
//######################################## vocal.dsp #####################################
// A funny vocal synth app...
//
// ## Compilation Instructions
//
// This Faust code will compile fine with any of the standard Faust targets. However
// it was specifically designed to be used with faust2smartkeyb. For best results,
// we recommend to use the following parameters to compile it:
//
//
// faust2smartkeyb [-ios/-android] vocal.dsp
//
//
// ## Version/Licence
//
// Version 0.0, Feb. 2017
// Copyright Romain Michon CCRMA (Stanford University)/GRAME 2017
// MIT Licence: https://opensource.org/licenses/MIT
//########################################################################################
import("stdfaust.lib");
declare interface "SmartKeyboard{
'Number of Keyboards':'1',
'Max Keyboard Polyphony':'0',
'Keyboard 0 - Number of Keys':'1',
'Keyboard 0 - Send Freq':'0',
'Keyboard 0 - Static Mode':'1',
'Keyboard 0 - Send X':'1',
'Keyboard 0 - Piano Keyboard':'0'
}";
// standard parameters
vowel = hslider("vowel[acc: 0 0 -10 0 10]",2,0,4,0.01) : si.smoo;
x = hslider("x",0.5,0,1,0.01) : si.smoo;
vibrato = hslider("vibrato[acc: 1 0 -10 0 10]",0.05,0,0.1,0.01);
gain = hslider("gain",0.25,0,1,0.01);
// fomating parameters
freq = x*200 + 50;
voiceFreq = freq*(os.osc(6)*vibrato+1);
process = pm.SFFormantModelBP(1,vowel,0,voiceFreq,gain) <: _,_;
Search
From here you can search these documents. Enter your search terms below.


-*- html -*-
NGerlGuten overview page
@title Next Generation ErlGuten - a typesetting system for producing PDF from XML
@author Joe Armstrong
@author Mikael Karlsson
@author Johan Bevemyr
@author Sean Hinde
@author Håkan Stenholm
@author Carl Wright
@copyright 2003-2012 Joe Armstrong, Mikael Karlsson, Johan Bevemyr,
Sean Hinde, Håkan Stenholm, Carl Wright
@version {@version}
@doc
NGerlGuten is a typesetting system for producing PDF from XML.
NGerlGuten is free software published under the MIT license.
The word ErlGuten is built from Erlang
plus Gutenberg.
The goal of NGerlGuten is to produce typographic quality output - this
means that we aim at the highest quality possible for the typeset text. The
NGerlGuten text justification algorithms produce paragraph-optimized text with
fully kerned data, normally the production of such text cannot be done by
everyday word-processing programs but requires the use of dedicated
typesetting programs.
== Gallery ==
| Inputs | Output |
| test1.xml galley_001.gal |
test1.pdf |
| eg_test1.erl | eg_test1.pdf |
| eg_test4.erl | eg_test4.pdf |


To compile the Javascript and launch this page, try gulp Examples.Mouse.FullScreen
gulp Examples.Mouse.FullScreen
I didn't have HTML output routines implemented at this point, so look at the console.log to see what is happening.


{{template "processing.html"}}
Revenue
Maintenance
Production
Capacity Payment
Energy Payment
Startup Payment
Penalty
Incentive
Cost
Duration
Primary Fuel 1st
Primary Fuel 2nd
Backup Fuel
Fuel Transport
Key
Complete Data
Marginal Data
No Data


{% extends 'tirinfo/index.html' %} {% load static %} {% block content %}
Interactive map with links to individual leg maps.
Maps, Leg Rankings & Summaries, Exchange Coordinates, Written Directions, Leg Descriptions, PDF Maps, Rules, Waiver, all the tools you need to organize a successful relay!
Frequently asked questions. Check here if your question seems like something that would come up for most teams.
Results and awards from previous years.
Instructional videos and other content.
Our Facebook page. Use it for finding teams right now.
Your team page (link only works if you are logged in and linked to a team).
Give us a call at<PHONE_NUMBER> if you have a question (or just want to talk)!


(Video) Brilliant clip emerges of an emotional Fabinho singing YNWA after famous win
by Ste CarsonFabinho is Liverpool hard man, and perhaps the finest defensive midfielder playing in Europe at the moment. His contribution to our Champions League title will never be forgotten.
A video clip has emerged of the Brazilian lined up with the players, singing along to our famous anthem ‘You’ll Never Walk Alone’ and he appears to get a little teary-eyed.
By no means are we trying to shame the man, it’s just a beautiful moment to see such a powerful presence on the pitch touched by the club in this way.
Take a watch of the video below (via Esporte):
Fabinho here. What a moment. pic.twitter.com/Mb7MXhnvUo
— Jack Sear (@JackSear) May 8, 2019


Powered by CodePro Server and Eclipse
Package Analysis |
[packages] [explanations] |
Package Total Classes Abstract Classes Concrete Classes Afferent Coupling Efferent Coupling Abstractness Instability Distance com.mydomain.smartcrop 2 0 2 1 2 0.0 0.67 -0.33 com.mydomain.smartcrop.gui 6 0 6 0 6 0.0 1.0 0.0 com.mydomain.smartcrop.operation 2 2 0 6 2 1.0 0.25 0.25 com.mydomain.smartcrop.operation.color 2 0 2 1 2 0.0 0.67 -0.33 com.mydomain.smartcrop.operation.geometry 1 0 1 1 1 0.0 0.5 -0.5 com.mydomain.smartcrop.operation.morphology 2 0 2 1 2 0.0 0.67 -0.33 com.mydomain.smartcrop.operation.statistics 8 1 7 2 7 0.13 0.78 -0.1 com.mydomain.smartcrop.procedure 5 1 4 2 4 0.2 0.67 -0.13 com.mydomain.smartcrop.utils 2 0 2 3 2 0.0 0.4 -0.6
com.mydomain.smartcrop
Afferent Couplings: 1 Efferent Couplings: 2 Abstractness: 0.0 Instability: 0.67 Distance: -0.33
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.BorderIdentifier
com.mydomain.smartcrop.Scancom.mydomain.smartcrop.gui com.mydomain.smartcrop.operation
com.mydomain.smartcrop.operation.geometry
com.mydomain.smartcrop.operation.statistics
com.mydomain.smartcrop.procedure
com.mydomain.smartcrop.utils
ij
java.awt
java.awt.image
java.langcom.mydomain.smartcrop.gui
Afferent Couplings: 0 Efferent Couplings: 6 Abstractness: 0.0 Instability: 1.0 Distance: 0.0
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.gui.ChartFrame
com.mydomain.smartcrop.gui.InvestigationFrame
com.mydomain.smartcrop.gui.MainFrame
com.mydomain.smartcrop.gui.OptionFrame
com.mydomain.smartcrop.gui.ProgressFrame
com.mydomain.smartcrop.gui.ScanManagerNone com.mydomain.smartcrop
com.mydomain.smartcrop.procedure
com.mydomain.smartcrop.utils
ij
java.awt
java.awt.event
java.awt.image
java.io
java.lang
javax.swing
org.jfree.chartcom.mydomain.smartcrop.operation
Afferent Couplings: 6 Efferent Couplings: 2 Abstractness: 1.0 Instability: 0.25 Distance: 0.25
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.operation.AbstractComputerVisionOperation
com.mydomain.smartcrop.operation.Operationcom.mydomain.smartcrop
com.mydomain.smartcrop.operation.color
com.mydomain.smartcrop.operation.geometry
com.mydomain.smartcrop.operation.morphology
com.mydomain.smartcrop.operation.statistics
com.mydomain.smartcrop.procedureij
java.langcom.mydomain.smartcrop.operation.color
Afferent Couplings: 1 Efferent Couplings: 2 Abstractness: 0.0 Instability: 0.67 Distance: -0.33
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.operation.color.GrayScaleConversion
com.mydomain.smartcrop.operation.color.Negativecom.mydomain.smartcrop.procedure com.mydomain.smartcrop.operation
com.mydomain.smartcrop.operation.colorlib
ij
ij.process
java.langcom.mydomain.smartcrop.operation.geometry
Afferent Couplings: 1 Efferent Couplings: 1 Abstractness: 0.0 Instability: 0.5 Distance: -0.5
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.operation.geometry.Crop com.mydomain.smartcrop com.mydomain.smartcrop.operation
ij
java.awt
java.awt.color
java.awt.image
java.langcom.mydomain.smartcrop.operation.morphology
Afferent Couplings: 1 Efferent Couplings: 2 Abstractness: 0.0 Instability: 0.67 Distance: -0.33
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.operation.morphology.Closing
com.mydomain.smartcrop.operation.morphology.Openingcom.mydomain.smartcrop.procedure com.mydomain.smartcrop.operation
ij
ij.process
ijt.filter.morphology
java.langcom.mydomain.smartcrop.operation.statistics
Afferent Couplings: 2 Efferent Couplings: 7 Abstractness: 0.13 Instability: 0.78 Distance: -0.1
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.operation.statistics.AbstractSamples com.mydomain.smartcrop.operation.statistics.ColumnSamples
com.mydomain.smartcrop.operation.statistics.RowSamples
com.mydomain.smartcrop.operation.statistics.Singularities
com.mydomain.smartcrop.operation.statistics.SingularitiesFinder
com.mydomain.smartcrop.operation.statistics.StdScoreAnalysis
com.mydomain.smartcrop.operation.statistics.StdScoreChart
com.mydomain.smartcrop.operation.statistics.StdScorescom.mydomain.smartcrop
com.mydomain.smartcrop.procedurecom.mydomain.smartcrop.operation
com.mydomain.smartcrop.utils
ij
java.awt
java.awt.image
java.lang
java.util
org.jfree.chart
org.jfree.chart.plot
org.jfree.chart.renderer.xy
org.jfree.data.xycom.mydomain.smartcrop.procedure
Afferent Couplings: 2 Efferent Couplings: 4 Abstractness: 0.2 Instability: 0.67 Distance: -0.13
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.procedure.AbstractProcedure com.mydomain.smartcrop.procedure.AccurateProcedure
com.mydomain.smartcrop.procedure.Configuration
com.mydomain.smartcrop.procedure.QuickProcedure
com.mydomain.smartcrop.procedure.RegularProcedurecom.mydomain.smartcrop
com.mydomain.smartcrop.guicom.mydomain.smartcrop.operation
com.mydomain.smartcrop.operation.color
com.mydomain.smartcrop.operation.colorlib
com.mydomain.smartcrop.operation.geometrylib
com.mydomain.smartcrop.operation.morphology
com.mydomain.smartcrop.operation.statistics
ijt.filter.morphology
ijt.filter.morphology.strel
java.awtcom.mydomain.smartcrop.utils
Afferent Couplings: 3 Efferent Couplings: 2 Abstractness: 0.0 Instability: 0.4 Distance: -0.6
Abstract Classes Concrete Classes Referencing Packages Referenced Packages com.mydomain.smartcrop.utils.IOImage
com.mydomain.smartcrop.utils.Statisticscom.mydomain.smartcrop
com.mydomain.smartcrop.gui
com.mydomain.smartcrop.operation.statisticsjava.awt.image
java.io
java.lang
javax.imageio
javax.swing
Explanations |
[packages] [explanations] |
The following are definitions of some of the terms used in this report. For the most part, these definitions are taken from the paper OO Design Quality Metrics by Robert Martin.
- Scope
- Anything that can contain types; either a package or project.
- Number of Types
- The total number of types defined within a scope.
- Afferent Coupling
- The number of types outside a scope that depend on types defined in the scope. (Sometimes abreviated as
Ca
.)
- Efferent Coupling
- The number of types in a scope that depend on types defined outside the scope. (Sometimes abreviated as
Ce
.)
- Abstractness
- The number of abstract types (abstract classes and interfaces) divided by the total number of types. It ranges between zero (0.0) and one (1.0), where zero indicates a completely concrete scope and one indicates a completely abstract scope.
- Instability
- The ratio of efferent coupling to the total coupling. This value is computed as
Ce / (Ca + Ce)
and represents the resiliance of the scope to change. It ranges between zero (0.0) and one (1.0), where zero indicates a maximally stable scope and one indicates a maximally instable scope.
- Distance
- The normalized distance of a scope (computed as
| A + I - 1 |
) from the main sequence (A + I = 1
). This value represents the degree to which stability and abstractness are balanced. It ranges between zero (0.0) and one (1.0), where zero indicates a maximally balanced scope and one indicates a maximally unbalanced scope.


--- layout: post title: Silicon Valley Patterns Group Reads DDD date: 2009-03-30 20:13:23.000000000 -06:00 type: post published: true status: publish categories: - Community Event - Learning DDD tags: [] meta: _gcuser: Vladimir Gitlevich _gcid: '53' content_type: book _bitly_trim: http://dddcommunity.org/?p=44 _edit_last: '3109' _dependencies: s:6:"a:0:{}"; _custom_background: a:5:{s:3:"url";s:0:"";s:16:"background-color";s:0:"";s:17:"background-repeat";s:6:"repeat";s:21:"background-attachment";s:6:"scroll";s:19:"background-position";s:8:"left top";} _intro_text: default _intro_custom_banner: a:1:{s:3:"url";s:0:"";} _thumbnail_id: '365' _disable_post_image: a:1:{i:0;s:4:"true";} custom_permalink: library/silicon_valley_pattern_group_2004/ U_S_C_message: '' author: login: Vladimir Gitlevich email<EMAIL_ADDRESS>display_name: Vladimir Gitlevich first_name: Vladimir Gitlevich last_name: '' ---
Nov 18, 2003 - Feb 3, 2004
This distinguished book discussion group spent several of their
weekly meetings studying Domain-Driven Design, turning
out about 20 participants each week. The author attended the discussions.
Such local reading groups are a great opportunity to
dig into the material in a group setting. The notes from these sessions
may provide ideas for other groups to initiate topics and provocative
questions.


Homepage
Home
Education
Skills
Memories
THE BLOG
Welcome !!!
About Me !!!
Hello, I am Prayush Rathore. I am a Linguistics Enthusiast, studying at IIIT-H


Carter, Leonard James
| Birth Name | Carter, Leonard James |
| Gender | male |
| Age at Death | 79 years, 7 months, 24 days |
Narrative
Leonard was a Telephone Communication Technician.
SMH - CARTER- Leonard James - Passed away peacefully on Wednesday, 10 July, 2002, at Frank Whiddon Masonic Homes, Glenfield, formally of Padstow. Beloved husband of Letty (dec), loved father & father-in-law of Clifford & Robyn, Allison & Steve, Roslyn & Duncan, Grandfather of Melissa, Fiona, Renee, Peter, Leah, Jennie, Monique & Natasha. Aged 79yrs.
THE FUNERAL - The friends of the late Leonard Carter are invited to attend his Funeral to be held at Woronora Cemetery, Linden St, Sutherland on Friday 12 July, 2002, at 10am in the West Chapel. The Burial interment inside the Cemetery Grounds. By request no flowers, donations to the Alzteimers Association.
Events
| Event | Date | Place | Description | Sources |
|---|---|---|---|---|
| Birth | 1922-11-16 | Kandos NSW | ||
|
|
||||
| Death | 2002-07-10 | Masonic Homes Glenfield NSW | ||
|
|
||||
| Burial | 2002-07-12 | Woronora General Cemetery. | ||
|
|
Parents
| Relation to main person | Name | Birth date | Death date | Relation within this family (if not by birth) |
|---|---|---|---|---|
| Father | Carter, Wilfred | 1903-08-04 | 1964 | |
| Mother | Goodman, Elsie “Ina” | 1900-03-22 | 1970-08-14 | |
| Carter, Leonard James | 1922-11-16 | 2002-07-10 |
Families
Family of Carter, Leonard James and Ashcroft, Letty Amelia |
||||||||||||||||
| Married | Wife | Ashcroft, Letty Amelia ( * 1923-06-14 + 1997-03-14 ) | ||||||||||||||
|
||||||||||||||||
| Children |
| Name | Birth Date | Death Date |
|---|---|---|
| Carter, [Living] | ||
| Carter, [Living] | ||
| Carter, Roslyn | 1967-10-06 |
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | 513F433A1F2ADB11952298B5444E5A27594A |
Attributes
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | 503F433A1F2ADB11952298B5444E5A27583A |
Pedigree
-
Carter, Wilfred
-
Goodman, Elsie “Ina”
- Carter, Leonard James
-
Goodman, Elsie “Ina”


Pop-up windows provide a unique accessibility problem. First of all, most usability experts would argue against the use of pop-up windows except in the most extreme of cases. If you must use pop-up windows, know that they introduce several very unique accessibility issues. For a visual user, it may be difficult to notice and navigate to the new window. For someone who is using assistive technologies, the new window may be annoying and confusing because the default behavior for the link has been modified. JavaScript implementation may make the new window difficult or impossible to resize or scale for someone using a screen enlarger. For someone who is blind, there is typically no indication that they are presently navigating in a new window. When the screen reader user attempts to return to the previous page by selecting the back button, it may be confusing to find that this does not work.
This is considered a non-accessible popup window. Print this page.
Select link to view printable page in a new window.
Note
If you are using software to block pop-up windows, you may need disable the software or select the link in a way that bypasses the pop-up blocker
(typically
Ctrl + click or
Ctrl +
Enter with the link selected).
In the example code above, the link will continue to work normally (i.e., in the same browser window) if JavaScript is disabled.
When using JavaScript to open new windows, you can modify the size and position of the new window. You can also add or remove functionality of the window, such as the ability to resize, display scroll bars, show tool bars, etc. Be very careful when changing the default behavior of the browser window. If a user has low vision and must enlarge the content, a small window that cannot be enlarged and does not display scroll bars would be very inaccessible. Someone with a motor disability may rely upon large tool bars to accurately control the web browser, so removing or modifying them may introduce difficulties for this user.
As you can see, there are many difficulties in both usability and accessibility that arise through the use of pop-up windows. Care must be taken in making the decision to use them. If they are used, thorough user testing of your implementation is vital to ensure accessibility. Always alert the user to the fact that a pop-up window will be opened.


Source maps may be required to see more data.
Try setting sourceMap and statsJson fields to true.
sourceMap
statsJson
true
()


Use webpack with a development server that provides live reloading. This should be used for development only.
It uses webpack-dev-middleware under the hood, which provides fast in-memory access to the webpack assets.
First thing’s first, install the module:
console
npm install webpack-dev-server --save-dev
Note: While you can install and run webpack-dev-server globally, we recommend installing it locally. webpack-dev-server will always use a local installation over a global one.
There are two main, recommended methods of using the module:
The easiest way to use it is with the CLI. In the directory where your
webpack.config.js
is, run:
console
node_modules/.bin/webpack-dev-server
NPM package.json scripts are a convenient and useful means to run locally installed binaries without having to be concerned about their full paths. Simply define a script as such:
json
"scripts": {
"start:dev": "webpack-dev-server"
}
And run the following in your terminal/console:
console
npm run start:dev
NPM will automagically reference the binary in node_modules
for you, and
execute the file or command.
Either method will start a server instance and begin listening for connections
from localhost
on port 8080
.
webpack-dev-server is configured by default to support live-reload of files as you edit your assets while the server is running.
See the documentation for more use cases and options.
Version 2.8.0 introduced a change which included ES6 keywords const
and let
within the scripts being served to the browser. This effects environments which
support no ES6 whatsoever, including older versions of UglifyJS and Internet
Explorer. This was not considered a breaking change at the time due to official
support for oldIE ending in 2016, rather this was seen as a maintenance update.
Those wishing to support oldIE should stick with version 2.7.1.
For version 2.8.0+ those using UglifyJS in their webpack configs should use the beta version of uglifyjs-webpack-plugin independently, and not the built-in plugin. This will change once the new version is out of beta.
We do our best to keep Issues in the repository focused on bugs, features, and needed modifications to the code for the module. Because of that, we ask users with general support, “how-to”, or “why isn’t this working” questions to try one of the other support channels that are available.
Your first-stop-shop for support for webpack-dev-server should by the excellent documentation for the module. If you see an opportunity for improvement of those docs, please head over to the webpack.js.org repo and open a pull request.
From there, we encourage users to visit the webpack Gitter chat and
talk to the fine folks there. If your quest for answers comes up dry in chat,
head over to StackOverflow and do a quick search or open a new
question. Remember; It’s always much easier to answer questions that include your
webpack.config.js
and relevant files!
If you’re twitter-savvy you can tweet #webpack with your question and someone should be able to reach out and lend a hand.
If you have discovered a :bug:, have a feature suggestion, of would like to see a modification, please feel free to create an issue on Github. Note: The issue template isn’t optional, so please be sure not to remove it, and please fill it out completely.
We welcome your contributions! Please have a read of CONTRIBUTING.md for more information on how to get involved.
|
Kees Kluskens |
Andrew Powell |
This project is heavily inspired by peerigon/nof5.


JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.
JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.
JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.


| DOSE: |
185 mg |
oral |
MDAI |
(powder / crystals) |
My history with substance experimentation, like so many of you, cannot and should not be summarized as a bullet-point list of substances in which I have or have not used. Further, my chemical studies have always been viewed as an opportunity to expand my personal understanding of both myself and the reality in which I perceive.
When I first came across the substance MDAI, I had done a lot of research on it. It is my understanding that it is used in research laboratories as a serotonin releasing agent under careful experimentation models with animals – usually used as a basis for comparison on similar compounds. MDAI is unique in that it seems to be restricted toward solely the serotonergic system.
My first use of this substance was carefully measured at precisely 185mg, administered orally.
The primary resulting effects of this substance in the human model includes a perceived brightening of colors, enhanced empathy, and a subtle relaxation – all characteristic of increased synaptic levels of serotonin.
Recreationally, this substance alone has very little value – which is fascinating when taken into consideration the “unofficial” belief that MDMA’s primary effects result from increased serotonin activity. Experimentation with MDAI has shown me, first hand, the drastic differences in primary neurotransmitter activity. Without any action on norepinephrine or dopamine, this substance’s usefulness as a therapeutic tool seems to be quite low.
An interesting aspect to note: The recreational/therapeutic benefits of a correct serotonin/dopamine/norepinephrine ratio are indeed so important, that I found MDAI’s usefulness to be markedly improved upon the implementation of mere D3 receptor stimulation through the simultaneous use of chewing tobacco.
Paired with any stimulant affecting the dopamine/norepinephrine systems in the brain, this substance could have some usefulness. More experimentation is in order.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


AUD/USD Technical Analysis: 0.6825/30 confluence challenges recent recovery
by Anil Panchal- AUD/USD bounces off the six-week-old support line.
- 21 and 50-day EMA, coupled with 38.2% Fibonacci retracement limits near-term upside.
- Sellers can watch over 0.6700 following the downside break.
Following its drop to the weekly low, AUD/USD recovers from a multi-week-old support trend line while taking rounds to 0.6785 during early Friday.
Even so, buyers are likely finding it hard to extend the pullback beyond 0.6825/30 resistance confluence as it including 21/50-day Exponential Moving Averages (EMA) and 38.2% Fibonacci retracement of July-September declines. Increasing the downside bias are bearish signals by 12-bar Moving Average Convergence and Divergence (MACD) indicator.
That said, pair’s sustained break of 0.6830 might not refrain from challenging 50% Fibonacci retracement level of 0.6875 whereas 0.6900 and monthly high close to 0.6930 could entertain bulls during further advances.
On the contrary, sellers will look for fresh entry below an ascending support line stretched since October 09, at 0.6780 now. In doing so, a 23.6% Fibonacci retracement level of 0.6767 and 0.6735/30 can offer intermediate halts prior to fetching the quote to 0.6700 that nears multiple lows marked since late-August.
During the sellers’ dominance past-0.6700, October month low near 0.6670 can come back on the charts.
AUD/USD daily chart
Trend: Bearish
additional important levels
| Overview | |
|---|---|
| Today last price | 0.6788 |
| Today Daily Change | 4 pips |
| Today Daily Change % | 0.06% |
| Today daily open | 0.6784 |
| Trends | |
|---|---|
| Daily SMA20 | 0.685 |
| Daily SMA50 | 0.6812 |
| Daily SMA100 | 0.6834 |
| Daily SMA200 | 0.6933 |
| Levels | |
|---|---|
| Previous Daily High | 0.6814 |
| Previous Daily Low | 0.6783 |
| Previous Weekly High | 0.6866 |
| Previous Weekly Low | 0.6769 |
| Previous Monthly High | 0.693 |
| Previous Monthly Low | 0.667 |
| Daily Fibonacci 38.2% | 0.6795 |
| Daily Fibonacci 61.8% | 0.6802 |
| Daily Pivot Point S1 | 0.6774 |
| Daily Pivot Point S2 | 0.6763 |
| Daily Pivot Point S3 | 0.6742 |
| Daily Pivot Point R1 | 0.6805 |
| Daily Pivot Point R2 | 0.6825 |
| Daily Pivot Point R3 | 0.6836 |


Yamaha Unveils 2020 Tracer Sports Tourer At EICMA
by Sahil KukrejaThe Tracer 700 gets a YZF-R1 inspired headlamp and an updated Euro-V spec 689cc, parallel-twin CP2 engine
Yamaha has unveiled the 2020 Tracer at the EICMA 2019 motorcycle show. The MT-07 based Sports tourer has received a thorough styling overhaul. The updated motorcycle now takes its styling inspiration from the YZF-R1 and MT range of motorcycles.
The 2020 Tracer 700 features a new twin projector LED headlamps at the front similar to what you will also find in the YZF-R1 instead of the split halogen headlamp setup found on its predecessor. The front profile receives a new LED DRL lamps and an easily adjustable windscreen that looks comparatively less upright.
Yamaha has also redesigned the handguard as well that promises better wind and climate protection. The motorcycle gets a wider handlebar and a larger LCD instrument cluster as well. The Tracer 700 also gets a single-piece seat for the comfort of the rider and pillion while the rear profile features a redesigned taillamp to match with the new styling of the motorcycle.
The motorcycle uses an updated Euro-V compliant 689cc, parallel-twin CP2 engine. To meet stricter European emission norms Yamaha optimized the air intake, ignition setting, fuel-injection, and exhaust system. The motorcycle also uses modified exhaust and tweaked gear ratios. The unit paired with a six-speed gearbox produces about 72.4 PS of peak power at 8,750 rpm and 68 Nm of peak torque at 6,500 rpm.
With a kerb weight of 196 kilograms, the Tracer 700 also happens to be the lightest motorcycle in its class. The updated Tracer 700 depends on a new 41mm cartridge-type fork with a new spring rate and adjustable preload and rebound damping at the front and a monoshock setup at the rear which offers adjustable preload and rebound.
The front forks offer 130 mm of travel while the rear monoshock offers 142mm travel. The braking duties of the motorcycle are taken care of by 282mm dual disc brake at the front and 245mm disc brake at the rear. The 2020 Yamaha Tracer 700 will likely be introduced in the markets of Europe and the US soon.


| Subject |
Name |
Type |
Credit |
| CSE-101 |
Introduction to Computer Systems |
theory |
1 |
| CSE-102 |
Introduction to Computer Systems (Sessional) |
lab |
1.50 |
| EEE-105 |
Introduction to Electrical Engineering |
theory |
3 |
| EEE-106 |
Introduction to Electrical Engineering (Sessional) |
lab |
1.50 |
| MATH-101 |
Differential Calculus and Co-ordinate Geometry1 |
theory |
3 |
| ME-100 |
Mechanical Engineering Drawing-I |
theory |
1.50 |
| ME-101 |
Mechanical Engineering |
Theory |
2 |
| PHY-101 |
Physics (Heat and Thermodynamics, Structure of Matter, Waves and Oscillations, and Physical Optics) |
Theory |
3 |
| PHY-102 |
Physics (Sessional) |
Lab |
1.50 |
| SS-101 |
Social Studies |
theory |
2 |


WITNESS LIST Economic Development Committee March 1, 2005-10:30A HB 481 For: Everitt, Shirley Ann (Self) McCartny, Amber (National Multiple Sclerosis Society) On: Maxwell, Susan M. (Texas Council for Developmental Disabilities) Riley, Steve (Texas Workforce Commission) Zaremba, Cheryl A. (The Commission Representing Labor) Registering, but not testifying: For: Arabic, Joseph R. (Texas AFL-CIO) Cranston, Ron (Self) Flores, Jr., Enrique (United Auto Workers) Greer, William (The Coalition of Texas with Disabilities) Hallford, Currie (Communications Workers of America - District 6) Harris, Dwight (Texas Federation of Teachers) Henning, Lori (Texas Association of Goodwills) House, Marc (UAW Local 218) Kern, Diana (National Alliance for the Mentally Ill of Texas) Landry, Richard (Pace International Union) Levy, Rick (Texas AFL-CIO) Minekowsky, John (ARCIL, Inc.) Mizcles, Amy (The ARC of Texas) O'Connor, Caroline (Texas State Employees Union) Riley, Luz (Communication Workers of America Local 6132) Smith, Jill (Self) Templeton, James (Self) HB 551 Registering, but not testifying: For: Schwab, Carlton (Texas Economic Developmental Council) HB 701 For: Krueger, Wayman (Self) Registering, but not testifying: On: Bavousett, Terry (Texas Department of State Health Services) HB 816 For: Baylor, Don (Center for Public Policy Priorities) Bithes, Father George P. (Texas Conference of Churches, Texas Impact American Jewish Congreral Southwest) Dieter, Alison (Texas Gray Panthers) Littles, Paula (Texas AFL-CIO) Riddering, Hannah (Texas National Orgranization for Women) Against: Rich, Sid (Texas Association of Residential Care Communities) On: King, Christopher (Self) Registering, but not testifying: For: Arabic, Joseph R. (Texas AFL-CIO) Arterburn, David (United Transportation Union) Benjamin, Edwin (Self) Briggs, Terry (Brotherhood of Locomotive Engineers and Trainmen) Daly, Richard (Texas Catholic Conference) Evans, Imani (Texas NAACP) Flores Jr., Enrique (United Auto Workers) Hallford, Currie (Communication Workers of America - District 6) Harrell, Will (Texas LULAC & NAACP) Harris, Dwight (Texas Federation of Teachers) House, Marc (UAW Local 218) Kelp, Jr., Richard A. (United Automobile, Aerospace & Agricultural Implement Workers of America) Landry, Richard (Pace International Union) Munoz, Jessica (National Council of La Raza) O'Connor, Caroline (Texas State Employees Union) Riley, Luz (Communications Workers of America - Local 6132) Tilton-Jones, Carrie (Self) Against: Lively, Lance (NFIB) Newton, Will (NFIB) HB 893 For: Garza, Wanda F. (Texas Border Infrastructure Coalition; Chair, Workforce Education Committee) Registering, but not testifying: For: Evans, Imani (Texas LULAC) Flores Jr., Enrique (United Auto Workers) Kastrin, Deborah (El Paso Community College) On: Goeman, James (Texas Higher Education Coordinating Board) Green, Anson (Texas Workforce Commission) HB 985 For: Harrington, Isaac (Texas Civil Rights Project) Kihneman, Sarah (Safeplace: Travis County Domestic Violence and Sexual Assault Survival Center) Levy, Rick (Texas AFL-CIO) On: Riley, Steve (Texas Workforce Commission) Registering, but not testifying: For: Arabic, Joseph R. (Texas AFL-CIO) Dieter, Alison (Texas Gray Panthers) Flores, Jr., Enrique (United Auto Workers) Hallford, Currie (Communications Workers of America - District 6) House, Marc (UAW Local 218) Kastrin, Deborah (YWCA - El Paso) Landry, Richard (Pace International Union) Munoz, Jessica (National Council of La Raza) O'Connor, Caroline (Texas State Employees Union) Riddering, Hannah (Texas National Organization for Women) Riley, Luz (Communications Workers of America - Local 6132) Wolf, Laura (Texas Council on Family Violence) HB 1253 For: Farichild, Julie (Gonzalez Learning & Career Center) Schwab, Carlton (Texas Economic Development Council) Registering, but not testifying: For: Such, Jonathan (GLCC & GEDC) Film Initiatives For: Rector, Ken (IATSE Local 484) On: Copeland, Tom (Governors Office/Texas Film Commission) Registering, but not testifying: On: Pirie, Carol (Texas Film Commission)


Get a local's insights into the hidden gems of Orange County
Fullerton Arboretum
The Fullerton Arboretum is a 26 acre botanical garden located on the campus of Cal State Fullteron.
It is not as large as the Costa Mesa Arboretum, but provides long trails and a great place to walk and enjoy
nature, unique plants, and sculptures.
Crescent Bay Point Park
Crescent Bay Point Park is a small park on a hill overlooking Laguna Beach. This is a local favorite to watch sunsets
and have a nice picnic. If you're looking for something more relaxed and slightly off the beaten path, this provides.
The Bowers Museum
Located in Santa Ana, the Bowers museum houses several exhibitions
at any given time, guaranteeing that there is something of interest to every visitor. These exhibitions range
from ancient Chinese art to modern and contemporary pieces.


Clones the controller.
Disables reconnect until the controller is next reset.
Switches the reconnect controller into a mode where it will only restart the peer connection instead of restarting the session starting with the signaling connection.
Indicates whether a connection attempt is already in progress.
Indicates whether the current connection attempt was the first.
Resets the ReconnectController to its default state.
Decides whether to retry the retryFunc after some amount of backoff depending on the controller.
Sets the last active external timestamp in milliseconds.
Returns whether only the peer connection should be restarted at this time.
Indicates that a connection attempt has started so that the reconnect deadline can be set.
Generated using TypeDoc
Cancels any pending retry and disables reconnect. The cancel function supplied to the retryWithBackoff will be called if there was a pending retry.


{% extends 'server_ui/templates/base.html' %} {% block title %}{{ settings.SITE_TITLE }}{% endblock %} {% block header %} {% endblock %} {% block content %}
The Helios Voting technology is based on advanced peer-reviewed cryptographic techniques that enable your vote to remain secret while providing an intelligent ballot tracker to let you verify that your ballot was received and counted properly:
Helios has been covered in the press:


|
jubilant-funicular
|
Directories |
Files | |
| file | common.hpp [code] |
| file | exponential.hpp [code] |
| file | ext.hpp [code] |
| file | fwd.hpp [code] |
| file | geometric.hpp [code] |
| file | glm.hpp [code] |
| file | integer.hpp [code] |
| file | mat2x2.hpp [code] |
| file | mat2x3.hpp [code] |
| file | mat2x4.hpp [code] |
| file | mat3x2.hpp [code] |
| file | mat3x3.hpp [code] |
| file | mat3x4.hpp [code] |
| file | mat4x2.hpp [code] |
| file | mat4x3.hpp [code] |
| file | mat4x4.hpp [code] |
| file | matrix.hpp [code] |
| file | packing.hpp [code] |
| file | trigonometric.hpp [code] |
| file | vec2.hpp [code] |
| file | vec3.hpp [code] |
| file | vec4.hpp [code] |
| file | vector_relational.hpp [code] |


Sales
Home
Generate New Store
New store name
Min customers per hour
Max customers per hour
Average cookies sold per customer
Hours open
Generate


Lisa sent you a mail
2 min ago
Mail server not working
5 min ago
Transaction complete
2 days ago
Fill The citizen Form with valid information
5
25
10
500


02.Write a script that prints all the numbers from 1 to N, that are not divisible by 3 and 7 at the same time
Input number:
Print


--- layout: page title: Lean Prover Zulip Chat Archive permalink: archive/116395maths/29098arequotientgroupsinmathlib.html ---
I now have a complex. I want to take its homology. I can't find quotient groups in mathlib. What is the best way forward? Should I define them myselves, or should I cast to modules?
you should define them yourself
{% endraw %}


| Concept framework 1.0 documentation | Contents | Index |
| Name | Version | Deprecated |
| RAdjustment | version 1.0 | no |
|
A class representing an adjustable bounded value.
The RAdjustment object represents a value which has an associated lower and upper bound, together with step and page increments, and a page size. It is used within several controls, including RSpinButton, RViewPort, and RVScrollbar, RHScrollbar, RVScale, RHScale. |
| Increment | Sets the standard increment value |
| Lower | Sets or gets the lower value for a RAdjustment |
| PageIncrement | Sets or gets the page increment |
| PageSize | Sets or gets the page size |
| Upper | Sets or gets the upper value for a RAdjustment |
| Value | Sets or gets the value for a RAdjustment |
| RAdjustment | This is the standard constructor and should not be called explicitly |
| OnChanged | This event is raised when the RAdjustment parameters change |
| OnValueChanged | This event is raised when the RAdjustment value changes |
| Parent | This function returns the Parent for a specific Concept GUI Object |
| RID | The RID (Remote ID) for an object |
| Add | TODO: Document this |
| AddTimer | This function sets up a timer |
| DisposeObject | TODO: Document this |
| GetObjectByID | This function finds the object corresponding to the ID parameter |
| GetProperty | TODO: Document this |
| LinkIfNotLinked | This is a special function, wich should be used after a GUI object was created that has no parent |
| Post | TODO: Document this |
| PostString | TODO: Document this |
| RemoteObject | TODO: Document this |
| Repaint | This member tells to the remote control to repaint itself(Queue for redraw) |
| SetParent | TODO: Document this |
| SetProperty | TODO: Document this |
| _GET_REMOTE_EVENT | TODO: Document this |
| _MAP_REMOTE_EVENT | TODO: Document this |
| __QueryDispose | TODO: Document this |
| __Recreate | TODO: Document this |
| Documented by Eduard Suica, generation time: Sun Jan 27 18:15:05 2013 GMT | (c)2013 Devronium Applications |