diff --git a/docs/_static/audio/acid_house.wav b/docs/_static/audio/acid_house.wav
index ab74994..69e3969 100644
Binary files a/docs/_static/audio/acid_house.wav and b/docs/_static/audio/acid_house.wav differ
diff --git a/docs/_static/audio/afrobeat_pattern.wav b/docs/_static/audio/afrobeat_pattern.wav
index 0ead377..d9d0d2c 100644
Binary files a/docs/_static/audio/afrobeat_pattern.wav and b/docs/_static/audio/afrobeat_pattern.wav differ
diff --git a/docs/_static/audio/arpeggio.wav b/docs/_static/audio/arpeggio.wav
index b1323e6..dc8da73 100644
Binary files a/docs/_static/audio/arpeggio.wav and b/docs/_static/audio/arpeggio.wav differ
diff --git a/docs/_static/audio/articulations.wav b/docs/_static/audio/articulations.wav
index 3318461..3e9ebe6 100644
Binary files a/docs/_static/audio/articulations.wav and b/docs/_static/audio/articulations.wav differ
diff --git a/docs/_static/audio/bossa_nova.wav b/docs/_static/audio/bossa_nova.wav
index b10c34c..bf120b9 100644
Binary files a/docs/_static/audio/bossa_nova.wav and b/docs/_static/audio/bossa_nova.wav differ
diff --git a/docs/_static/audio/bossa_nova_pattern.wav b/docs/_static/audio/bossa_nova_pattern.wav
index 36c851a..25dfa88 100644
Binary files a/docs/_static/audio/bossa_nova_pattern.wav and b/docs/_static/audio/bossa_nova_pattern.wav differ
diff --git a/docs/_static/audio/cajon.wav b/docs/_static/audio/cajon.wav
index b044179..119e1e4 100644
Binary files a/docs/_static/audio/cajon.wav and b/docs/_static/audio/cajon.wav differ
diff --git a/docs/_static/audio/chords_basic.wav b/docs/_static/audio/chords_basic.wav
index 8c0268a..51af058 100644
Binary files a/docs/_static/audio/chords_basic.wav and b/docs/_static/audio/chords_basic.wav differ
diff --git a/docs/_static/audio/complete_rock.wav b/docs/_static/audio/complete_rock.wav
index bcfa7d1..954f93d 100644
Binary files a/docs/_static/audio/complete_rock.wav and b/docs/_static/audio/complete_rock.wav differ
diff --git a/docs/_static/audio/dhol.wav b/docs/_static/audio/dhol.wav
index 46e8909..830a667 100644
Binary files a/docs/_static/audio/dhol.wav and b/docs/_static/audio/dhol.wav differ
diff --git a/docs/_static/audio/dholak.wav b/docs/_static/audio/dholak.wav
index 31d46dc..9d2d177 100644
Binary files a/docs/_static/audio/dholak.wav and b/docs/_static/audio/dholak.wav differ
diff --git a/docs/_static/audio/djembe.wav b/docs/_static/audio/djembe.wav
index e4d59e1..0914e93 100644
Binary files a/docs/_static/audio/djembe.wav and b/docs/_static/audio/djembe.wav differ
diff --git a/docs/_static/audio/dub_reggae.wav b/docs/_static/audio/dub_reggae.wav
index 2d47a24..ed47281 100644
Binary files a/docs/_static/audio/dub_reggae.wav and b/docs/_static/audio/dub_reggae.wav differ
diff --git a/docs/_static/audio/dynamics.wav b/docs/_static/audio/dynamics.wav
index 84363f0..c2918fa 100644
Binary files a/docs/_static/audio/dynamics.wav and b/docs/_static/audio/dynamics.wav differ
diff --git a/docs/_static/audio/ensemble.wav b/docs/_static/audio/ensemble.wav
index 02d8754..4b2778a 100644
Binary files a/docs/_static/audio/ensemble.wav and b/docs/_static/audio/ensemble.wav differ
diff --git a/docs/_static/audio/filter_ramp.wav b/docs/_static/audio/filter_ramp.wav
index 3e8da9f..49e88d3 100644
Binary files a/docs/_static/audio/filter_ramp.wav and b/docs/_static/audio/filter_ramp.wav differ
diff --git a/docs/_static/audio/jazz_ballad.wav b/docs/_static/audio/jazz_ballad.wav
index c321763..48ea8a4 100644
Binary files a/docs/_static/audio/jazz_ballad.wav and b/docs/_static/audio/jazz_ballad.wav differ
diff --git a/docs/_static/audio/legato_glide.wav b/docs/_static/audio/legato_glide.wav
index f8ca3b1..b3a27e0 100644
Binary files a/docs/_static/audio/legato_glide.wav and b/docs/_static/audio/legato_glide.wav differ
diff --git a/docs/_static/audio/march_snare.wav b/docs/_static/audio/march_snare.wav
index 0ee2035..eedb11e 100644
Binary files a/docs/_static/audio/march_snare.wav and b/docs/_static/audio/march_snare.wav differ
diff --git a/docs/_static/audio/metal_blast.wav b/docs/_static/audio/metal_blast.wav
index 7eca53b..48aeb4e 100644
Binary files a/docs/_static/audio/metal_blast.wav and b/docs/_static/audio/metal_blast.wav differ
diff --git a/docs/_static/audio/mridangam.wav b/docs/_static/audio/mridangam.wav
index 61d1a24..c3a7f08 100644
Binary files a/docs/_static/audio/mridangam.wav and b/docs/_static/audio/mridangam.wav differ
diff --git a/docs/_static/audio/piano_hold.wav b/docs/_static/audio/piano_hold.wav
index 1c78349..ee21b5e 100644
Binary files a/docs/_static/audio/piano_hold.wav and b/docs/_static/audio/piano_hold.wav differ
diff --git a/docs/_static/audio/playback_basic.wav b/docs/_static/audio/playback_basic.wav
index 68bb476..303215c 100644
Binary files a/docs/_static/audio/playback_basic.wav and b/docs/_static/audio/playback_basic.wav differ
diff --git a/docs/_static/audio/quickstart.wav b/docs/_static/audio/quickstart.wav
index e360c3b..6536421 100644
Binary files a/docs/_static/audio/quickstart.wav and b/docs/_static/audio/quickstart.wav differ
diff --git a/docs/_static/audio/rock_beat.wav b/docs/_static/audio/rock_beat.wav
index 850ffcf..9caf847 100644
Binary files a/docs/_static/audio/rock_beat.wav and b/docs/_static/audio/rock_beat.wav differ
diff --git a/docs/_static/audio/salsa_layered.wav b/docs/_static/audio/salsa_layered.wav
index d8a25cd..598e55f 100644
Binary files a/docs/_static/audio/salsa_layered.wav and b/docs/_static/audio/salsa_layered.wav differ
diff --git a/docs/_static/audio/salsa_pattern.wav b/docs/_static/audio/salsa_pattern.wav
index ce898d8..4aaaecc 100644
Binary files a/docs/_static/audio/salsa_pattern.wav and b/docs/_static/audio/salsa_pattern.wav differ
diff --git a/docs/_static/audio/song_sections.wav b/docs/_static/audio/song_sections.wav
index 4bdd94b..e5cf8d4 100644
Binary files a/docs/_static/audio/song_sections.wav and b/docs/_static/audio/song_sections.wav differ
diff --git a/docs/_static/audio/strum.wav b/docs/_static/audio/strum.wav
index 0bc5d04..ce7153a 100644
Binary files a/docs/_static/audio/strum.wav and b/docs/_static/audio/strum.wav differ
diff --git a/docs/_static/audio/swell.wav b/docs/_static/audio/swell.wav
index 350b1d7..d1acbe2 100644
Binary files a/docs/_static/audio/swell.wav and b/docs/_static/audio/swell.wav differ
diff --git a/docs/_static/audio/synth_accordion.wav b/docs/_static/audio/synth_accordion.wav
index 4e1bc0c..54f1ad5 100644
Binary files a/docs/_static/audio/synth_accordion.wav and b/docs/_static/audio/synth_accordion.wav differ
diff --git a/docs/_static/audio/synth_acoustic_guitar.wav b/docs/_static/audio/synth_acoustic_guitar.wav
index 330bbfc..4d2b207 100644
Binary files a/docs/_static/audio/synth_acoustic_guitar.wav and b/docs/_static/audio/synth_acoustic_guitar.wav differ
diff --git a/docs/_static/audio/synth_bagpipe.wav b/docs/_static/audio/synth_bagpipe.wav
index addf180..978768b 100644
Binary files a/docs/_static/audio/synth_bagpipe.wav and b/docs/_static/audio/synth_bagpipe.wav differ
diff --git a/docs/_static/audio/synth_banjo.wav b/docs/_static/audio/synth_banjo.wav
index 62f1614..ff2c1cb 100644
Binary files a/docs/_static/audio/synth_banjo.wav and b/docs/_static/audio/synth_banjo.wav differ
diff --git a/docs/_static/audio/synth_bass_guitar.wav b/docs/_static/audio/synth_bass_guitar.wav
index 299d416..b4693ca 100644
Binary files a/docs/_static/audio/synth_bass_guitar.wav and b/docs/_static/audio/synth_bass_guitar.wav differ
diff --git a/docs/_static/audio/synth_cello.wav b/docs/_static/audio/synth_cello.wav
index 3caba25..a8b5966 100644
Binary files a/docs/_static/audio/synth_cello.wav and b/docs/_static/audio/synth_cello.wav differ
diff --git a/docs/_static/audio/synth_choir.wav b/docs/_static/audio/synth_choir.wav
index 2b48aad..65b1551 100644
Binary files a/docs/_static/audio/synth_choir.wav and b/docs/_static/audio/synth_choir.wav differ
diff --git a/docs/_static/audio/synth_clarinet.wav b/docs/_static/audio/synth_clarinet.wav
index 29291ba..df448df 100644
Binary files a/docs/_static/audio/synth_clarinet.wav and b/docs/_static/audio/synth_clarinet.wav differ
diff --git a/docs/_static/audio/synth_didgeridoo.wav b/docs/_static/audio/synth_didgeridoo.wav
index dd1e505..fdecd0b 100644
Binary files a/docs/_static/audio/synth_didgeridoo.wav and b/docs/_static/audio/synth_didgeridoo.wav differ
diff --git a/docs/_static/audio/synth_drift.wav b/docs/_static/audio/synth_drift.wav
new file mode 100644
index 0000000..f43fe1f
Binary files /dev/null and b/docs/_static/audio/synth_drift.wav differ
diff --git a/docs/_static/audio/synth_electric_guitar.wav b/docs/_static/audio/synth_electric_guitar.wav
index e75860a..2419f9e 100644
Binary files a/docs/_static/audio/synth_electric_guitar.wav and b/docs/_static/audio/synth_electric_guitar.wav differ
diff --git a/docs/_static/audio/synth_flute.wav b/docs/_static/audio/synth_flute.wav
index 604d7dd..3a95a5a 100644
Binary files a/docs/_static/audio/synth_flute.wav and b/docs/_static/audio/synth_flute.wav differ
diff --git a/docs/_static/audio/synth_fm.wav b/docs/_static/audio/synth_fm.wav
index 6b8992f..b8df670 100644
Binary files a/docs/_static/audio/synth_fm.wav and b/docs/_static/audio/synth_fm.wav differ
diff --git a/docs/_static/audio/synth_granular.wav b/docs/_static/audio/synth_granular.wav
index 4d19cba..5144501 100644
Binary files a/docs/_static/audio/synth_granular.wav and b/docs/_static/audio/synth_granular.wav differ
diff --git a/docs/_static/audio/synth_hard_sync.wav b/docs/_static/audio/synth_hard_sync.wav
new file mode 100644
index 0000000..008e258
Binary files /dev/null and b/docs/_static/audio/synth_hard_sync.wav differ
diff --git a/docs/_static/audio/synth_harp.wav b/docs/_static/audio/synth_harp.wav
index d5e90e9..180ae03 100644
Binary files a/docs/_static/audio/synth_harp.wav and b/docs/_static/audio/synth_harp.wav differ
diff --git a/docs/_static/audio/synth_harpsichord.wav b/docs/_static/audio/synth_harpsichord.wav
index 6f4a6dc..3e158b1 100644
Binary files a/docs/_static/audio/synth_harpsichord.wav and b/docs/_static/audio/synth_harpsichord.wav differ
diff --git a/docs/_static/audio/synth_kalimba.wav b/docs/_static/audio/synth_kalimba.wav
index 1d597af..504f9f1 100644
Binary files a/docs/_static/audio/synth_kalimba.wav and b/docs/_static/audio/synth_kalimba.wav differ
diff --git a/docs/_static/audio/synth_karplus.wav b/docs/_static/audio/synth_karplus.wav
new file mode 100644
index 0000000..27f2b2f
Binary files /dev/null and b/docs/_static/audio/synth_karplus.wav differ
diff --git a/docs/_static/audio/synth_mandolin.wav b/docs/_static/audio/synth_mandolin.wav
index 6b01c8e..d18c3f2 100644
Binary files a/docs/_static/audio/synth_mandolin.wav and b/docs/_static/audio/synth_mandolin.wav differ
diff --git a/docs/_static/audio/synth_marimba.wav b/docs/_static/audio/synth_marimba.wav
index beb074a..895a92b 100644
Binary files a/docs/_static/audio/synth_marimba.wav and b/docs/_static/audio/synth_marimba.wav differ
diff --git a/docs/_static/audio/synth_mellotron.wav b/docs/_static/audio/synth_mellotron.wav
new file mode 100644
index 0000000..fe561d4
Binary files /dev/null and b/docs/_static/audio/synth_mellotron.wav differ
diff --git a/docs/_static/audio/synth_noise.wav b/docs/_static/audio/synth_noise.wav
index fbb79b9..e0dca60 100644
Binary files a/docs/_static/audio/synth_noise.wav and b/docs/_static/audio/synth_noise.wav differ
diff --git a/docs/_static/audio/synth_oboe.wav b/docs/_static/audio/synth_oboe.wav
index 6a10224..97e7682 100644
Binary files a/docs/_static/audio/synth_oboe.wav and b/docs/_static/audio/synth_oboe.wav differ
diff --git a/docs/_static/audio/synth_organ.wav b/docs/_static/audio/synth_organ.wav
index 04e713c..aa2ba3e 100644
Binary files a/docs/_static/audio/synth_organ.wav and b/docs/_static/audio/synth_organ.wav differ
diff --git a/docs/_static/audio/synth_pedal_steel.wav b/docs/_static/audio/synth_pedal_steel.wav
index e0b7cad..4221723 100644
Binary files a/docs/_static/audio/synth_pedal_steel.wav and b/docs/_static/audio/synth_pedal_steel.wav differ
diff --git a/docs/_static/audio/synth_piano.wav b/docs/_static/audio/synth_piano.wav
index 1c78349..ee21b5e 100644
Binary files a/docs/_static/audio/synth_piano.wav and b/docs/_static/audio/synth_piano.wav differ
diff --git a/docs/_static/audio/synth_pipe_organ.wav b/docs/_static/audio/synth_pipe_organ.wav
index 5ab3129..ba8d4df 100644
Binary files a/docs/_static/audio/synth_pipe_organ.wav and b/docs/_static/audio/synth_pipe_organ.wav differ
diff --git a/docs/_static/audio/synth_pulse.wav b/docs/_static/audio/synth_pulse.wav
index 5360a5c..a888732 100644
Binary files a/docs/_static/audio/synth_pulse.wav and b/docs/_static/audio/synth_pulse.wav differ
diff --git a/docs/_static/audio/synth_pwm_fast.wav b/docs/_static/audio/synth_pwm_fast.wav
index 9d7edec..ec5d0e2 100644
Binary files a/docs/_static/audio/synth_pwm_fast.wav and b/docs/_static/audio/synth_pwm_fast.wav differ
diff --git a/docs/_static/audio/synth_pwm_slow.wav b/docs/_static/audio/synth_pwm_slow.wav
index 03922ed..add7f01 100644
Binary files a/docs/_static/audio/synth_pwm_slow.wav and b/docs/_static/audio/synth_pwm_slow.wav differ
diff --git a/docs/_static/audio/synth_rhodes.wav b/docs/_static/audio/synth_rhodes.wav
index ace74e1..344856f 100644
Binary files a/docs/_static/audio/synth_rhodes.wav and b/docs/_static/audio/synth_rhodes.wav differ
diff --git a/docs/_static/audio/synth_ring_mod.wav b/docs/_static/audio/synth_ring_mod.wav
new file mode 100644
index 0000000..3a5d28e
Binary files /dev/null and b/docs/_static/audio/synth_ring_mod.wav differ
diff --git a/docs/_static/audio/synth_saw.wav b/docs/_static/audio/synth_saw.wav
index e6529c7..b27a889 100644
Binary files a/docs/_static/audio/synth_saw.wav and b/docs/_static/audio/synth_saw.wav differ
diff --git a/docs/_static/audio/synth_saxophone.wav b/docs/_static/audio/synth_saxophone.wav
index 52b877a..998c733 100644
Binary files a/docs/_static/audio/synth_saxophone.wav and b/docs/_static/audio/synth_saxophone.wav differ
diff --git a/docs/_static/audio/synth_sine.wav b/docs/_static/audio/synth_sine.wav
index 232aa69..fa2e2ab 100644
Binary files a/docs/_static/audio/synth_sine.wav and b/docs/_static/audio/synth_sine.wav differ
diff --git a/docs/_static/audio/synth_singing_bowl_ring.wav b/docs/_static/audio/synth_singing_bowl_ring.wav
index 21b445a..6839ba3 100644
Binary files a/docs/_static/audio/synth_singing_bowl_ring.wav and b/docs/_static/audio/synth_singing_bowl_ring.wav differ
diff --git a/docs/_static/audio/synth_singing_bowl_strike.wav b/docs/_static/audio/synth_singing_bowl_strike.wav
index 030e7b8..723a7de 100644
Binary files a/docs/_static/audio/synth_singing_bowl_strike.wav and b/docs/_static/audio/synth_singing_bowl_strike.wav differ
diff --git a/docs/_static/audio/synth_sitar.wav b/docs/_static/audio/synth_sitar.wav
index 6d10f88..fcdcab9 100644
Binary files a/docs/_static/audio/synth_sitar.wav and b/docs/_static/audio/synth_sitar.wav differ
diff --git a/docs/_static/audio/synth_square.wav b/docs/_static/audio/synth_square.wav
index 6477aae..3b3f346 100644
Binary files a/docs/_static/audio/synth_square.wav and b/docs/_static/audio/synth_square.wav differ
diff --git a/docs/_static/audio/synth_steel_drum.wav b/docs/_static/audio/synth_steel_drum.wav
index d0fbf07..84c68fb 100644
Binary files a/docs/_static/audio/synth_steel_drum.wav and b/docs/_static/audio/synth_steel_drum.wav differ
diff --git a/docs/_static/audio/synth_strings.wav b/docs/_static/audio/synth_strings.wav
index 2e46de0..8cacc07 100644
Binary files a/docs/_static/audio/synth_strings.wav and b/docs/_static/audio/synth_strings.wav differ
diff --git a/docs/_static/audio/synth_supersaw.wav b/docs/_static/audio/synth_supersaw.wav
index ba8f749..b247be9 100644
Binary files a/docs/_static/audio/synth_supersaw.wav and b/docs/_static/audio/synth_supersaw.wav differ
diff --git a/docs/_static/audio/synth_theremin.wav b/docs/_static/audio/synth_theremin.wav
index 7ee16ad..b5e766d 100644
Binary files a/docs/_static/audio/synth_theremin.wav and b/docs/_static/audio/synth_theremin.wav differ
diff --git a/docs/_static/audio/synth_timpani.wav b/docs/_static/audio/synth_timpani.wav
index 634216b..7ab53da 100644
Binary files a/docs/_static/audio/synth_timpani.wav and b/docs/_static/audio/synth_timpani.wav differ
diff --git a/docs/_static/audio/synth_triangle.wav b/docs/_static/audio/synth_triangle.wav
index 5b4fae6..7e71deb 100644
Binary files a/docs/_static/audio/synth_triangle.wav and b/docs/_static/audio/synth_triangle.wav differ
diff --git a/docs/_static/audio/synth_trumpet.wav b/docs/_static/audio/synth_trumpet.wav
index bc5ea60..cc471cf 100644
Binary files a/docs/_static/audio/synth_trumpet.wav and b/docs/_static/audio/synth_trumpet.wav differ
diff --git a/docs/_static/audio/synth_ukulele.wav b/docs/_static/audio/synth_ukulele.wav
index 074da34..9b00a58 100644
Binary files a/docs/_static/audio/synth_ukulele.wav and b/docs/_static/audio/synth_ukulele.wav differ
diff --git a/docs/_static/audio/synth_upright_bass.wav b/docs/_static/audio/synth_upright_bass.wav
index 8829655..cb5b0f5 100644
Binary files a/docs/_static/audio/synth_upright_bass.wav and b/docs/_static/audio/synth_upright_bass.wav differ
diff --git a/docs/_static/audio/synth_vibraphone.wav b/docs/_static/audio/synth_vibraphone.wav
index e5ebdc7..b4fb5b6 100644
Binary files a/docs/_static/audio/synth_vibraphone.wav and b/docs/_static/audio/synth_vibraphone.wav differ
diff --git a/docs/_static/audio/synth_wavefold.wav b/docs/_static/audio/synth_wavefold.wav
new file mode 100644
index 0000000..8d38d78
Binary files /dev/null and b/docs/_static/audio/synth_wavefold.wav differ
diff --git a/docs/_static/audio/synth_wurlitzer.wav b/docs/_static/audio/synth_wurlitzer.wav
index 944f1c6..3443ef2 100644
Binary files a/docs/_static/audio/synth_wurlitzer.wav and b/docs/_static/audio/synth_wurlitzer.wav differ
diff --git a/docs/_static/audio/tabla.wav b/docs/_static/audio/tabla.wav
index b2f99af..b3caf40 100644
Binary files a/docs/_static/audio/tabla.wav and b/docs/_static/audio/tabla.wav differ
diff --git a/docs/_static/audio/tabla_chakradar.wav b/docs/_static/audio/tabla_chakradar.wav
index e9b6d65..907e403 100644
Binary files a/docs/_static/audio/tabla_chakradar.wav and b/docs/_static/audio/tabla_chakradar.wav differ
diff --git a/docs/_static/audio/tabla_keherwa.wav b/docs/_static/audio/tabla_keherwa.wav
index 00279dd..da2b96c 100644
Binary files a/docs/_static/audio/tabla_keherwa.wav and b/docs/_static/audio/tabla_keherwa.wav differ
diff --git a/docs/_static/audio/tabla_teental.wav b/docs/_static/audio/tabla_teental.wav
index 5c7ea2f..cf5f377 100644
Binary files a/docs/_static/audio/tabla_teental.wav and b/docs/_static/audio/tabla_teental.wav differ
diff --git a/docs/generate_audio.py b/docs/generate_audio.py
index 63e2c1a..07af708 100644
--- a/docs/generate_audio.py
+++ b/docs/generate_audio.py
@@ -850,6 +850,56 @@ def gen_synth_ukulele():
p.strum(ch, Duration.WHOLE, velocity=72)
render("synth_ukulele", score)
+def gen_synth_hard_sync():
+ score = Score("4/4", bpm=120)
+ p = score.part("demo", instrument="sync_lead_bright", volume=0.5)
+ for n in ["C4", "E4", "G4", "C5", "G4", "E4", "C4", "E4"]:
+ p.add(n, Duration.QUARTER, velocity=90)
+ render("synth_hard_sync", score)
+
+
+def gen_synth_ring_mod():
+ score = Score("4/4", bpm=90)
+ p = score.part("demo", instrument="ring_mod_bell", volume=0.5)
+ for n in ["C5", "E5", "G5", "C6", "G5", "E5", "C5", "E5"]:
+ p.add(n, Duration.QUARTER, velocity=80)
+ render("synth_ring_mod", score)
+
+
+def gen_synth_wavefold():
+ score = Score("4/4", bpm=110)
+ p = score.part("demo", instrument="wavefold_warm", volume=0.5)
+ for n in ["C4", "E4", "G4", "C5", "G4", "E4", "C4", "E4"]:
+ p.add(n, Duration.QUARTER, velocity=85)
+ render("synth_wavefold", score)
+
+
+def gen_synth_drift():
+ score = Score("4/4", bpm=90)
+ p = score.part("demo", instrument="drift_saw", volume=0.5, reverb=0.35,
+ reverb_type="taj_mahal")
+ for n in ["C4", "E4", "G4", "C5", "G4", "E4", "C4", "E4"]:
+ p.add(n, Duration.HALF, velocity=75)
+ render("synth_drift", score)
+
+
+def gen_synth_karplus():
+ score = Score("4/4", bpm=100)
+ p = score.part("demo", synth="pluck_synth", envelope="none",
+ volume=0.5, reverb=0.2)
+ for n in ["C4", "E4", "G4", "C5", "G4", "E4", "C4", "E4"]:
+ p.add(n, Duration.QUARTER, velocity=85)
+ render("synth_karplus", score)
+
+
+def gen_synth_mellotron():
+ score = Score("4/4", bpm=80)
+ p = score.part("demo", instrument="mellotron_flute", volume=0.5)
+ for n in ["C4", "E4", "G4", "C5"]:
+ p.add(n, Duration.WHOLE, velocity=75)
+ render("synth_mellotron", score)
+
+
def gen_synth_granular():
score = Score("4/4", bpm=80)
p = score.part("demo", instrument="granular_pad", volume=0.5, reverb=0.4)
@@ -1139,6 +1189,12 @@ GENERATORS = [
gen_synth_banjo,
gen_synth_mandolin,
gen_synth_ukulele,
+ gen_synth_hard_sync,
+ gen_synth_ring_mod,
+ gen_synth_wavefold,
+ gen_synth_drift,
+ gen_synth_karplus,
+ gen_synth_mellotron,
gen_synth_granular,
gen_synth_crotales,
gen_synth_tingsha,
diff --git a/docs/guide/synths.rst b/docs/guide/synths.rst
index 49c1914..bc26271 100644
--- a/docs/guide/synths.rst
+++ b/docs/guide/synths.rst
@@ -277,6 +277,10 @@ of the Prophet-5, Moog Prodigy, and every screaming analog lead since
from pytheory import play, Synth, Tone
play(Tone.from_string("C4"), synth=Synth.HARD_SYNC, slave_ratio=2.5)
+.. raw:: html
+
+
+
Ring Modulation
~~~~~~~~~~~~~~~
@@ -296,6 +300,10 @@ soundtrack.
# Non-integer ratios = more inharmonic
play(Tone.from_string("C4"), synth=Synth.RING_MOD, mod_ratio=2.1)
+.. raw:: html
+
+
+
Wavefolding
~~~~~~~~~~~
@@ -322,6 +330,10 @@ the wave. Pairs beautifully with a lowpass filter after the fold.
# Direct control over fold amount
play(Tone.from_string("C4"), synth=Synth.WAVEFOLD, folds=3.0)
+.. raw:: html
+
+
+
Drift Oscillator
~~~~~~~~~~~~~~~~
@@ -351,6 +363,10 @@ that needs to feel "alive."
play(Tone.from_string("C4"), synth=Synth.DRIFT,
shape="triangle", drift_amount=0.25)
+.. raw:: html
+
+
+
Drift amount controls how unstable the oscillator is:
- **0.05** = studio-grade (Sequential, Oberheim)
@@ -514,6 +530,10 @@ It sounds genuinely like a real guitar, harp, or koto.
guitar = score.part("guitar", synth="pluck_synth")
harp = score.part("harp", instrument="harp") # uses pluck_synth
+.. raw:: html
+
+
+
Hammond Organ
~~~~~~~~~~~~~
@@ -633,7 +653,11 @@ Three tape banks are available via the ``tape`` parameter:
# Or select the tape directly
from pytheory import play, Synth, Tone
- play(Tone.from_string("C4"), synth=Synth.MELLOTRON, tape="choir", t=3000)
+ play(Tone.from_string("C4"), synth=Synth.MELLOTRON, tape="flute", t=3000)
+
+.. raw:: html
+
+
Vibraphone Synth
~~~~~~~~~~~~~~~~