diff --git a/ch32v-insert-coin/src/app.rs b/ch32v-insert-coin/src/app.rs index 28b22f2..e2682ba 100644 --- a/ch32v-insert-coin/src/app.rs +++ b/ch32v-insert-coin/src/app.rs @@ -295,7 +295,7 @@ pub struct Sequences { pub led0: sequencer::BasicSequence<'static>, pub led1: sequencer::BasicSequence<'static>, pub led2: sequencer::BasicSequence<'static>, - pub audio: &'static [&'static [sequencer::SequenceEntry]], + pub audio: &'static [(&'static [sequencer::SequenceEntry], usize)], } // things that touch hardware @@ -528,9 +528,8 @@ impl App { // TODO #[cfg(feature = "enable_print")] println!("click"); - self.services - .sequencer - .play_sequence(self.sequences.audio[self.settings.button_sound_index], 1); + let data = self.sequences.audio[self.settings.button_sound_index]; + self.services.sequencer.play_sequence(data.0, data.1); self.settings.button_sound_index += 1; if self.settings.button_sound_index > self.sequences.audio.len() - 1 { diff --git a/ch32v-insert-coin/src/main.rs b/ch32v-insert-coin/src/main.rs index 481fc31..b3aa5ae 100644 --- a/ch32v-insert-coin/src/main.rs +++ b/ch32v-insert-coin/src/main.rs @@ -267,7 +267,7 @@ fn app_main(mut p: hal::Peripherals) -> ! { let sample_player = DacService::new(ch32_hal::timer::Channel::Ch4, dac_service_data); sample_player.load_data(coin_sound); - let sequencer = app::sequencer::DynamicSequence::new(&SEQUENCE_LIST[0], tick_rate_hz); + let sequencer = app::sequencer::DynamicSequence::new(&SEQUENCE_LIST[0].0, tick_rate_hz); let app_services = Services { led0: LedService::new(led0_ch), diff --git a/ch32v-insert-coin/src/sequences.rs b/ch32v-insert-coin/src/sequences.rs index 55cac19..b6f387b 100644 --- a/ch32v-insert-coin/src/sequences.rs +++ b/ch32v-insert-coin/src/sequences.rs @@ -62,367 +62,87 @@ pub static WAHWAH: [SequenceEntry; 9] = [ }, ]; -pub static DECENDING_TONES: [SequenceEntry; 71] = [ - // SequenceEntry { - // frequency_hz: 1000, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 990, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 980, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 970, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 960, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 950, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 940, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 930, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 920, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 910, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 900, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 890, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 880, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 870, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 860, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 850, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 840, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 830, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 820, - // duration_ms: 50, - // }, - // SequenceEntry { - // frequency_hz: 810, - // duration_ms: 50, - // }, +pub static DECENDING_TONES: [SequenceEntry; 21] = [ + SequenceEntry { + frequency_hz: 1100, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1050, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1000, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 950, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 900, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 850, + duration_ms: 50, + }, SequenceEntry { frequency_hz: 800, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 790, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 780, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 770, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 760, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 750, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 740, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 730, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 720, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 710, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 700, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 690, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 680, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 670, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 660, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 650, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 640, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 630, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 620, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 610, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 600, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 590, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 580, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 570, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 560, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 550, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 540, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 530, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 520, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 510, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 500, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 490, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 480, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 470, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 460, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 450, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 440, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 430, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 420, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 410, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 400, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 390, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 380, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 370, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 360, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 350, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 340, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 330, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 320, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 310, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 300, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 290, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 280, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 270, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 260, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 250, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 240, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 230, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 220, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 210, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 200, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 190, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 180, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 170, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 160, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 150, duration_ms: 50, }, - SequenceEntry { - frequency_hz: 140, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 130, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 120, - duration_ms: 50, - }, - SequenceEntry { - frequency_hz: 110, - duration_ms: 50, - }, SequenceEntry { frequency_hz: 100, duration_ms: 50, @@ -494,12 +214,134 @@ pub static SOUND_8_BIT_GAME_3: [SequenceEntry; 3] = [ }, ]; -pub static SEQUENCE_LIST: [&'static [SequenceEntry]; 6] = [ - &SOUND_8_BIT_GAME_3, - &SOUND_8_BIT_GAME_1, - &SOUND_8_BIT_GAME, - &COIN_CHIRP, - &WAHWAH, - &DECENDING_TONES, +// PLAY 1 TIMES +pub static ASCENDING_TONES: [SequenceEntry; 29] = [ + SequenceEntry { + frequency_hz: 100, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 150, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 200, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 250, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 300, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 350, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 400, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 450, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 500, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 550, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 600, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 650, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 700, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 750, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 800, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 850, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 900, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 950, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1000, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1050, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1100, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1150, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1200, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1250, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1300, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1350, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1400, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1450, + duration_ms: 50, + }, + SequenceEntry { + frequency_hz: 1500, + duration_ms: 1000, + }, +]; + +pub static SEQUENCE_LIST: [(&'static [SequenceEntry], usize); 7] = [ + (&ASCENDING_TONES, 0), + (&SOUND_8_BIT_GAME_3, 2), + // TODO: this one is broken: + (&SOUND_8_BIT_GAME_1, 1), + (&SOUND_8_BIT_GAME, 1), + (&COIN_CHIRP, 0), + (&WAHWAH, 5), + (&DECENDING_TONES, 0), // &TEST_SEQ, ];