mod.rs (990B)
1 use crate::utils::globals::SHOWING_NUMBER; 2 use crate::utils::numbers::{INNER_KEYS, NUMBERS}; 3 use midir::MidiOutputConnection; 4 use std::convert::TryInto; 5 use std::sync::atomic::Ordering; 6 7 pub mod globals; 8 mod numbers; 9 10 pub fn show_number(conn_out: &mut MidiOutputConnection, number: usize) { 11 SHOWING_NUMBER.store(true, Ordering::SeqCst); 12 conn_out.send(&[176, 0, 0]).unwrap(); 13 show_array(conn_out, NUMBERS[number]); 14 conn_out.send(&[144, 24, 63]).unwrap(); 15 conn_out.send(&[144, 8, 63]).unwrap(); 16 conn_out.send(&[144, 40, 63]).unwrap(); 17 } 18 19 pub fn show_array(conn_out: &mut MidiOutputConnection, array: [[bool; 8]; 8]) { 20 for (row_n, row) in array.iter().enumerate() { 21 for (column_n, column) in row.iter().enumerate() { 22 if *column { 23 let key = INNER_KEYS[row_n][column_n]; 24 conn_out 25 .send(&[144, (key as i32).try_into().unwrap(), 60]) 26 .unwrap(); 27 } 28 } 29 } 30 }