diff --git a/oregano/Tutorial.md b/oregano/Tutorial.md index baf28bd..8b17b30 100644 --- a/oregano/Tutorial.md +++ b/oregano/Tutorial.md @@ -123,7 +123,11 @@ When the mouse is at the left of the screen, the frequency is 200, when the mous - +### Sliders + + + (add-effect track3 (low-pass-filter resonance + (slider : 200 500))) diff --git a/oregano/instrument.rkt b/oregano/instrument.rkt index 6a05039..7abc4b2 100644 --- a/oregano/instrument.rkt +++ b/oregano/instrument.rkt @@ -1,15 +1,56 @@ #lang racket - - (require rsc3 rhs/rhs) +;; --- gui stuff + +(require (prefix-in gui: racket/gui)) + +(define frame (new gui:frame% [label "Example"])) + +;; parent should be a frame +(new gui:slider% [parent frame] + [label "freq"] + [min-value 300] + [max-value 1000] + [init-value 400] + ;; callback receives the slider object and an event object + [callback (lambda (s event) + (send-msg (n-set1 1001 "freq" (gui:send s get-value))))]) + +(gui:send frame show #t) -;; simplifies sending messages to server +;; hypothetical usage +#;(add-filter track2 (lpf #:resonance .3 + #:cutoff (slider 300 800 500))) + +(define (slider min-n max-n init) + (define bus-id 16) + + (new gui:slider% [parent frame] + [label "amp"] + [min-value min-n] + [max-value max-n] + [init-value init] + ;; callback receives the slider object and an event object + [callback (lambda (s event) + (send-msg + (c-set1 bus-id (/ (gui:send s get-value) 1000))))]) + + + (in 1 kr bus-id)) + +; ------- + + + + + +;; simplifies sending osc messages to server (define (send-msg msg) (with-sc3 (lambda (fd) - (send fd msg)))) + (send fd msg)))) (define current-node-id 1000) (define (gen-node-id) @@ -25,7 +66,7 @@ (define sin-instrument (letc ([bus 0] [freq 440]) - (out bus (mul 0.2 (sin-osc ar freq 0))))) + (out bus (mul (slider 100 800 200) (sin-osc ar freq 0))))) (define saw-instrument (letc ([bus 0] @@ -41,7 +82,7 @@ ;; send synthdefs (with-sc3 (lambda (fd) - (send-synth fd "sin-inst" (wave-instrument sin-osc)) + (send-synth fd "sin-inst" sin-instrument) ; (wave-instrument sin-osc)) (send-synth fd "saw-inst" saw-instrument))) @@ -67,10 +108,6 @@ - to stop/run: (send-msg (n-run1 1001 1)) -- - - - |# ;; ======== test run =========== @@ -85,3 +122,4 @@ ; (note-off my-sin) +