FoxDot Branch “PitchGlitch”

FoxDot Distro PitchGlitch

FoxDot was created in 2015 to try and open the pathways to Live Coding for users who may be new to programming and want to use it create music quickly and easily. It\\\\\'s an easy-to-use Python library that creates an interactive programming environment and talks to the powerful sound synthesis engine, called SuperCollider to make music. FoxDot schedules musical events in a user-friendly and easy-to-grasp manner that makes live coding easy and fun for both programming newcomers and veterans alike.

FoxDot Homepage with Default Distribution

PitchGlitch is an extended version of FoxDot Default Distribution. With this distribution I hope to support a continuance in developing FoxDot with new additions, new functionalities to the platform. This changes/additions are shown below. The videos show most new changes.

Here and additional video to explain current development on MidiIn() function:


Download here:

PitchGlitch Distro on Gitlab


In case there is trouble (I had previously):

Problem Only some synths are loading on startup!

Error: Not all synths are loaded in SuperCollider (Console) while FoxDot starts up

Solution: Run python3 -m FoxDot within your downloaded folder of your PitchGlitch git holder you cloned and installed FoxDot from

If developer should be interested in helping me to progress faster, please contact me! Your help is much appreciated. Cheers!


Release notes:

rc 0.1

SynthDefs:

loop, stretch, play1, play2, audioin, noise, dab, varsaw, lazer, growl, dirt, crunch, cicada, cricket, rave, scatter, charm, bell, gong, soprano, dub, scratch, klank, feel, glass, soft, quin, pluck, spark, blip, ripple, creep, orient, zap, marimba, fuzz, bug, pulse, saw, snick, twang, karp, arpy, nylon, donk, squish, swell, razz, sitar, star, jbass, piano, bass, sawbass, prophet, pads, pasha, ambi, space, keys, dbass, sinepad, video, viola, hydra, abass, acidbass, alva, angel, angst, bassguitar, bbass, bchaos, bellmod, benoit, birds, blips, bnoise, borgan, bounce, bphase, brass, brown, chimebell, chipsy, click, clip, cluster, combs, cs80lead, dafbass, dblbass, donkysub, donorgan, dopple, drone, dustv, ebass, ecello, eeri, eoboe, epiano, faim, faim2, fbass, filthysaw, flute, fm, fmbass, fmrhodes, garfield, glitchbass, glitcher, grat, gray, gsynth, harp, hnoise, hoover, kalimba, ladder, lapin, laserbeam, latoo, lfnoise, linesaw, longsaw, mhpad, mhping, moogbass, moogpluck, moogpluck2, mpluck, noisynth, noquarter, organ, organ2, pbass, phazer, pianovel, pink, pmcrotal, ppad, prayerbell, prof, radio, rhodes, rhpiano, risseto, rissetobell, rlead, rsaw, rsin, shore, sillyvoice, sine, siren, spacesaw, sos, sosbell, spick, sputter, square, ssaw, steeldrum, strings, subbass, subbass2, supersaw, tb303, total, tremsynth, tribell, tritri, triwave, tubularbell, tworgan, tworgan2, tworgan3, tworgan4, varicelle, vibass, vinsine, virus, waves, windmaker, wobble, wobblebass, wsaw, wsawbass, xylophone


SynthDefs: Extra attributes

