aboutsummaryrefslogtreecommitdiff
path: root/5-polyrhythms/main.ua
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-02-15 13:05:36 +0530
committerAkshay Nair <phenax5@gmail.com>2025-02-15 13:19:44 +0530
commitfb5fcff943fd0e4d019551029b13086b7423c734 (patch)
treeed6e2971022561964e00db576fd5e5b4c79e905b /5-polyrhythms/main.ua
parentdf2791adfcd5c2173102a3e11125d80951de6ff3 (diff)
downloaduiua-creative-coding-fb5fcff943fd0e4d019551029b13086b7423c734.tar.gz
uiua-creative-coding-fb5fcff943fd0e4d019551029b13086b7423c734.zip
Add polyrhythms music generation
Diffstat (limited to '5-polyrhythms/main.ua')
-rw-r--r--5-polyrhythms/main.ua29
1 files changed, 29 insertions, 0 deletions
diff --git a/5-polyrhythms/main.ua b/5-polyrhythms/main.ua
new file mode 100644
index 0000000..7e184ce
--- /dev/null
+++ b/5-polyrhythms/main.ua
@@ -0,0 +1,29 @@
+Dn ← 0.6 # duration of a Ch in seconds
+Bar ← 6 # duration of a bar in seconds
+V ← 0.2 # volume
+S ← &asr # sample rate
+
+JoinB ← ∧(⊂°□):[] ⇌
+Silence ← ×0⇡⌊×S
+Fade ← × ⇌ ÷⟜(⇡)⧻.
+Tone ← ×V /+∿ ⊞× : ×τ ÷⟜(⇡⌊×)S
+MkNotes ← JoinB ≡(□ ⊂ (Fade Tone Dn °□⊣:) Silence°□⊢.)
+
+ChRoot ← ∵({(↥0 -Dn ÷:⊙: Bar) [330]}◌) ⇡.
+ChN₁ ← ∵({(↥0 -Dn ÷:⊙: Bar) [415]}◌) ⇡.
+ChN₂ ← ∵({(↥0 -Dn ÷:⊙: Bar) [220]}◌) ⇡.
+ChN₃ ← ∵({(↥0 -Dn ÷:⊙: Bar) [247]}◌) ⇡.
+# [E, G#, B, D]
+Ch₁ ← ∵({(↥0 -Dn ÷:⊙: Bar) [330 415 493 293]}◌) ⇡.
+# [A, C#, E, G]
+Ch₂ ← ∵({(↥0 -Dn ÷:⊙: Bar) [220 277 324 392]}◌) ⇡.
+# [B, D#, F#, A]
+Ch₃ ← ∵({(↥0 -Dn ÷:⊙: Bar) [247 311 370 440]}◌) ⇡.
+
+Bar₁ ← ++ (MkNotes ChRoot 10) (MkNotes ChN₂ 6) (MkNotes Ch₂ 4)
+Bar₂ ← ++ (MkNotes ChRoot 10) (MkNotes ChN₃ 6) (MkNotes Ch₃ 4)
+Bar₃ ← ++ (MkNotes ChRoot 10) (MkNotes ChN₁ 6) (MkNotes Ch₁ 4)
+
+Samples ← ⊟. JoinB [Bar₁ Bar₂ Bar₃ Bar₂]
+&ap Samples
+&fwa "./5-polyrhythms/output.wav" audio "wav" S Samples