mirror of
https://codeberg.org/unspeaker/tek.git
synced 2026-08-07 22:17:07 +02:00
i dont know why that worked
This commit is contained in:
parent
4ae62c5bc2
commit
b73aa8a0dc
17 changed files with 552 additions and 481 deletions
|
|
@ -7,7 +7,7 @@ pub const ACTIONS: [(&'static str, &'static str);2] = [
|
|||
|
||||
pub struct Sampler {
|
||||
name: String,
|
||||
jack: Jack<SamplerJack>,
|
||||
input: ::jack::Port<::jack::MidiIn>,
|
||||
samples: Arc<Mutex<Vec<Sample>>>,
|
||||
selected_sample: usize,
|
||||
selected_column: usize,
|
||||
|
|
@ -23,36 +23,23 @@ impl Sampler {
|
|||
];
|
||||
let samples = Arc::new(Mutex::new(samples));
|
||||
let input = client.register_port("trigger", ::jack::MidiIn::default())?;
|
||||
let jack = SamplerJack.activate(client, ClosureProcessHandler::new({
|
||||
let exited = exited.clone();
|
||||
let samples = samples.clone();
|
||||
Box::new(move |client: &Client, scope: &ProcessScope|{
|
||||
process(client, scope, &exited, &samples, &input);
|
||||
Control::Continue
|
||||
}) as BoxedProcessHandler
|
||||
}))?;
|
||||
Ok(DynamicDevice::new(render, handle, |_|{}, Self {
|
||||
Ok(DynamicDevice::new(render, handle, process, Self {
|
||||
name: name.into(),
|
||||
input,
|
||||
selected_sample: 0,
|
||||
selected_column: 0,
|
||||
samples,
|
||||
jack,
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn process (
|
||||
client: &Client,
|
||||
scope: &ProcessScope,
|
||||
exited: &Arc<AtomicBool>,
|
||||
samples: &Arc<Mutex<Vec<Sample>>>,
|
||||
input: &Port<MidiIn>
|
||||
state: &mut Sampler,
|
||||
client: &Client,
|
||||
scope: &ProcessScope,
|
||||
) -> Control {
|
||||
if exited.fetch_and(true, Ordering::Relaxed) {
|
||||
return Control::Quit
|
||||
}
|
||||
let mut samples = samples.lock().unwrap();
|
||||
for event in input.iter(scope) {
|
||||
let mut samples = state.samples.lock().unwrap();
|
||||
for event in state.input.iter(scope) {
|
||||
let len = 3.min(event.bytes.len());
|
||||
let mut data = [0; 3];
|
||||
data[..len].copy_from_slice(&event.bytes[..len]);
|
||||
|
|
@ -183,7 +170,7 @@ pub fn render (state: &Sampler, buf: &mut Buffer, Rect { x, y, width, height }:
|
|||
//Ok(())
|
||||
//}
|
||||
|
||||
pub fn handle (state: &mut Sampler, event: &EngineEvent) -> Result<(), Box<dyn Error>> {
|
||||
pub fn handle (state: &mut Sampler, event: &AppEvent) -> Result<(), Box<dyn Error>> {
|
||||
//if let Event::Input(crossterm::event::Event::Key(event)) = event {
|
||||
//match event.code {
|
||||
//KeyCode::Char('c') => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue