Files: 2431efbc25dadc7996fc6ca2d7748bc2f467b4e9 / src / main.rs
1595 bytesRaw
1 | extern crate ncurses; |
2 | |
3 | mod clock; |
4 | mod control; |
5 | mod interface; |
6 | |
7 | fn main () { |
8 | Metronome::run(60_f64); |
9 | } |
10 | |
11 | |
12 | pub type Tempo = f64; |
13 | |
14 | struct Metronome {} |
15 | |
16 | impl 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