use serde::{Deserialize, Serialize};
use serde_big_array::BigArray;
use std::sync::Arc;
use crate::envelope::Envelope;
use crate::instr_midi::InstrMidi;
use crate::sample::Sample;
use crate::vibrato::Vibrato;
#[derive(Serialize, Deserialize, Debug)]
pub struct InstrDefault {
#[serde(with = "BigArray")]
pub sample_for_note: [u8; 96],
pub volume_envelope: Arc<Envelope>, pub panning_envelope: Arc<Envelope>, pub vibrato: Arc<Vibrato>,
pub volume_fadeout: f32, pub sample: Vec<Arc<Sample>>,
pub midi: InstrMidi,
pub midi_mute_computer: bool,
}
impl Default for InstrDefault {
fn default() -> Self {
Self {
sample_for_note: [0; 96],
volume_envelope: Arc::new(Envelope::default()),
panning_envelope: Arc::new(Envelope::default()),
vibrato: Arc::new(Vibrato::default()),
volume_fadeout: 0.0,
sample: vec![],
midi: InstrMidi::default(),
midi_mute_computer: false,
}
}
}