SynthDef Xtra Attributes
acidbass lagtime=0.12, frange=6 (filter range), width=0.51, rq=0.4
angel rq=0.5, cnoise=0.001 (clip noise), offnote=1.01
benoit semione=12, semitwo=24, trackmul=2, width=0.17
blips nharm=20, offnote=1.001
borgan spread=0.8, lagtime=0.1
bounce para1=2, para2=2.5, rel=0.09, nharm=3
bphase pmindex=2
chimebell rel=0.02, t60=8, offnote=1.001
chipsy offnote=0.75, rel=0.009
cicada trig_freq=0.2
click mult=4, ptime=0.2
cluster para1=7, mult=4, pstep=0.75
combs rate=2, depth=0.8, regen= -3, sweep=8, rq=0.9, nharm=2
cs60lead fatk=0.75, fdec=0.5, fsus=0.8, frel=1.0, cutoff=200, dtune=0.002, vibspeed=4, vibdepth=0.015, ratio=0.8, glide=0.15
dafbass ffmod=1 (do not 0), level=0.8, peak=1, offnote=1.01
dblbass freqdev=4, op1mul=0.1, op2mul=0.1, op3mul=0.1, sprd=0.5, subAmp=0.1
donkysub frate
donorgan rel=0.5, lforate=9, lfowidth=0.01, cutoff=100, rq=0.5
dustv everbtime=3, roomdepth=8
ebass pick=0.414, rq=0.5, cutoff=250
eoboe range=0, vibrate=6, width=1, decimate=22040, decibits=2, offnote=1.005
feel offnote=1.005
filthysaw cf=100, t_bd=0, t_sd=0, pw=0.4
flute ipress=0.9, ibreath=0.09, ifeedbk1=0.4, ifeedbk2=0.4
fmbass atkfract=0.05, relfract= 0.7, modindex = 80, modratio = 1.51, subamp = 0.99, modfb = 1 fmrhodes >> vel = 0.8, modindex = 0.2, oscmix = 0.2, lfospeed = 0.4, lfodepth = 0.1
garfield phase=0, smooth=0.5, mult=3, vibrato=1, rq=1
grat rlpf=4000
glitcher len =20, henA=2, henB=0.4, t=1
harp decaytime=7, coef=0.04, blend=0.7
hoover rel=0.09, offnote=0.5
kalimba oscmix=0.4, relMin=2.5, relMax=3.5
linesaw lforate1 = 5, lfodepth1 = 0.25, phasecenter1 = 0.35, lforate2 = 2.7, lfodepth2 = 0.5, phasecenter2 = 0.5, pswitch = 0 (0 or 1), fdelay1 = 0.00025, fdelay2 = 0.00015
mhpad vibrate = 4, vibdepth = 0.02, trem=3, tremdepth = 0.5
mhping depth=0.02
moogbass cutoff = 1200, gain = 1.2, lagamount = 0.01, width=0.6
moogpluck pluckfilter=4, pluckcoef=0.8, pluckmix=0.8
moogpluck2 level=0.8, legato=1, para1=0.5
pmcrotal mod=5, atone=2, btone=4
prayerbell decayscale=0.6, singswitch=0, lag=3
rhodes rate=4.85, phase=0.5, cutoff=2000, rq=0.5
rhpiano modindex=0.2, mix=0.2, lfospeed=0.4, lfodepth=0.1
rlead bps=2, seqnote1=3, seqnote2=1, seqnote3=2
rsaw lofreq = 800, hifreq = 4000 scatter >> level=0.8, offnote1=2, offnote2=1
shore noiselevel=0.1, density=100
sillyvoice level=0.5, sinefb=0.2
sine level=0.5, sinefb=0.2
sosbell ringamp=1, ringrel=0.9, wobbledepth=0.9, wobblemin=0.3, wobblemax=3.8, strikeamp=1, strikedec=0.05, strikerel=0.09, strikedepth=0.058, strikeharm=4, humamp=0.7
spacesaw filterlow=100, filterhigh=2000, rq=0.3, sidepreamp=2, midpreamp=1, lfofreq=0.1, lfodepth=0.015, balance=0.5 (0 to 1), monoswitch=0 (0 or 1)
sputter pw = 0.5, noisedepth = 0.05, pwmrate = 12, pwmdepth = 0.15, rstartf = 2000, rlf = 500, rrf = 5000, ratk = 0.5, method = 0 (0 to 4), gateSwitch = 1 (0 to 1), gateThresh = 0.5 (0 to 1), stereoWidth = 0.75 (0 to 1)
squish xlatk=0.1, xlsus=0.01, xldur=1, xlmul=0.2, pulserate=4, pulsewidth=0.5
steeldrum fharm=6, offnote=2.015
strings freqlag = 0.9, rq = 0.012, combharm = 4, sawharm = 1.5
subbass plpf=2400, plpr=1.0
subbass2 plpf=2400, plpr=1.0
supersaw noiserate=0.5
tb303 wave=0, ctf=100, res=0.2, top=1000
tremsynth modfreq=3
tribell lforate = 8, lfowidth = 0.02, cutoff = 80, rq = 0.05
triwave lforate=3, lfowidth=0.0, cutoff=400, rq=0.7
tubularbell exciterRel=0.05
tworgan qnt=1, fndmtl=1, nazard=1, bflute=1, trc=1, lrigot=1, sflute=1, vrate=3, vdepth=0.008, vdelay=0.1, vonset=0, vratevar=0.1, vdepthvar=0.1
tworgan2 vibrate=6.0, vibharm=1.017, fharm=5.04, rq=1, blend=0.83
tworgan3 vrate=6, vdepth=0.02, vdelay=0.1, vonset=0, vratevar=0.1, vdepthvar=0.1, fharm=5.04, rq=1, blend=0.83
tworgan4 lforate=4.85, lfodepth=0.006, cutoff=5000, rq=0.5, parfreq=400, parrq=1, pardb=3, blend=0.6
varcell cutoff=4800, noisemix=0.5, noiserate=12, xvib=2
varsaw offnote=1.005
vibass vibrate=9
vinsine noiseamp=0.02, mainsdepth=0.35, mainshz = 50, vrate = 2, vdepth = 0.005, sineclip = 0.825
windmaker cutoff=100, rq=0.1
wobble modfreq=4, width=0.4
wobblebass modfreqlo=1, modfreqhi=6, gate=1, wfmax=8500, reso=0.4, iphase=0.0, offnote1=0.98, offnote2=1.025
wsaw iphase1=0.4, iphase2=0.5, iphase3=0.0, offnote1=1, offnote2=0.99, offnote3=1.005
wsawbass slidetime = 0.08, cutoff = 1100, width = 0.15, detune = 1.002, preamp = 4
xylophone t60=2 virus >> prate1=1, prate2=2, len=2

