def filtered_square(delay, note, amp, dur=1.): a = np.sqrt(np.linspace(1., 0., 15)) t = pyo.HarmTable(a.tolist()) dur *= 2. env = pyo.Fader(fadein=.02, fadeout=0.02, dur=dur * 0.9, mul=amp).play(dur=2.5 * dur, delay=delay) adsr = pyo.Adsr(attack=dur * 0.05, sustain=0.707, decay=0.1 * dur, release=dur * 0.7, dur=dur * 0.9, mul=amp).play(dur=2.5 * dur, delay=delay) osc = pyo.Osc(t, freq=pyo.midiToHz(note), mul=adsr).mix(1) rev = pyo.Freeverb(osc, size=1., damp=0.5, bal=1., mul=env).play(dur=2.5 * dur, delay=delay) # rev.out(delay=delay, dur=dur) eq = pyo.Biquad(rev, freq=500, q=1., type=2).play(dur=2.5 * dur, delay=delay) eq.out(delay=delay, dur=dur) # eq = None return osc, env, rev, eq
def filtered_saw(delay, note, amp, dur=1.): t = pyo.SawTable(order=15).normalize() dur *= 2. env = pyo.Fader(fadein=.02, fadeout=0.02, dur=dur * 0.9, mul=amp).play(dur=2.5 * dur, delay=delay) adsr = pyo.Adsr(attack=dur * 0.05, decay=0.05 * dur, sustain=0.3, release=dur * 0.7, dur=dur * 0.9, mul=amp).play(dur=2.5 * dur, delay=delay) osc = pyo.Osc(t, freq=pyo.midiToHz(note), mul=adsr).mix(1) rev = pyo.Freeverb(osc, size=1., damp=0.5, bal=1., mul=env).play(dur=2.5 * dur, delay=delay) # rev.out(delay=delay, dur=dur) eq = pyo.Biquad(rev, freq=800, q=1., type=0).play(dur=2.5 * dur, delay=delay) eq.out(delay=delay, dur=dur) # eq = None return osc, env, rev, eq
def simple_sine(delay, note, amp, dur=1.): # -- Nice, angelic -- env = pyo.Adsr(attack=dur*0.1, sustain=0.707, decay=0.1*dur, release=dur*0.5, dur=dur*0.9, mul=amp).play(delay=delay, dur=2.5*dur) osc = pyo.Sine(freq=pyo.midiToHz(note), mul=env).mix(1) osc.out(delay=delay, dur=dur) return osc, env
def simple_sine(delay, note, amp, dur=1.): # -- Nice, angelic -- env = pyo.Adsr(attack=dur * 0.1, sustain=0.707, decay=0.1 * dur, release=dur * 0.5, dur=dur * 0.9, mul=amp).play(delay=delay, dur=2.5 * dur) osc = pyo.Sine(freq=pyo.midiToHz(note), mul=env).mix(1) osc.out(delay=delay, dur=dur) return osc, env
def callback(self,i): # if i == self.n_beats_bar : # self.barCount += 1 # if self.barCount >= self.data.n_bars: # self.barCount = 0 # # print i # print self.pitch_seq # print self.pitch_map # ip=self.pitch_seq[i] self.pitch.setValue(pyo.midiToHz(self.pitch_map[ip])) #(i+self.barCount*self.n_per_bar)%len(self.pitch_seq)]])) amp=(self.amp_map[self.amp_seq[i]]-self.data.amp_thresh)/(1.0-self.data.amp_thresh) amp=max(0,amp) self.amp.setValue(amp) # (i+self.barCount*self.n_per_bar)%len(self.amp_seq)]])
def filtered_saw(delay, note, amp, dur=1.): t = pyo.SawTable(order=15).normalize() dur *= 2. env = pyo.Fader(fadein=.02, fadeout=0.02, dur=dur*0.9, mul=amp).play(dur=2.5*dur, delay=delay) adsr = pyo.Adsr(attack=dur*0.05, decay=0.05*dur, sustain=0.3, release=dur*0.7, dur=dur*0.9, mul=amp).play(dur=2.5*dur, delay=delay) osc = pyo.Osc(t, freq=pyo.midiToHz(note), mul=adsr).mix(1) rev = pyo.Freeverb(osc, size=1., damp=0.5, bal=1., mul=env).play(dur=2.5*dur, delay=delay) # rev.out(delay=delay, dur=dur) eq = pyo.Biquad(rev, freq=800, q=1., type=0).play(dur=2.5*dur, delay=delay) eq.out(delay=delay, dur=dur) # eq = None return osc, env, rev, eq
def rand(self): x=random.random() if self.scale == 'lin': return self.min*x+self.max*(1.0-x) elif self.scale == 'log': K1=math.log(self.min) K2=math.log(self.max)-K1 return math.exp(K1+K2*x) elif self.scale == 'int' or self.scale == 'choice': return random.randrange(self.min,self.max) elif self.scale == 'miditohertz': return pyo.midiToHz(random.randrange(self.min,self.max)) else: print " I don't know how to do this "
def filtered_square(delay, note, amp, dur=1.): a = np.sqrt(np.linspace(1.,0.,15)) t = pyo.HarmTable(a.tolist()) dur *= 2. env = pyo.Fader(fadein=.02, fadeout=0.02, dur=dur*0.9, mul=amp).play(dur=2.5*dur, delay=delay) adsr = pyo.Adsr(attack=dur*0.05, sustain=0.707, decay=0.1*dur, release=dur*0.7, dur=dur*0.9, mul=amp).play(dur=2.5*dur, delay=delay) osc = pyo.Osc(t, freq=pyo.midiToHz(note), mul=adsr).mix(1) rev = pyo.Freeverb(osc, size=1., damp=0.5, bal=1., mul=env).play(dur=2.5*dur, delay=delay) # rev.out(delay=delay, dur=dur) eq = pyo.Biquad(rev, freq=500, q=1., type=2).play(dur=2.5*dur, delay=delay) eq.out(delay=delay, dur=dur) # eq = None return osc, env, rev, eq
def rand(self): x = random.random() if self.scale == 'lin': return self.min * x + self.max * (1.0 - x) elif self.scale == 'log': K1 = math.log(self.min) K2 = math.log(self.max) - K1 return math.exp(K1 + K2 * x) elif self.scale == 'int' or self.scale == 'choice': return random.randrange(self.min, self.max) elif self.scale == 'miditohertz': return pyo.midiToHz(random.randrange(self.min, self.max)) else: print " I don't know how to do this "
def __init__(self, key, verbose=False): fund = pyo.midiToHz(key) self.freqs = [i*fund for i in range(1,5)] self.ratios = [5,4,2,2] self.indices = [0]*4 self.muls = [0.15, 0.15, 0.30, 0.22] self.muls = [mul/2 for mul in self.muls] self.dindices = [0]*4 self.dmuls = [0]*4 self.homewardBound = [False]*4 self.voices = [] for i in range(4): j=i+1 voice=pyo.FM(carrier=[self.freqs[i],self.freqs[i]]).out() voice.setRatio(self.ratios[i]) voice.setIndex(self.indices[i]) voice.setMul(self.muls[i]) self.voices.append(voice) self.ticker = 0 self.jspeed=1./50 self.dspeed=1./100 self.verbose = verbose self.pressed = sortedset() self.handlers = { 'LJLR' : self.handle_LJLR, 'LJUD' : self.handle_LJUD, 'RJLR' : self.handle_RJLR, 'RJUD' : self.handle_RJUD, 'L1' : self.handle_L1, 'R1' : self.handle_R1, 'L2' : self.handle_L2, 'R2' : self.handle_R2, 'B1' : self.handle_B1, 'B2' : self.handle_B2, 'B3' : self.handle_B3, 'B4' : self.handle_B4, 'DPLR' : self.handle_DPLR, 'DPUD' : self.handle_DPUD, }
def callback(self, i): # if i == self.n_beats_bar : # self.barCount += 1 # if self.barCount >= self.data.n_bars: # self.barCount = 0 # # print i # print self.pitch_seq # print self.pitch_map # ip = self.pitch_seq[i] self.pitch.setValue( pyo.midiToHz(self.pitch_map[ip]) ) #(i+self.barCount*self.n_per_bar)%len(self.pitch_seq)]])) amp = (self.amp_map[self.amp_seq[i]] - self.data.amp_thresh) / (1.0 - self.data.amp_thresh) amp = max(0, amp) self.amp.setValue( amp) # (i+self.barCount*self.n_per_bar)%len(self.amp_seq)]])
def __init__(self, note, duration, amp=1): self.note = note self.duration = duration self.amp = amp self.frequency = midiToHz(self.note)
def _cloud(self): self.amp.dur = 0.1 freq = choice(midiToHz(self.notes)) self.osc.freq = [freq, freq * 1.003] self.amp.play()
def handle_R2(self, value): if debug: print 'Melodizer, handle_R2: ', value dmidi = (self.add + value)*2/self.mul freq = pyo.midiToHz(self.key+self.scale(self.currentNote)+dmidi) self.voices[self.vn].setFreq(freq)
def play(self, note, amp): f = pyo.midiToHz(self.key + self.tonality.request(note)) self.voices[note].play(f, amp)
def play(self, note, amp): f = pyo.midiToHz(self.key+self.tonality.request(note)) vn = self.poly.request() self.voices[vn].play(f, amp)
scale = [x[0] for x in [c3,d3,e3,g3,a3,c4,d4,e4,g4,a4,c0,c5]] hexscale = [x[1] for x in [c3,d3,e3,g3,a3,c4,d4,e4,g4,a4,c0,c5]] strscale = [x[2] for x in [c3,d3,e3,g3,a3,c4,d4,e4,g4,a4,c0,c5]] notecoords = [x[3] for x in [c3,d3,e3,g3,a3,c4,d4,e4,g4,a4,c0,c5]] Note = text(height=2,text="Note Played", pos=(0,0,0),align='center', depth=-0.3, color=color.green) rt = shapes.rectangle(pos=(0,-3), width=11, height=1) extrusion(shape=rt) points(pos=[(0,-3,0)], size=35, color=color.red) notepos = sphere(pos=(0,-3,0), radius=0.5, color=color.blue) repeat=None sleep(1) s.start() while True: r = xzToNote(get_coords()) #print r y=midiToHz(scale[r]) if repeat !=r: a = Sine(freq=y, mul=(1)).out() Note.text=strscale[r] print(strscale[r]) repeat = r #Note.text=strscale[r] #notepos.pos=notecoords[r] #print(strscale[r])#,notecoords[r]) #extrusion(shape=notept) #sleep(.25*[1,2,4][randint(0,2)]) s.stop()
def play(self, note, amp): f = pyo.midiToHz(self.key+self.scale(self.chord+triad(note))) vn = self.poly.request() self.voices[vn].play(f, amp)
def play(self, note, amp): f = pyo.midiToHz(self.key+self.tonality.request(note)) self.voices[note].play(f, amp)
def play(self, note, amp): f = pyo.midiToHz(self.key + self.tonality.request(note)) vn = self.poly.request() print vn self.voices[vn].play(f, amp)
def play(self): self.vn = self.poly.request() freq = pyo.midiToHz(self.key+self.scale(self.currentNote)) self.voices[self.vn].play(freq, 0.25)
c3=[48,0x84,"C3"] d3=[50,0x44,"D3"] e3=[52,0x24,"E3"] g3=[55,0x14,"G3"] a3=[57,0x0c,"A3"] c4=[60,0x82,"C4"] d4=[62,0x42,"D4"] e4=[64,0x22,"E4"] g4=[67,0x12,"G4"] a4=[69,0x0A,"A4"] #c5=72 scale = [x[0] for x in [c3,d3,e3,g3,a3,c4,d4,e4,g4,a4]]#,c5] s.start() for x in scale: y=midiToHz(x) a = Sine(freq=y, mul=(1)).out() sleep(2) s.stop() """ #scale_degrees = [midiToHz(m+7) for m in [36,43.01,48,55.01,60]] #print scale_degrees #for x in scale_degrees: while True: #for x in range(40,500): x = int(raw_input("Enter midi number: ")) x=midiToHz(x) a = Sine(freq=x, mul=(1)).out() #b = Sine(freq=(x+3), mul=(1)).out()
import matplotlib.pyplot as plt import numpy as np from pyo import midiToHz, Choice, Port, Sine, SuperSaw, FM, Delay, STRev # pylint: disable=E0611 from load_data import fetch_data_iter from pyo_server import server as s means = [np.mean(m) for m in fetch_data_iter] range_ = [(i - np.min(means)) / np.ptp(means) for i in means] means = [(i * 100) for i in range_] pitches = [midiToHz(m) for m in means] # Add more voices here to generate a simple counterpoint choice = Choice(choice=pitches, freq=1) # Two simple instruments lfdetune = Sine(freq=0.1, mul=.07, add=.07) instrument1 = SuperSaw(freq=choice, detune=lfdetune, mul=.8) lfind = Sine(freq=0.5, phase=0.5, mul=3, add=3) instrument2 = FM(carrier=choice, ratio=1.0025, index=lfind, mul=.8) # Send instruments output to delay src_sum = instrument1.mix(2) + instrument2.mix(2) lfdel = Sine(.1, mul=.003, add=.005) comb = Delay(src_sum, delay=lfdel, feedback=.5) # Send two resulting signals to reverb and output out_sum = src_sum + comb rev = out_sum.out()
def nucleotide_to_hz(nucleo): # first make it a midi. This is cute midi_value = nucleotide_midi[nucleo] return midiToHz(midi_value)
def frequency(self): return midiToHz(self.note)