More examples and some minor fixes
This commit is contained in:
17
examples/sonicsynth/play_with_sonicsynth.py
Normal file
17
examples/sonicsynth/play_with_sonicsynth.py
Normal file
@ -0,0 +1,17 @@
|
||||
'''Simple example of using SonicSynth to play Ziffers melody.'''
|
||||
from sonicsynth import *
|
||||
from ziffers import *
|
||||
import numpy as np
|
||||
|
||||
melody = zparse("(q 0 4 2 5 e 3 9 4 2 s 5 3 1 6 8 3 4 5 2 1 q 0)+(0 3 -2 4 2)", key="E3", scale="Aerathitonic")
|
||||
|
||||
def build_waveform(melody, bpm):
|
||||
for item in melody.evaluated_values:
|
||||
if isinstance(item, Pitch):
|
||||
time_in_seconds = item.duration * 4 * 60 / bpm
|
||||
yield generate_square_wave(frequency=item.freq, amplitude=0.25, duration=time_in_seconds)
|
||||
|
||||
waveform = np.concatenate(list(build_waveform(melody,130)))
|
||||
|
||||
player = Playback(44100)
|
||||
player.play(waveform)
|
||||
23
examples/sonicsynth/test_arpeggio_effect.py
Normal file
23
examples/sonicsynth/test_arpeggio_effect.py
Normal file
@ -0,0 +1,23 @@
|
||||
'''Testing arpeggio effect with sonicsynth and ziffers'''
|
||||
from sonicsynth import *
|
||||
from ziffers import *
|
||||
import numpy as np
|
||||
|
||||
melody = zparse("(q 0 024 2 246 e 4 2 6 2 q 5 0)+(0 3 1 2)", key="D4", scale="Minor")
|
||||
|
||||
def build_waveform(melody, bpm):
|
||||
for item in melody.evaluated_values:
|
||||
if isinstance(item, Pitch):
|
||||
time_in_seconds = item.duration * 4 * 60 / bpm
|
||||
yield generate_sine_wave(frequency=item.freq, amplitude=0.5, duration=time_in_seconds)
|
||||
elif isinstance(item, Chord):
|
||||
time_in_seconds = item.durations[0] * 4 * 60 / bpm
|
||||
for pitch in item.pitch_classes:
|
||||
# Create "NES arpeggio effect"
|
||||
for i in range(1,len(item.durations)):
|
||||
yield generate_sine_wave(frequency=pitch.freq, amplitude=0.5, duration=time_in_seconds/(len(item.durations)*3))
|
||||
|
||||
waveform = np.concatenate(list(build_waveform(melody,180)))
|
||||
|
||||
player = Playback(44100)
|
||||
player.play(waveform)
|
||||
Reference in New Issue
Block a user