SynthDefs: New functionalities

print(Player.get_fxs()) >> Lists all filters and effects available for each SynthDef instrument.

Example:

print(Player.get_fxs())

Output:

('vib', 'vibdepth', 'slide', 'sus', 'slidedelay', 'slidefrom', 'glide', 'glidedelay', 'bend', 'benddelay', 'coarse', 'striate', 'buf', 'rate', 'pshift', 'hpf', 'hpr', 'lpf', 'lpr', 'spf', 'spr', 'spfslide', 'spfend', 'swell', 'bpf', 'bpr', 'bpnoise', 'mpf', 'mpr', 'bits', 'amp', 'crush', 'dist', 'tmp', 'chop', 'chopmix', 'chopwave', 'chopi', 'tremolo', 'beat_dur', 'echo', 'echotime', 'spin', 'cut', 'room', 'mix', 'formant', 'shape', 'drive', 'squiz', 'comp', 'comp_down', 'comp_up', 'triode', 'krush', 'kutoff', 'leg', 'tanh', 'fdist', 'fdistfreq', 'fdistc', 'fdistcfreq1', 'fdistcfreq2', 'fdistcfreq3', 'fdistcfreq4', 'fdistcm1', 'fdistcm2', 'fdistcm3', 'fdistcm4', 'fdistcq1', 'fdistcq2', 'fdistcq3', 'fdistcq4', 'chorus', 'chorusrate', 'sample_atk', 'sample_sus', 'position', 'ring', 'ringl', 'ringh', 'lofi', 'lofiwow', 'lofiamp', 'phaser', 'phaserdepth', 'room2', 'mix2', 'damp2', 'revatk', 'revsus')

print(Player(NAME_OF_SYNTH).get_extra_attributes) >> Lists all extra attributes of a particular SynthDef instrument.

Example:

print(Player("wobblebass").get_extra_attributes())

Output:

\'modfreqlo\': \'1\', \'modfreqhi\': \'6\', \'gate\': \'1\', \'wfmax\': \'8500\', \'reso\': \'0.4\', \'iphase\': \'0.0\', \'offnote1\': \'0.98\', \'offnote2\': \'1.`


Sample Player: sdb >> New attribute for a sample player SynthDef to easy switch between entire sample data bases.

Example:

b1 >> play(Z, dur=4, sample1, sdb=1, amplify=1/8)

Hint: You can set your default number for a sample database in menu option Open Config File


Midi: MidiIn+++ >> Additional functionalities to MidiIn()

Call MidiIn()

midi = MidiIn()

Check all available devices

midi.device.get_ports()

Enable midi message print

midi.print_message(True) ``

Select midi device

midi = MidiIn(PORT)

Get played midi note from keyboard

midi.get_note()

Get velocity of keyboard key or pad

midi.get_velocity()

Get value from controller like knobs

midi.get_ctrl(MIDI_CHANNEL)


Midi: TempoTapper >> Implemented functionality for project TempoTapper

Project: TempoTapper

  • Check for TempoTapper device

    midi = MidiIn() midi.device.get_ports()

  • Setup TempoTapper device

    tempotap = MidiIn(PORT) tempotap.tempo_tapper(True)

  • Update tempo clock with TempoTapper

    def updateBPM():
    Clock.bpm = tempotap.tempo_tapper_bpm()
    Clock.future(1, updateBPM)
    updateBPM()


Help: Sample Charts App >> Sample Chart App in Menu > Help&Support

Sample Charts: - Generates buttons for each sample in a chosen data base

  • Plays the sound on press
  • Shows a basic code example to copy/paste it into the FoxDot IDE

Share