From e7dfa23a0a8cf0efd227a9cbce2f0e333dcd965b Mon Sep 17 00:00:00 2001 From: Danny Meyer Date: Wed, 26 Apr 2023 23:33:02 -0400 Subject: [PATCH] update demo --- src/demo.rs | 472 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 308 insertions(+), 164 deletions(-) diff --git a/src/demo.rs b/src/demo.rs index 4af18902..f1766211 100644 --- a/src/demo.rs +++ b/src/demo.rs @@ -13,7 +13,6 @@ pub fn demo() -> Result<(), Error> { let (tx, rx) = std::sync::mpsc::channel::(); let render_manager = Arc::new(Mutex::new(RenderManager::init(None, Some(tx), true, None))); - let render_voices = prepare_render_outside(Language(DEMO), None)?; render_manager @@ -41,203 +40,348 @@ pub fn demo() -> Result<(), Error> { const DEMO: &str = indoc! {" { f: 311.127, l: 1, g: 1/3, p: 0 } -chord = { +thing2 = { Overlay [ - {9/2, 0, 1/2, -1}, - {9/2, 0, 1/2, -1}, - {4, 0, 1/2, -1}, - {4, 0, 1/2, -1}, - {10/3, 0, 1/2, -1}, - {16/5, 0, 1/2, -1}, - {5/4, 4, 1/2, 1}, - {8/3, 0, 1/2, -1}, - {5/4, 4, 1/2, 1}, - {7/3, 0, 1/2, -1}, - {9/4, 4, 1/2, 1}, - {3/2, 4, 1/2, 1}, - {11/8, 0, 1/2, -1}, - {5/4, 7, 1/2, 1}, - {7/6, 0, 1/2, -1}, - {3/2, 4, 1, 1/4}, - {3/2, 0, 1, -1/4}, - {1/3, 4, 1, 1/4}, - {1/3, 0, 1, -1/4}, + -- {3/1, 3, 1/16, 1/8}, + -- {3/1, 0, 1/16, -1/8}, + {2/1, 2, 1/2, 1/4}, + {2/1, 0, 1/2, -1/4}, + {1/2, 3, 1, 1}, + {1/2, 0, 1, -1}, + ] + | Seq [ + Fm 3/4, Fm 0, Fm 9/8, Fm 5/6, + Fm 3/4, Fm 0, Fm 9/8, Fm 5/6, + Fm 1, Fm 0, Fm 1, Fm 0, + Fm 1, Fm 15/16, Fm 5/6, Fm 3/4, + Overlay [ + Seq [ + Fm 1 | Pa 1/2, Fm 1 | Pa -1/2, Fm 0 + ] + | Lm 1/3 + | Seq [ + Fm 2/3, Fm 1 | Gm 1/8, + Fm 5/4, Fm 5/6, Gm 1/8, + Fm 2/3, Fm 3/4 | Gm 1/8, + Fm 15/16, Fm 9/8 + ] | Lm 1/2, + Seq [ + Fm 2/3 + ] | Lm 4 | Fm 1/4 + ], + Fm 1, Fm 5/8, Fm 2/3, Fm 5/4, + Fm 9/8, Fm 3/4, Fm 9/8, Fm 3/4, + Fm 9/8, Fm 5/4, Fm 3/2 | Lm 2, + Fm 5/3 | Lm 2, Fm 3/2, Fm 5/3, + Fm 5/3, Fm 3/2, Fm 4/3, Fm 5/4, + Fm 4/3, Fm 5/4, Fm 3/2, Fm 9/8, + Fm 1, Fm 15/16, Fm 5/6, Fm 3/4, + Fm 5/6, Fm 15/16, Fm 1, Fm 9/8, + Fm 5/4, Fm 9/8, Fm 5/4, Fm 5/6, + Fm 3/4, Fm 5/6, Fm 3/4, Fm 1/2, + Seq [ + Fm 1/2, Fm 3/4, Fm 5/6, Fm 1/2, Fm 1/6 + ] + | Seq [ + Repeat 7, + Fm 7/8 | Reverse + ] + | Repeat 4 ] - | Fm 9/8 } -overtones1 = { + +thing3 = { Overlay [ - {1/1, 2, 1, 1/2}, - {1/1, 0, 1, -1/2}, - {3/4, 3, 1/8, 1}, - {3/4, 0, 1/8, -1}, - {0/1, 7, 1, 1}, - {0/1, 0, 1, -1}, + -- {3, 2, 1/16, 1/7}, + -- {3, 0, 1/16, -1/7}, + {1/1, 1, 1/2, 1/4}, + {1/1, 0, 1/2, -1/4}, ] -} + | Seq [ + Fm 1/2, Fm 0, Fm 3/4, Fm 1/2, + Fm 9/16, Fm 0, Fm 3/4, Fm 2/3, + Fm 2/3, Fm 0, Fm 5/8, Fm 0, + Fm 5/4, Fm 9/8, Fm 1, Fm 15/16, -overtones2 = { - Overlay [ - {4, -9, 1/7, 1/4}, - {4, 0, 1/7, -1/4}, - {1/2, 2, 1, 1}, - {1/2, 0, 1, -1}, - {1/4, 2, 1, 1}, - {1/4, 0, 1, -1}, + Seq [ + Fm 1 | Pa 1/2, Fm 1 | Pa -1/2, Fm 0 + ] + | Lm 1/3 + | Seq [ + Fm 5/6, Fm 5/4 | Gm 1/8, + Fm 3/2, Fm 1 | Gm 1/8, + Fm 5/6, Fm 15/16, Gm 1/8, + Fm 9/8, Fm 4/3 + ] | Lm 1/2, + Fm 5/4, Fm 3/4, Fm 5/6, Fm 1, + Fm 15/16, Fm 5/8, Fm 15/16, Fm 5/8, + Fm 15/16, Fm 1, Fm 5/4 | Lm 2, + Fm 4/3 | Lm 2, Fm 5/4, Fm 4/3, + Fm 4/3, Fm 5/4, Fm 9/8, Fm 5/4, + Fm 9/8, Fm 1, Fm 5/4, Fm 15/16, + Fm 5/6, Fm 3/4, Fm 2/3, Fm 5/8, + Fm 2/3, Fm 3/4, Fm 3/4, Fm 5/8, + Fm 1, Fm 15/16, Fm 1, Fm 2/3, + Fm 5/8, Fm 2/3, Fm 5/8, Fm 1/2, + Seq [ + Fm 1/2, Fm 3/4, Fm 5/6, Fm 1/2, Fm 1/6 + ] + | Seq [Repeat 7, Fm 7/8 | Reverse] + -- | Repeat 3 ] } -bass = { +chord = { Seq [ - Fm 7/8, Fm 1, Fm 3/2, Fm 9/8, Fm 5/4, Fm 4/3 | Lm 2, Fm 5/4, Fm 7/8, - Fm 1, Fm 5/4, Fm 4/3, Fm 1, Fm 5/4, Fm 5/3, Fm 9/8, Fm 5/6, Fm 7/8, - ] - | Overlay [Sine, Sine 3/2 | Fm 1/2 | Gm 1/7] - | Seq [Repeat 2, Fm 5/6, Reverse] + Fm 0, + Overlay [ + {2/1, 1, 1/8, 1/2}, + {2/1, 0, 1/8, -1/2}, + {5/3, 2, 1/2, 1/2}, + {5/3, 0, 1/2, -1/2}, + {9/8, 1, 1/8, 1/2}, + {9/8, 0, 1/8, -1/2}, + ], + Overlay [ + {15/8, 1, 1/8, 1/2}, + {15/8, 0, 1/8, -1/2}, + {3/2, 5, 1/2, 1/2}, + {3/2, 0, 1/2, -1/2}, + {5/4, 1, 1/8, 1/2}, + {5/4, 0, 1/8, -1/2}, + ], + Overlay [ + {3/2, 1, 1/8, 1/2}, + {3/2, 0, 1/8, -1/2}, + {5/4, 6, 1/2, 1/2}, + {5/4, 0, 1/2, -1/2}, + {9/8, 1, 1/2, 1/2}, + {9/8, 0, 1/2, -1/2}, + ] | Seq [Fm 1 | Lm 2, Fm 0 | Lm 6, Fm 0 | Lm 2] | Lm 1/4, + Fm 0 | Repeat 6, + ] + | FitLength thing2 } -thing2 = { +chord2 = { + Seq [ + Seq [Fm 1, Fm 0, Fm 0] | Lm 1/3 + | Seq [ + Fm 0 | Lm 9, + Overlay [ + {3, 5, 1/64, 1/8}, + {3, 0, 1/64, -1/8}, + {5/2, 5, 1/16, 1/8}, + {5/2, 0, 1/16, -1/8}, + {5/3, 4, 1/8, 1/2}, + {5/3, 5, 1/8, -1/2}, + {3/2, 1, 1/8, 1/2}, + {3/2, 0, 1/8, -1/2}, + ] | Lm 3, + Overlay [ + {11/4, 6, 1/64, 1/8}, + {11/4, 0, 1/64, -1/8}, + {5/2, 6, 1/16, 1/8}, + {5/2, 0, 1/16, -1/8}, + {7/4, -3, 1/8, 1/2}, + {7/4, 0, 1/8, -1/2}, + {5/3, 2, 1/8, 1/2}, + {5/3, 0, 1/8, -1/2}, + {3/2, -4, 1/8, 1/2}, + {3/2, 0, 1/8, -1/2}, + ], + Overlay [ + {15/4, 7, 1/64, 1/2}, + {15/4, 0, 1/64, -1/2}, + {20/3, 7, 1/16, 1/2}, + {20/3, 0, 1/16, -1/2}, + {9/4, -6, 1/8, 1/2}, + {9/4, 0, 1/8, -1/2}, + {7/4, -2, 1/8, 1/2}, + {7/4, 0, 1/8, -1/2}, + {8/5, 4, 1/8, 1/2}, + {8/5, 0, 1/8, -1/2}, + {3/2, -4, 1/8, 1/2}, + {3/2, 0, 1/8, -1/2}, + {5/8, -4, 1/8, 1/2}, + {5/8, 0, 1/8, -1/2}, + ], + Overlay [ + {15/4, 8, 1/64, 1/2}, + {15/4, 0, 1/64, -1/2}, + {20/3, 8, 1/16, 1/2}, + {20/3, 0, 1/16, -1/2}, + {11/4, -7, 1/8, 1/2}, + {11/4, 0, 1/8, -1/2}, + {7/4, -3, 1/8, 1/2}, + {7/4, 0, 1/8, -1/2}, + {8/5, 5, 1/8, 1/2}, + {8/5, 0, 1/8, -1/2}, + {3/2, -3, 1/8, 1/2}, + {3/2, 0, 1/8, -1/2}, + {5/8, -4, 1/8, 1/2}, + {5/8, 0, 1/8, -1/2}, + ], + ], Overlay [ - {2, 7, 1/2, 1/5}, - {2, 0, 1/2, -1/5}, - {3/2, 4, 1, 1/4}, - {3/2, 0, 1, -1/4}, - {1/1, -7, 1, 1/7}, - {1/1, 0, 1, -1/7}, - ] - | Overlay [ - Square | Gm 1/7, - Sine | Gm 1/7 | Pm 2, + {4, -7, 1/8, 1/2}, + {4, 0, 1/8, -1/2}, + {15/4, 1, 1/64, 1/2}, + {15/4, 0, 1/64, -1/2}, + {3, -7, 1/8, 1/2}, + {3, 0, 1/8, -1/2}, + {5/6, -4, 1/8, 1/2}, + {5/6, 0, 1/8, -1/2}, + {3/2, 5, 1/8, 1/2}, + {3/2, 0, 1/8, -1/2}, + {4/3, -3, 1/8, 1/2}, + {4/3, 0, 1/8, -1/2}, + {1/2, -4, 1/8, 1/2}, + {1/2, 0, 1/8, -1/2}, + ], + Overlay [ + {4, -7, 1/8, 1/2}, + {4, 0, 1/8, -1/2}, + {10/3, 1, 1/64, 1/2}, + {10/3, 0, 1/64, -1/2}, + {3, -9, 1/8, 1/2}, + {3, 0, 1/8, -1/2}, + {15/8, -5, 1/8, 1/2}, + {15/8, 0, 1/8, -1/2}, + {3/2, 5, 1/8, 1/2}, + {3/2, 0, 1/8, -1/2}, + {5/4, -3, 1/8, 1/2}, + {5/4, 0, 1/8, -1/2}, + {1/2, -4, 1/8, 1/2}, + {1/2, 0, 1/8, -1/2}, ] | Seq [ - Fm 3/4, Fm 5/6, Fm 7/8, Fm 9/8, Fm 1, Fm 7/8, Fm 9/8, Fm 1, Fm 5/6 + Fm 1 | Lm 4, Fm 3/4, Fm 1/2, Fm 1/3, Fm 1/4, Fm 1/5, Fm 1/6, Fm 1/7, Fm 1/8, + ] | Lm 1/16, ] - | Overlay [ - {1/1, -3, 1, 1}, - {1/1, 0, 1, -1}, - ] - | Gm 1/2 - | Repeat 2 - | FitLength bass + | Gm 7/4 + | Overlay [Sine, Sine 3/2 | Gm 1/8, Sine 2 | Gm 1/8] + | Overlay [AsIs, Reverb 1] + | FitLength thing2 } -thing6 = { +section1 = { Overlay [ - {1/1, 3, 1/2, -1}, - {1/1, -2, 1/2, 1}, - ] - | Seq [ - Fm 2, Fm 2, Fm 2, Fm 2, Fm 5/2, Fm 5/2, Fm 9/4, Fm 9/4, - Fm 3, Fm 2, Fm 2, Fm 9/4, Fm 5/2, Fm 5/2, Fm 9/4, Fm 9/4, + thing2, + thing3, + chord, + chord2, ] - | Lm 2 + | Fm 9/8 + | Lm 1/7 + | Repeat 1 } -thing3 = { +new_thing = { + Seq [ Overlay [ - {1/1, 5, 1/2, -1}, - {1/1, -2, 1/2, 1}, - ] - | Seq [ - Fm 3/2, Fm 4/3, Fm 5/3, Fm 3/2, Fm 2, Fm 3/2, Fm 5/3, Fm 15/8, - Fm 1, Fm 1, Fm 4/3, Fm 5/3, Fm 4/3, Fm 3/2, Fm 5/3, Fm 15/8, - ] - | Lm 2 + {15/8, -5, 1, 1/2}, + {15/8, 0, 1, -1/2}, + {3/2, 5, 1, 1/2}, + {3/2, 0, 1, -1/2}, + {5/4, -3, 1, 1/2}, + {5/4, 0, 1, -1/2}, + {5/6, -4, 1, 1/2}, + {5/6, 0, 1, -1/2}, + ], + Overlay [ + {15/8, -5, 1, 1/2}, + {15/8, 0, 1, -1/2}, + {5/3, 5, 1, 1/2}, + {5/3, 0, 1, -1/2}, + {9/8, -3, 1, 1/2}, + {9/8, 0, 1, -1/2}, + {3/4, -4, 1, 1/2}, + {3/4, 0, 1, -1/2}, + ], + ] | Lm 4 } -thing4 = { +new_thing_bass = { Overlay [ - {1/1, 2, 1/2, -1}, - {1/1, 0, 1/2, 1}, - {1/2, 4, 1/2, 1}, - {1/2, 0, 1/2, -1}, - ] + {9, -8, 1/48, 1/4}, + {9, 0, 1/48, -1/4}, + {4, -2, 1/4, 1}, + {4, 0, 1/4, -1}, + {2, -2, 1, 1/7}, + {2, 0, 1, -1/7}, + {3/2, -3, 1, 1/7}, + {3/2, 0, 1, -1/7}, + {1/2, -3, 1, 1/7}, + {1/2, 0, 1, -1/7}, + ] | Seq [ - Fm 5/4, Fm 9/8, Fm 4/3, Fm 5/4, Fm 5/3, Fm 5/4, Fm 4/3, Fm 3/2, - Fm 1, Fm 5/6, Fm 9/8, Fm 4/3, Fm 9/8, Fm 5/4, Fm 4/3, Fm 3/2, + Fm 0, Fm 5/6 | Lm 4/5, Fm 3/4 | Lm 6/5, Fm 5/8, + Fm 5/6, Fm 15/16, Fm 3/4 | Lm 4/5, Fm 5/6 | Lm 6/5, + Seq [ + Fm 3/4, Fm 5/6, + Overlay [ + Fm 9/8 | Gm 1/2, + Fm 9/16, + Fm 5/3 | Pa 1 | Gm 1/8, + Fm 5/3 | Fa 3 | Pa -1 | Gm 1/8, + ], Fm 0 + ] + | Lm 2/3 ] - | Lm 2 } -thing5 = { - Overlay [ - {1/2, -1, 1/2, 1}, - {1/2, 0, 1/2, -1}, - {1/4, -1, 1/2, 1}, - {1/4, 0, 1/2, -1}, - ] - | Seq [ - Fm 1, Fm 1, Fm 1, Fm 3/4, Fm 2/3, Fm 5/8, Fm 9/16, Fm 9/16, - Fm 2/3, Fm 2/3, Fm 3/4, Fm 3/4, Fm 9/16, Fm 5/8, Fm 2/3, Fm 3/4, - ] - | Lm 2 +new_chord = { + Overlay [ + {11/4, -7, 1/2, 1}, + {11/4, 0, 1/2, -1}, + {5/2, -7, 1/2, 1/3}, + {5/2, 0, 1/2, -1/3}, + {9/4, -3, 1/2, 1/4}, + {9/4, 0, 1/2, -1/4}, + {15/8, 8, 1/2, 1/4}, + {15/8, 0, 1/2, -1/4}, + {3/2, -3, 1/2, 1}, + {3/2, -7, 1/2, -1}, + {1/5, -3, 1/2, 1}, + {1/5, -7, 1/2, -1}, + ] + | Gm 1/2 + | FitLength new_thing_bass } -main = { +section2 = { + Overlay [ + {1, 1/7, 1/2, 1}, + {1, 0, 1, 0}, + {1, 1/10, 1/2, -1}, + ] + | Overlay [ + new_thing, + new_thing_bass, + new_chord + ] + | Gm 1/3 + | Seq [ Seq [ - Seq [ - Fm 25/24 | chord | Lm 1/4 | ModBy [Fm 1, Fm 3/4, Fm 1/2, Fm 1/3, Fm 1/4] | Gm 1/3, - Fm 0 | Lm 1/100, - Overlay [ - Overlay [ - Seq [ - Fm 0, Fm 1 - ] | Lm 1/2, - Seq [ - Fm 1, Fm 0 - ] | Lm 1/3 - ] - | overtones1 | bass, - thing2 - ] - | Fm 25/24 - | Lm 1/7, - Fm 0 | Lm 1/100, - chord | Lm 1/4 | ModBy [Fm 1, Fm 3/4, Fm 1/2, Fm 1/3, Fm 1/4] | Gm 1/3, - Fm 0 | Lm 1/8, - Overlay [ - overtones2 | bass, - thing2 - ] - | Repeat 2 - | Lm 1/5, - Fm 0 | Lm 1/100, - ] - | Repeat 2, - Seq [ - Overlay [ - thing6, - thing3, - thing4, - thing5, - ] - | Repeat 2 - | Overlay [ - {1/1, -0.07, 1/3, -1}, - {1/1, 0, 1/2, 0}, - {1/1, 0.03, 1/3, 1}, - ], - ], - Fm 0 | Lm 1/100, - Fm 25/24 | chord | Lm 1/4 | ModBy [Fm 1, Fm 3/4, Fm 1/2, Fm 1/3, Fm 1/4] | Gm 1/3, - Fm 0 | Lm 1/100, - Overlay [ - Overlay [ - Seq [ - Fm 0, Fm 1 - ] | Lm 1/2, - Seq [ - Fm 1, Fm 0 - ] | Lm 1/3 - ] - | overtones1 | bass, - thing2 - ] - | Fm 25/24 - | Lm 1/7, - Fm 0 | Lm 1/100, - chord | Lm 1/4 | ModBy [Fm 1, Fm 3/4, Fm 1/2, Fm 1/3, Fm 1/4] | Gm 1/3, + Lm 5/4, + Lm 5/4 | ModBy [Fm 1 | Lm 25/2, Fm 1 | ModBy [Fm 2/3, Fm 1/2, Fm 1/3, Fm 0 | Lm 1/3]], + Lm 1, + Lm 1 | ModBy [Fm 1 | Lm 19/2, Fm 1 | ModBy [Fm 2/3, Fm 1/2, Fm 1/3]], ] + ] +} + +main = { + Seq [ + section1 | Repeat 2, + Fm 0 | Lm 1/100, + section2 | Lm 3/4, + Fm 0 | Lm 1/100, + ] + | Gm 1 + | Repeat 2 + } "};