git ssb

0+

dinoworm ๐Ÿ› / metronome



Tree: 2431efbc25dadc7996fc6ca2d7748bc2f467b4e9

Files: 2431efbc25dadc7996fc6ca2d7748bc2f467b4e9 / src / main.rs

1595 bytesRaw
1extern crate ncurses;
2
3mod clock;
4mod control;
5mod interface;
6
7fn main () {
8 Metronome::run(60_f64);
9}
10
11
12pub type Tempo = f64;
13
14struct Metronome {}
15
16impl Metronome {
17 pub fn run (tempo: Tempo) {
18 let control = control::Control::new();
19
20 let terminal_tx = interface::TerminalInterface::start(control.tx.clone());
21 let clock_tx = clock::Clock::start(control.tx.clone());
22
23 for control_message in control.rx {
24 match control_message {
25 // sent by interface
26 control::ControlMessage::Reset => {
27 clock_tx.send(clock::ClockMessage::Reset).unwrap();
28 },
29 // sent by interface
30 control::ControlMessage::NudgeTempo(nudge) => {
31 clock_tx.send(clock::ClockMessage::NudgeTempo(nudge)).unwrap();
32 },
33 // sent by interface
34 control::ControlMessage::Tap => {
35 clock_tx.send(clock::ClockMessage::Tap).unwrap();
36 },
37 // sent by clock
38 control::ControlMessage::Signature(signature) => {
39 clock_tx.send(clock::ClockMessage::Signature(signature)).unwrap();
40 terminal_tx.send(interface::InterfaceMessage::Signature(signature)).unwrap();
41 },
42 // sent by clock
43 control::ControlMessage::Time(time) => {
44 terminal_tx.send(interface::InterfaceMessage::Time(time)).unwrap();
45 },
46 _ => {}
47 }
48 }
49 }
50}
51
52

Built with git-ssb-web