#![doc = include_str!("../../doc/arturia.md")]
use crate::sysex;
pub const EXTENDED_ID_VALUE: sysex::ManufacturerId = sysex::ManufacturerId::ExtId(0x20, 0x6b);
pub mod v2 {
use super::EXTENDED_ID_VALUE;
use crate::consts;
use crate::message::{MidiMessage, SysExEvent};
pub const PRODUCT_ID: u8 = 0x42;
pub mod verb {
pub const GET: u8 = 0x01;
pub const SET: u8 = 0x02;
pub const READ_MEM: u8 = 0x05;
pub const WRITE_MEM: u8 = 0x06;
}
pub mod param {
pub const MODE: u8 = 0x01;
pub const CHANNEL: u8 = 0x02;
pub const CC_NUM: u8 = 0x03;
pub const FROM: u8 = 0x04;
pub const TO: u8 = 0x05;
pub const COLOUR: u8 = 0x10;
}
#[repr(u8)]
#[derive(Clone, Copy)]
pub enum Control {
Pad1 = 112,
Pad2,
Pad3,
Pad4,
Pad5,
Pad6,
Pad7,
Pad8,
Pad9,
Pad10,
Pad11,
Pad12,
Pad13,
Pad14,
Pad15,
Pad16,
}
#[repr(u8)]
pub enum Colour {
Red = 1,
Green = 4,
Yellow = 5,
Blue = 16,
Purple = 17,
Cyan = 20,
White = 127,
}
pub fn get_value(param_id: u8, item_id: u8) -> MidiMessage {
MidiMessage::SysEx(SysExEvent::new_manufacturer(
EXTENDED_ID_VALUE,
&[
0x7f,
PRODUCT_ID,
verb::GET,
0x00,
param_id,
item_id,
consts::EOX,
],
))
}
pub fn set_value(param_id: u8, item_id: u8, value: u8) -> MidiMessage {
MidiMessage::SysEx(SysExEvent::new_manufacturer(
EXTENDED_ID_VALUE,
&[
0x7f,
PRODUCT_ID,
verb::SET,
0x00,
param_id,
item_id,
value,
consts::EOX,
],
))
}
}