use phf::phf_map;
use crate::sfz::types::{fil_type, trigger, OpcodeType};
pub(crate) static OPCODE_DEFAULT: phf::Map<&'static str, OpcodeType> = phf_map! {
"amp_random" => OpcodeType::f32(Some(0.0)),
"amp_veltrack" => OpcodeType::f32(Some(100.0)),
"ampeg_attack" => OpcodeType::f32(Some(0.0)),
"ampeg_attackccN" => OpcodeType::f32(Some(0.0)), "ampeg_decay" => OpcodeType::f32(Some(0.0)),
"ampeg_hold" => OpcodeType::f32(Some(0.0)),
"ampeg_release" => OpcodeType::f32(Some(0.0)),
"ampeg_sustain" => OpcodeType::f32(Some(100.0)),
"bend_down" => OpcodeType::i16(Some(-200)),
"bend_up" => OpcodeType::i16(Some(200)),
"cutoff" => OpcodeType::f32(None),
"fil_type" => OpcodeType::fil_type(Some(fil_type::lpf_2p)),
"fil_veltrack" => OpcodeType::i16(Some(0)),
"hikey" => OpcodeType::u8(Some(127)),
"hirand" => OpcodeType::f32(Some(1.0)),
"hivel" => OpcodeType::u8(Some(127)),
"lokey" => OpcodeType::u8(Some(0)),
"loop_mode" => OpcodeType::loop_mode(None), "lorand" => OpcodeType::f32(Some(0.0)),
"lovel" => OpcodeType::u8(Some(0)),
"off_by" => OpcodeType::f32(Some(0.0)),
"offset" => OpcodeType::u32(Some(0)),
"on_loccN" => OpcodeType::i8(Some(-1)), "on_hiccN" => OpcodeType::i8(Some(-1)), "pan" => OpcodeType::f32(Some(0.0)),
"pitch_keycenter" => OpcodeType::u8(Some(60)),
"pitch_keytrack" => OpcodeType::i16(Some(100)),
"pitch_random" => OpcodeType::u16(Some(0)),
"rt_decay" => OpcodeType::f32(Some(0.0)),
"sample" => OpcodeType::PathBuf(None),
"seq_lengh" => OpcodeType::u8(Some(1)),
"seq_position" => OpcodeType::u8(Some(1)),
"sw_hikey" => OpcodeType::u8(Some(127)),
"sw_last" => OpcodeType::u8(Some(0)),
"sw_lowkey" => OpcodeType::u8(Some(0)),
"trigger" => OpcodeType::trigger(Some(trigger::attack)),
"tune" => OpcodeType::i8(Some(0)),
"volume" => OpcodeType::f32(Some(0.0)),
"xfin_hivel" => OpcodeType::u8(Some(0)),
"xfin_lovel" => OpcodeType::u8(Some(0)),
"xfout_hivel" => OpcodeType::u8(Some(127)),
"xfout_lovel" => OpcodeType::u8(Some(127)),
"sw_default" => OpcodeType::u8(None),
"ampeg_dynamic" => OpcodeType::u8(Some(0)),
"group_label" => OpcodeType::String(Some("")),
"sw_label" => OpcodeType::String(None),
};