Refactor code

This commit is contained in:
Anthony Wang 2023-01-06 19:09:14 -06:00
parent 40867d8991
commit 230494f347
Signed by: a
GPG key ID: 42A5B952E6DD8D38
3 changed files with 30 additions and 18 deletions

View file

@ -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))

View file

@ -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
)
))

View file

@ -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)
))