fix: linear velocity profile broken
This commit is contained in:
parent
66d04dacc2
commit
65fbaa323b
@ -448,7 +448,7 @@ async fn piano_task(pin_driver: pins::TransparentPins) {
|
||||
mat.scan(
|
||||
pin_driver,
|
||||
matrix::Config {
|
||||
velocity_prof: VelocityProfile::Heavy,
|
||||
velocity_prof: VelocityProfile::Linear,
|
||||
},
|
||||
)
|
||||
.await;
|
||||
|
@ -5,7 +5,7 @@ use crate::pins;
|
||||
use crate::unwrap;
|
||||
use core::cmp::{max, min};
|
||||
use embassy_rp::gpio;
|
||||
use embassy_time::{Duration, Instant, Ticker};
|
||||
use embassy_time::{Duration, Instant, Timer};
|
||||
|
||||
pub enum NormalState {
|
||||
/// Normal open
|
||||
@ -39,7 +39,7 @@ fn velocity_heavy(us: u64) -> u8 {
|
||||
}
|
||||
|
||||
fn velocity_linear(us: u64) -> u8 {
|
||||
max(127000 - (us as i32), 0) as u8
|
||||
(max(116000 - (us as i32), 5000) / 1000) as u8
|
||||
}
|
||||
|
||||
pub struct Config {
|
||||
@ -101,10 +101,6 @@ impl<const N_ROWS: usize, const N_COLS: usize> KeyMatrix<N_ROWS, N_COLS> {
|
||||
unwrap(pin_driver.set_pull(i, gpio::Pull::Up)).await;
|
||||
}
|
||||
|
||||
// scan frequency
|
||||
// this might(?) panic if the scan takes longer than the tick
|
||||
let mut ticker = Ticker::every(Duration::from_micros(4000));
|
||||
|
||||
let chan = midi::MidiChannel::new(0);
|
||||
const MAX_NOTES: usize = 128;
|
||||
|
||||
@ -203,7 +199,8 @@ impl<const N_ROWS: usize, const N_COLS: usize> KeyMatrix<N_ROWS, N_COLS> {
|
||||
);
|
||||
}
|
||||
|
||||
ticker.next().await;
|
||||
// relinquish to other tasks for a moment
|
||||
Timer::after_micros(50).await;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -303,7 +303,7 @@ impl TransparentPins {
|
||||
match pin {
|
||||
TransparentPin::Onboard(p) => self.onboard_pins[p].set_as_input(),
|
||||
TransparentPin::Extended(p) => {
|
||||
extender!(self, p.ext_id)?.pin_mode(p.loc_pin, mcp23017::PinMode::INPUT)?
|
||||
extender!(self, p.ext_id)?.pin_mode(p.loc_pin, mcp23017::PinMode::INPUT)?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
@ -316,7 +316,8 @@ impl TransparentPins {
|
||||
match pin {
|
||||
TransparentPin::Onboard(p) => self.onboard_pins[p].set_as_output(),
|
||||
TransparentPin::Extended(p) => {
|
||||
extender!(self, p.ext_id)?.pin_mode(p.loc_pin, mcp23017::PinMode::OUTPUT)?
|
||||
let mut ext = extender!(self, p.ext_id)?;
|
||||
ext.pin_mode(p.loc_pin, mcp23017::PinMode::OUTPUT)?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
|
Loading…
Reference in New Issue
Block a user