def oboe_harpsichord(midi_in, beat, temperament, velocity): soft = False #brightNess = 1.1 brightNess = 1.0 harmonics1 = [pow(x, 1.002) for x in xrange(1, 100)] plr1 = None if soft: plr1 = make_addtive_resonance(qCorrect=4.0, rollOff=2.75 / brightNess, saturate=0.0, power=1.0, post=oboe_harpsichord_filter, harmonics=harmonics1, seed=-50) else: plr1 = make_addtive_resonance(qCorrect=5.0, rollOff=2.5 / brightNess, saturate=0.1, power=1.0, post=oboe_harpsichord_filter, harmonics=harmonics1, seed=-40) notes1 = Player.play(midi_in, beat, temperament, voice=plr1, bend=True, mellow=False, velocity_correct=velocity * 1.0, flat_env=True, quick_factor=0, pure=False, pan=-1) return post_process(notes1)
def engineSection(highOnly=False): lgth = 30000 + random()*1000 generatorH = make_addtive_resonance(qCorrect = 1.0, post = femail_soprano_ah_filter, rollOff = 3.0, harmonics = xrange(1,10)) high = sf.Pcnt10(generatorH(lgth, 400 + 200*random())) if highOnly: return high #generatorL = make_addtive_resonance(qCorrect = 2.0, post = femail_soprano_ah_filter, rollOff = 3.0) harmonics = [1, 1.4, 3.1, 5.2, 7.4, 9.6] harmonics = [x + (x * balancedRandom(0.2)) for x in harmonics] generatorB = make_addtive_resonance(qCorrect = 2.0, rollOff = 2.0, harmonics=harmonics, saturate = 0.1, power = 2.0) return sf.Mix( generatorB(lgth, 32), high)
def double_pure_harpsichord(midi_in, beat, temperament, velocity, pan): harmonics1 = [pow(x, 1.001) for x in xrange(1, 100)] plr1 = make_addtive_resonance(qCorrect=5.0, rollOff=2.0, saturate=0.10, power=1.0, post=goldberg_filter_bright, harmonics=harmonics1, seed=-50) notes1 = Player.play(midi_in, beat, temperament, voice=plr1, bend=True, mellow=False, velocity_correct=velocity * 1.0, flat_env=True, quick_factor=0.0, pure=False, pan=pan, slope=((0.0, 0), (100, 0), (440, -10), (4000, -40), (20000, -30))) left1, right1 = post_process_echo(notes1) harmonics2 = harmonics1[1:10] plr1 = make_addtive_resonance(qCorrect=4.5, rollOff=3.0, saturate=0.25, power=1.1, post=goldberg_filter, harmonics=harmonics2, seed=-35) notes2 = Player.play(midi_in, beat, temperament, voice=plr1, bend=False, mellow=True, velocity_correct=velocity * 0.5, flat_env=True, quick_factor=0, pure=True, pitch_shift=0.5, pan=pan, slope=((0.0, 0), (50, 0), (220, -10), (4000, -60), (20000, -90))) left2, right2 = post_process_tremolate(notes2) return mix(left1, left2), mix(right1, right2)
def mephisto_harpsichord(midi_in, beat, temperament, velocity, pan): harmonics1 = [pow(x, 1.005) for x in xrange(1, 100)] plr1 = make_addtive_resonance(qCorrect=5.0, rollOff=2.0, saturate=0.20, power=1.1, post=goldberg_filter_bright, harmonics=harmonics1, seed=-50) notes1 = Player.play(midi_in, beat, temperament, voice=plr1, bend=True, mellow=False, velocity_correct=velocity * 1.0, flat_env=True, quick_factor=0.0, pure=False, pan=pan, slope=((0.0, 0), (100, 0), (440, -10), (4000, -30), (20000, -30))) return post_process(notes1)
def bass_harpsichord(midi_in, beat, temperament, velocity): harmonics = [pow(x, 1.01) for x in xrange(1, 100)] plr1 = make_addtive_resonance(qCorrect=4.0, rollOff=0.5, saturate=0.1, power=1.0, post=make_harpsichord_filter(power=1.05, resonance=0.9), harmonics=harmonics, seed=-40) notes1 = Player.play(midi_in, beat, temperament, voice=plr1, bend=True, mellow=False, velocity_correct=velocity * 0.75, flat_env=True, quick_factor=0, pure=False, pan=0.1) plr2 = make_addtive_resonance(qCorrect=4.0, rollOff=1.0, saturate=0.0, power=1.0, post=make_harpsichord_filter(power=0.95, resonance=0.2), harmonics=harmonics, seed=-50) notes2 = Player.play(midi_in, beat, temperament, voice=plr2, bend=False, mellow=False, velocity_correct=velocity * 1.0, flat_env=True, quick_factor=0, pure=True, pitch_shift=0.5, pan=0.8) left1, right1 = post_process(notes1) left2, right2 = post_process(notes2) return mix(left1, left2), mix(right1, right2)
def engineSection(highOnly=False): lgth = 30000 + random() * 1000 generatorH = make_addtive_resonance(qCorrect=1.0, post=femail_soprano_ah_filter, rollOff=3.0, harmonics=xrange(1, 10)) high = sf.Pcnt10(generatorH(lgth, 400 + 200 * random())) if highOnly: return high #generatorL = make_addtive_resonance(qCorrect = 2.0, post = femail_soprano_ah_filter, rollOff = 3.0) harmonics = [1, 1.4, 3.1, 5.2, 7.4, 9.6] harmonics = [x + (x * balancedRandom(0.2)) for x in harmonics] generatorB = make_addtive_resonance(qCorrect=2.0, rollOff=2.0, harmonics=harmonics, saturate=0.1, power=2.0) return sf.Mix(generatorB(lgth, 32), high)
def distant_bass_accented(midi_in, beat, temperament, velocity, pan): l = 512 plr = make_addtive_resonance(qCorrect=1.0, rollOff=2.0, saturate=0.5, power=1.1) notes1 = Player.play(midi_in, beat, temperament, voice=plr, bend=False, mellow=False, velocity_correct=velocity, flat_env=True, quick_factor=1.5, pure=False, pan=pan) plr = make_addtive_resonance(qCorrect=2.0, rollOff=4.0, saturate=0.0, power=1.0) notes2 = Player.play(midi_in, beat, temperament, voice=plr, bend=False, mellow=False, velocity_correct=velocity, flat_env=True, quick_factor=1.0, pure=True, pitch_shift=4.0, pan=pan) left1, right1 = post_process(notes1) left2, right2 = post_process(notes2) return mix(left1, left2), mix(right1, right2)
def bell(frequency = 440 , brightness = 1.0, length = 10000, hit = 1.0, isBowl = True): with SFMemoryZone(): saturate = 0.0 qCorrect = 3.0 if frequency > 2000: # Ouch. frequency *= 0.5 saturate = 0.1 qCorrect = 1.0 qc = 1.0 if brightness < 2.0 else 3.0 harmonics = dullRange if brightness < 2.0 else brightRange harmonics = tweakRandom(harmonics(), 0.05) if isBowl: length += 4000 + length with SFMemoryZone(): gen = make_addtive_resonance( qCorrect = qCorrect, post = None, rollOff = 3.0, power = brightness, harmonics = harmonics, saturate = saturate ) sig = gen(length, frequency).keep() # Hit processing with resonance if is a bowl. peak = 2000 if isBowl else 1 env = sf.NumericShape( (0, frequency if isBowl else 18000), (peak, 18000 if isBowl else frequency * 4.0), (length, frequency) ) res = sf.NumericShape((0,1.0),(length,3.0 if isBowl else 1.5)) #sig = sf.ShapedLadderLowPass(sig,env,res) sig = sf.ShapedRBJLowPass(sig, env, res) # A mixture of linear and exponential enveloping. env = sf.Multiply( sf.NumericShape( (0, 0), (peak, 1), (length, 0)), sf.SimpleShape((0, 0), (peak, 0), (length, -30)) ) out = sf.FixSize(sf.Multiply(env, sig)) return sf.SwapSignal(out)
def distant_string(midi_in, beat, temperament, velocity): l = 512 plr = make_addtive_resonance(qCorrect=2.0, rollOff=1.5, power=1.0, post=violin_filter) notes1 = Player.play(midi_in, beat, temperament, voice=plr, bend=True, mellow=False, velocity_correct=velocity * 1.5, flat_env=True, quick_factor=1.0, pan=-1) return post_process(notes1)
def distant_bass(midi_in, beat, temperament, velocity, pan): l = 512 plr = make_addtive_resonance(qCorrect=1.0, rollOff=2.0, saturate=0.5, power=1.1) notes1 = Player.play(midi_in, beat, temperament, voice=plr, bend=False, mellow=False, velocity_correct=velocity, flat_env=True, quick_factor=1.5, pure=True, pan=pan) return post_process(notes1)
def distant_oboe(midi_in, beat, temperament, velocity, pan): plr = make_addtive_resonance(qCorrect=2.0, rollOff=1.5, saturate=0.1, power=1.4, post=oboe_filter) notes1 = Player.play(midi_in, beat, temperament, voice=plr, bend=False, mellow=False, velocity_correct=velocity, flat_env=True, quick_factor=0.5, pure=True, pan=pan) return post_process_tremolate(notes1)
def distant_soft_accent(midi_in, beat, temperament, velocity, pan): plr = make_addtive_resonance(qCorrect=4.0, rollOff=4.0, saturate=0.0, power=1.0, seed=-40) notes1 = Player.play(midi_in, beat, temperament, voice=plr, bend=False, mellow=True, velocity_correct=velocity, flat_env=False, quick_factor=0.25, pure=True, pitch_shift=2.0, pan=pan) return post_process_tremolate(notes1, rate=3.75)
def distant_oboe2(midi_in, beat, temperament, velocity): midi = Midi.legato(midi_in, beat, 200) plr = make_addtive_resonance(qCorrect=1.5, rollOff=1.5, saturate=0.1, power=1.4, post=oboe_filter) notes1 = Player.play(midi, beat, temperament, voice=plr, bend=False, mellow=False, velocity_correct=velocity, flat_env=True, quick_factor=1.0, pure=True, pan=-1) return post_process(notes1)
def distant_string_pipe_bass(midi_in, beat, temperament, velocity, pan): midi = Midi.legato(midi_in, beat, 128) plr = make_addtive_resonance(qCorrect=4.0, rollOff=4.5, saturate=0.05, power=1.02, seed=-40) #plr = make_addtive_resonance(qCorrect=4.0, rollOff=4.0, saturate=0.0, power=1.1, seed = -40) notes1 = Player.play(midi_in, beat, temperament, voice=plr, bend=True, mellow=False, velocity_correct=velocity, flat_env=False, quick_factor=1.0, pure=False, pitch_shift=0.5, pan=pan) return post_process(notes1)
def harpsichord(midi_in, beat, temperament, velocity): harmonics = [pow(x, 1.01) for x in xrange(1, 100)] plr = make_addtive_resonance(qCorrect=4.0, rollOff=0.5, saturate=0.1, power=1.0, post=make_harpsichord_filter(power=1.05), harmonics=harmonics, seed=-40) notes1 = Player.play(midi_in, beat, temperament, voice=plr, bend=True, mellow=False, velocity_correct=velocity * 1.5, flat_env=True, quick_factor=0, pure=False, pan=-1) return post_process(notes1)
def distant_flute_pipe(midi_in, beat, temperament, velocity, pan): harmonics = [pow(x, 1.00) for x in xrange(1, 16)] midi = Midi.legato(midi_in, beat, 128) plr = make_addtive_resonance(qCorrect=4.0, rollOff=4.5, saturate=0.00, power=1.001, seed=-30, harmonics=harmonics) notes1 = Player.play(midi, beat, temperament, voice=plr, bend=False, mellow=False, velocity_correct=velocity, flat_env=False, quick_factor=0.5, pure=True, pitch_shift=1.0, pan=pan) return post_process(notes1)
def _golberg_harpsichord(midi_in, beat, temperament, velocity, slope, pan): harmonics1 = [pow(x, 1.002) for x in xrange(1, 100)] plr1 = make_addtive_resonance(qCorrect=5.0, rollOff=2.5, saturate=0.1, power=1.0, post=goldberg_filter, harmonics=harmonics1, seed=-30 if slope else -50) notes1 = Player.play(midi_in, beat, temperament, voice=plr1, bend=True if slope else False, mellow=False, velocity_correct=velocity * 1.0, flat_env=True, quick_factor=0, pure=False, pan=pan, slope=slope) return post_process(notes1)
def primeBell(frequency = 440 , brightness = 1.0, length = 10000, hit = 1.0, isBowl = True): with SFMemoryZone(): saturate = 0.0 qCorrect = 3.0 if frequency > 2000: # Ouch. frequency *= 0.5 saturate = 0.1 qCorrect = 1.0 qc = 1.0 if brightness < 2.0 else 3.0 harmonics = dullRange if brightness < 2.0 else brightRange harmonics = tweakRandom(harmonics(), 0.05) if isBowl: length += 4000 + length with SFMemoryZone(): gen = make_addtive_resonance( qCorrect = qCorrect, post = None, rollOff = 3.0, power = brightness, harmonics = harmonics, seed = -40, saturate = saturate ) sig = gen(length, frequency).keep() sig = sf.Mix( sig, sf.RBJLowPass( sf.Multiply( sf.WhiteNoise(30), sf.LinearShape((0, hit/4.0), (30,0)) ), frequency * 4.0, 2.0 ) ) peak = 2000 if isBowl else 1 env = sf.LinearShape( (0, frequency if isBowl else 18000), (peak, 18000 if isBowl else frequency * 4.0), (length, frequency) ) res = sf.LinearShape((1, 1.0),(length,3.0 if isBowl else 1.5)) sig = sf.ShapedRBJLowPass(sig, env, res) # A mixture of linear and exponential enveloping. env = sf.Multiply( sf.LinearShape( (0, 0), (peak, 1), (length, 0)), sf.ExponentialShape((0, 0), (peak, 0), (length, -30)) ) out = sf.FixSize(sf.Multiply(env, sig)) return out.keep()