Anonymous user
Metronome: Difference between revisions
→{{header|Factor}}
(Add factor) |
|||
Line 154:
=={{header|Factor}}==
<lang factor>USING: accessors calendar circular colors.constants colors.hsv
concurrency.semaphores continuations
threads timers ui ui.gadgets ui.gadgets.worlds ui.pens.solid ;▼
▲ui ui.gadgets ui.gadgets.worlds ui.pens.solid ;
IN: rosetta-code.metronome
: bpm>duration ( bpm -- duration ) 60 swap / seconds ;
: blink-gadget ( gadget freq -- )
: blank-gadget ( gadget -- )
COLOR: white <solid> >>interior relayout-1 ;
: play-note ( gadget freq -- )
: open-metronome-window ( -- gadget )
gadget new { 200 200 } >>pref-dim
: metronome-loop ( gadget notes semaphore -- )
: start-metronome-timer ( bpm semaphore -- timer ) [ release ] curry swap bpm>duration every ;▼
] curry with circular-loop ;
[ release ] curry swap bpm>duration every ;
: start-metronome-timer ( bpm -- timer semaphore )
: run-metronome ( semaphore notes -- )
[ open-metronome-window ] 2dip <circular> swap metronome-loop ;
: metronome ( bpm notes -- )
[ run-metronome ] 2curry [ stop-timer ] [ ] cleanup ;
▲ {
▲ [ 2nip start-metronome-timer ]
▲! example usage: 60 { 440 220 330 } metronome</lang>
=={{header|Haskell}}==
|