python hello_drumsynth_1.py
python hello_drumsynth_2.py
python hello_drumsynth_3.py
- virtualenv -p /usr/bin/python3.6 .
- source bin/activate
- pip install -r requirements.txt
- {...}
- deactivate
| bin | |
| include | |
| lib | |
| share | |
| data | |
| *.sunvox | |
| *.pyc | |
python hello_drumsynth_1.py
python hello_drumsynth_2.py
python hello_drumsynth_3.py
| from rv.api import Project | |
| from rv.modules.drumsynth import DrumSynth | |
| from rv.pattern import Pattern | |
| from rv.note import Note | |
| if __name__=="__main__": | |
| proj=Project() | |
| drum=DrumSynth(x=256) | |
| proj.attach_module(drum) | |
| proj.connect(proj.modules[1], | |
| proj.modules[0]) | |
| pat=Pattern(lines=64, | |
| tracks=1) | |
| def notefn(track, i, j): | |
| if 0==i%4: | |
| return Note(note=1, | |
| module=2) | |
| else: | |
| return Note() | |
| pat.set_via_fn(notefn) | |
| proj.patterns.append(pat) | |
| with open("hello_drumsynth_1.sunvox", 'wb') as f: | |
| proj.write_to(f) |
| from rv.api import Project | |
| from rv.modules.drumsynth import DrumSynth | |
| from rv.pattern import Pattern | |
| from rv.note import Note | |
| import random | |
| def handle_empty(fn): | |
| def wrapped(*args, **kwargs): | |
| resp=fn(*args, **kwargs) | |
| return Note() if not resp else resp | |
| return wrapped | |
| def generate(notefn, | |
| filename, | |
| lines=64, | |
| tracks=1, | |
| x=256, | |
| seed=13): | |
| random.seed(seed) | |
| proj=Project() | |
| drum=DrumSynth(x=x) | |
| proj.attach_module(drum) | |
| proj.connect(proj.modules[1], | |
| proj.modules[0]) | |
| pat=Pattern(lines=lines, | |
| tracks=tracks) | |
| pat.set_via_fn(notefn) | |
| proj.patterns.append(pat) | |
| with open(filename, 'wb') as f: | |
| proj.write_to(f) | |
| if __name__=="__main__": | |
| @handle_empty | |
| def notefn(track, i, j): | |
| if j==0 and 0==i%4: # bass | |
| return Note(note=49, module=2) | |
| elif j==1 and 4==i%8: # snare | |
| return Note(note=80, module=2) | |
| elif j==2 and 2==i%4: # hat | |
| return Note(note=65, module=2) | |
| elif j==3 and 1==i%2 and random.random() < 0.3: # tom | |
| return Note(note=random.choice([109, 110, 111, 112]), module=2) | |
| elif j==4 and i==54: # hiss | |
| return Note(note=77, module=2) | |
| generate(notefn, | |
| filename="hello_drumsynth_2.sunvox", | |
| seed=14, | |
| tracks=5) |
| from rv.api import Project | |
| from rv.pattern import Pattern | |
| from rv.note import Note | |
| import random | |
| def handle_empty(fn): | |
| def wrapped(*args, **kwargs): | |
| resp=fn(*args, **kwargs) | |
| return Note() if not resp else resp | |
| return wrapped | |
| def generate(notefn, | |
| filename, | |
| lines=64, | |
| tracks=1, | |
| seed=13): | |
| random.seed(seed) | |
| from rv.modules.drumsynth import DrumSynth | |
| from rv.modules.distortion import Distortion | |
| from rv.modules.reverb import Reverb | |
| proj=Project() | |
| for i, Mod in enumerate([Reverb, | |
| Distortion, | |
| DrumSynth]): | |
| x=512-128*(i+1) | |
| proj.attach_module(Mod(x=x)) | |
| proj.connect(proj.modules[i+1], | |
| proj.modules[i]) | |
| pat=Pattern(lines=lines, | |
| tracks=tracks) | |
| pat.set_via_fn(notefn) | |
| proj.patterns.append(pat) | |
| with open(filename, 'wb') as f: | |
| proj.write_to(f) | |
| if __name__=="__main__": | |
| @handle_empty | |
| def notefn(track, i, j): | |
| if j==0 and 0==i%4: # bass | |
| return Note(note=49, | |
| module=4) | |
| elif j==1 and 4==i%8: # snare | |
| return Note(note=80, | |
| module=4) | |
| elif j==2 and 2==i%4: # hat | |
| return Note(note=65, | |
| module=4) | |
| elif j==3 and 1==i%2 and random.random() < 0.3: # tom | |
| return Note(note=random.choice([109, 110, 111, 112]), | |
| vel=64, # NB | |
| module=4) | |
| elif j==4 and i==54: # hiss | |
| return Note(note=77, | |
| module=4) | |
| elif j==5 and 0==i%4: # distortion | |
| return Note(module=3, | |
| ctl=3*(2**8), | |
| val=int(random.random()*(2**14))) | |
| elif j==6 and 0==i%8: # reverb | |
| return Note(module=2, | |
| ctl=2*(2**8), | |
| val=int(random.random()*(2**11))) | |
| generate(notefn, | |
| filename="hello_drumsynth_3.sunvox", | |
| seed=14, | |
| tracks=7) |
| attrs==19.1.0 # https://stackoverflow.com/questions/58189683/typeerror-attrib-got-an-unexpected-keyword-argument-convert | |
| git+https://github.com//metrasynth/radiant-voices |