aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Wang2023-01-06 19:09:14 -0600
committerAnthony Wang2023-01-06 19:09:14 -0600
commit230494f347478049e17f2dc594294c9e0e140c6d (patch)
tree10be5e2d1dc45f513f0bc5dfffb758998623e7da
parent40867d899149abefa61451e6b90ea4e1345c00a3 (diff)
Refactor code
-rw-r--r--lambeat.scm9
-rw-r--r--lib.scm6
-rw-r--r--music.scm33
3 files changed, 30 insertions, 18 deletions
diff --git a/lambeat.scm b/lambeat.scm
index ac3bb76..e98af09 100644
--- a/lambeat.scm
+++ b/lambeat.scm
@@ -1,12 +1,13 @@
(use-modules (ice-9 binary-ports))
(include "music.scm")
+; Bitrate is the number time to sample the music function each second
(define bitrate 8000)
; Get the music as a list sampled at the bitrate
-(define (play t) (
- cons (music t) (if (< t 30)
- (play (+ t (/ 1 bitrate)))
+(define (play t end) (
+ cons (* 1/4 (tri (* t (music t)))) (if (< t end)
+ (play (+ t (/ 1 bitrate)) end)
'()
)
))
@@ -17,4 +18,4 @@
cons
(put-u8 (current-output-port) (modulo b 256))
(put-u8 (current-output-port) (quotient b 256))
-)) (play 0))
+)) (play 0 4))
diff --git a/lib.scm b/lib.scm
index 6c86521..5a12152 100644
--- a/lib.scm
+++ b/lib.scm
@@ -1,5 +1,5 @@
-; Saw wave with a period of 1 second
-(define (saw t) (
+; Triangle wave with a period of 1 second
+(define (tri t) (
let ((m (floor-remainder (+ t (/ 1 4)) 1)))
(if (< m 1/2)
(- (* 4 m) 1)
@@ -11,7 +11,7 @@
lambda (t) (
if (or (< t start) (>= t (+ start len)))
0
- (saw (* freq t))
+ freq
)
))
diff --git a/music.scm b/music.scm
index 0c35ee1..7934bda 100644
--- a/music.scm
+++ b/music.scm
@@ -1,19 +1,30 @@
(include "lib.scm")
(define (melody t) (
- apply + (map
- (lambda (octave pitch start len) ((note (getfreq octave pitch) start len) t))
- ;'(3)
- ;(cons (* 3 (sin t)) '())
- ;'(0)
- ;'(6.28)
- '(3 3 3 3 3 3 3 3 3 3)
- '(4 8 4 11 4 2 8 4 11 4)
- '(0 1/4 3/4 1 5/4 3/2 7/4 9/4 5/2 11/4)
- '(1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4)
+ apply + (
+ map (lambda (x) (
+ apply (lambda (octave pitch start len) ((note (getfreq octave pitch) start len) t)) x
+ )) '(
+ (2 5 1 1)
+ (2 8 4 1)
+ (3 5 7 1)
+ (3 0 9 1)
+ (2 10 10 1)
+ (2 8 12 1)
+ (2 7 15 1)
+ (2 8 17 1)
+ (2 7 18 1)
+ (3 3 19 1)
+ (2 8 21 1)
+ (3 0 22 1)
+ (3 3 23 1)
+ (3 5 25 1)
+ (3 0 30 1)
+ (3 3 31 1)
+ )
)
))
(define (music t) (
- melody (floor-remainder t 3)
+ melody (* t 8)
))