On Dec 12, 2011, at 7:55 PM, Matthias Felleisen wrote: > > Is the below really much less natural to write? I really enjoyed playing the > qwerty row from left to right, or perhaps I was pressing the number keys at > the same time :-)
You're cheating! Unless quasiquote is a new part of htdp/2e....
And actually: yes, I think that the below still is less natural to write.
Student says: why do we have to write down the parts that don't change? Doesn't
the redundancy introduce extra opportunities for error?
John
>
> #lang racket
>
> (require (except-in (planet clements/rsound)
> overlay
> scale)
> 2htdp/universe
> 2htdp/image)
>
> (define octave 48)
> (define volume .4)
> (define duration 22050)
>
> (define (main)
> (big-bang `(,octave ,volume ,duration)
> (to-draw my-draw)
> (on-key my-key)))
>
> (define (my-draw num)
> (place-image/align (text (format "~s" num) 11 'red) 10 50 'left 'top
> (empty-scene 100 100)))
>
> (define (my-key w key)
> (match (cons key w)
> [`("0" ,oct ,vol ,dur) `( 0 ,vol ,dur)]
> [`("1" ,oct ,vol ,dur) `(12 ,vol ,dur)]
> [`("2" ,oct ,vol ,dur) `(24 ,vol ,dur)]
> [`("3" ,oct ,vol ,dur) `(36 ,vol ,dur)]
> [`("4" ,oct ,vol ,dur) `(48 ,vol ,dur)]
> [`("5" ,oct ,vol ,dur) `(60 ,vol ,dur)]
> [`("6" ,oct ,vol ,dur) `(72 ,vol ,dur)]
> [`("7" ,oct ,vol ,dur) `(84 ,vol ,dur)]
> [`("8" ,oct ,vol ,dur) `(96 ,vol ,dur)]
> [`((or "=" "+") ,oct ,vol ,dur) `(,oct ,(if (< vol 1) (+ vol .1) vol)
> ,dur)]
> [`((or "-" "_") ,oct ,vol ,dur) `(,oct ,(if (> vol 0) (- vol .1) vol)
> ,dur)]
> [`("z" ,oct ,vol ,dur) `(,oct ,vol ,(if (> dur 11025) (- dur 11025) dur))]
> [`("x" ,oct ,vol ,dur) `(,oct ,vol ,(if (< dur 88200) (+ dur 11025) dur))]
> [`("q" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 12 oct))
> vol dur)) w]
> [`("w" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 13 oct))
> vol dur)) w]
> [`("e" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 14 oct))
> vol dur)) w]
> [`("r" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 15 oct))
> vol dur)) w]
> [`("t" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 16 oct))
> vol dur)) w]
> [`("y" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 17 oct))
> vol dur)) w]
> [`("u" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 18 oct))
> vol dur)) w]
> [`("i" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 19 oct))
> vol dur)) w]
> [`("o" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 20 oct))
> vol dur)) w]
> [`("p" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 21 oct))
> vol dur)) w]
> [`("[" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 22 oct))
> vol dur)) w]
> [`("]" ,oct ,vol ,dur) (play (make-tone (midi-note-num->pitch (+ 23 oct))
> vol dur)) w]
> [`("a" ,oct ,vol ,dur) (play c-hi-hat-1) w]
> [`("s" ,oct ,vol ,dur) (play c-hi-hat-2) w]
> [`("d" ,oct ,vol ,dur) (play o-hi-hat) w]
> [`("f" ,oct ,vol ,dur) (play snare) w]
> [`("g" ,oct ,vol ,dur) (play bassdrum) w]
> [`("h" ,oct ,vol ,dur) (play bassdrum) w]
> [`("j" ,oct ,vol ,dur) (play bassdrum-synth) w]
> [`("k" ,oct ,vol ,dur) (play clap-1) w]
> [`("l" ,oct ,vol ,dur) (play clap-2) w]
> [`(";" ,oct ,vol ,dur) (play crash-cymbal) w]
> [else w]
> [else (displayln `(no match ,w))]))
>
> (main)
smime.p7s
Description: S/MIME cryptographic signature
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

