ramidier 0.3.0

Akai Pro Apc key 25 abstraction layer
Documentation
use crate::errors::io::ChannelCreationError;
use midir::MidiIO;
use std::collections::HashMap;

pub trait Channel {
    #[allow(dead_code)]
    fn get_available_ports_data() -> Result<HashMap<usize, String>, ChannelCreationError> {
        let midi_in = Self::get_midi()?;
        let in_ports = midi_in.ports();
        Ok(in_ports
            .iter()
            .enumerate()
            .filter_map(|(i, p)| midi_in.port_name(p).map(|p_name| (i, p_name)).ok())
            .collect())
    }

    #[allow(dead_code)]
    fn get_available_ports_indexes() -> Result<Vec<usize>, ChannelCreationError> {
        let midi_in = Self::get_midi()?;
        Ok((0..midi_in.port_count()).collect())
    }
    fn get_midi() -> Result<impl MidiIO, ChannelCreationError>;
}