Skip to content

Instantly share code, notes, and snippets.

@agrif
Created April 9, 2026 20:10
Show Gist options
  • Select an option

  • Save agrif/c5c667a8a253d215cc501c7265901247 to your computer and use it in GitHub Desktop.

Select an option

Save agrif/c5c667a8a253d215cc501c7265901247 to your computer and use it in GitHub Desktop.
use embassy_sync::pubsub::PubSubBehavior;
use super::music::{music, Music};
// jingles adapted from
// https://github.com/DavinderHanda/HandaDigitalSpeaker/
#[derive(Clone, Copy, Debug, defmt::Format)]
#[allow(dead_code)]
pub enum Jingle {
// basic / system sounds
Aa,
Da,
Sdp,
Tdb,
Tct,
Ud,
Dd,
Ursb,
Fahls,
Sllt,
Sb,
Slb,
Vsc,
Dbl,
Bhi,
Chn,
Err,
Ok,
Bsy,
Rst,
Wup,
Slp,
Tmr,
Att,
// premium digital
Iph,
Pop,
Msg,
Noti,
Clk,
Tch,
// short system melodies
Jingle1,
Jingle2,
Jingle3,
Start1,
Start2,
End1,
End2,
Ready1,
Ready2,
// success / notification
Success1,
Success2,
Notify1,
Notify2,
Ok1,
Ok2,
// fun / classic game tunes
Coin1,
Coin2,
Win1,
Win2,
Fail1,
// system / startup
PowerOn,
BootOk,
Ready,
Shutdown,
// success / confirm
Success,
Confirm,
TaskDone,
Complete,
// warning / error
Error,
Warning,
AlertDrop,
// key / click / touch
ButtonTap,
KeyPress,
ShortBlip,
FastTick,
// door / lock
Lock,
Unlock,
}
impl Jingle {
pub fn play(&self) {
super::JINGLES.publish_immediate(*self)
}
pub fn music(&self) -> Music<'static> {
match self {
Self::Aa => music!(bpm 150, octave o5, [
C 16, E 16, G 16, (o6) C 8,
]),
Self::Da => music!(bpm 150, octave o5, [
(o6) C 16, G 16, E 16, C 8,
]),
Self::Sdp => music!(bpm 188, octave o5, [
G 16, (o6) C 3 32,
]),
Self::Tdb => music!(bpm 125, octave o4, [
(o5) D 16, B 16, Fis 16,
]),
Self::Tct => music!(bpm 125, octave o5, [
A 3 32, (o6) C 8,
]),
Self::Ud => music!(bpm 150, octave o5, [
C 16, E 16, G 8,
]),
Self::Dd => music!(bpm 150, octave o5, [
G 16, E 16, C 8,
]),
Self::Ursb => music!(bpm 188, octave o5, [
G 16, G 16, G 16, G 16,
]),
Self::Fahls => music!(bpm 125, octave o5, [
G 16, G 16, G 16, G 16, (o6) Dis 16,
]),
Self::Sllt => music!(bpm 86, octave o4, [
G 4,
]),
Self::Sb => music!(bpm 188, octave o5, [
B 16,
]),
Self::Slb => music!(bpm 150, octave o5, [
B 4,
]),
Self::Vsc => music!(bpm 150, octave o6, [
G 32,
]),
Self::Dbl => music!(bpm 150, octave o4, [
G 16,
R 16,
G 16,
]),
Self::Bhi => music!(bpm 150, octave o6, [
G 16, R 32, A 3 32,
]),
Self::Chn => music!(bpm 188, octave o6, [
(o5) B 16, D 16, F 16,
]),
Self::Err => music!(bpm 150, octave o4, [
D 3 32, R 32, D 3 32, R 32, D 3 32, R 32,
]),
Self::Ok => music!(bpm 188, octave o6, [
D 16, Fis 3 32,
]),
Self::Bsy => music!(bpm 188, octave o5, [
D 3 32, R 16, D 3 32, R 16,
]),
Self::Rst => music!(bpm 150, octave o5, [
C 16, E 16, G 16, (o6) C 16, G 3 16,
]),
Self::Wup => music!(bpm 188, octave o5, [
E 16, G 5 64, B 3 32,
]),
Self::Slp => music!(bpm 150, octave o4, [
(o5) C 8, G 8,
]),
Self::Tmr => music!(bpm 150, octave o6, [
(o5) B 16, R 16, Fis 16, R 16, B 16,
]),
Self::Att => music!(bpm 214, octave o5, [
G 16, R 16, G 16, R 16, G 16, R 16, G 16, R 16, G 16, R 16,
]),
Self::Iph => music!(bpm 214, octave o6, [
D 16, R 32, G 3 32,
]),
Self::Pop => music!(bpm 188, octave o5, [
F 32, R 64, A 3 64,
]),
Self::Msg => music!(bpm 188, octave o5, [
A 16, R 32, (o6) E 3 32,
]),
Self::Noti => music!(bpm 214, octave o6, [
(o5) B 16, R 32, Fis 16,
]),
Self::Clk => music!(bpm 214, octave o5, [
A 32,
]),
Self::Tch => music!(bpm 214, octave o5, [
(o6) D 32, R 64, A 32,
]),
Self::Jingle1 => music!(bpm 150, octave o5, [
C 16, E 16, G 3 32, (o6) C 8,
]),
Self::Jingle2 => music!(bpm 150, octave o6, [
(o5) G 16, (o5) B 16, D 3 32, G 8,
]),
Self::Jingle3 => music!(bpm 150, octave o4, [
G 16, A 16, B 3 32, (o5) C 8,
]),
Self::Start1 => music!(bpm 150, octave o5, [
C 16, R 32, E 16, R 32, G 3 32, R 3 64, (o6) C 8,
]),
Self::Start2 => music!(bpm 150, octave o5, [
E 16, R 32, G 16, R 32, B 3 32, R 3 64, (o6) E 8,
]),
Self::End1 => music!(bpm 150, octave o5, [
(o6) E 16, R 32, B 16, R 32, G 5 64, R 32, C 3 32,
]),
Self::End2 => music!(bpm 150, octave o5, [
A 16, R 32, F 16, R 32, D 5 64, R 32, (o4) A 3 32,
]),
Self::Ready1 => music!(bpm 188, octave o5, [
C 16, R 32, E 16, R 32, A 3 32, R 32, (o6) C 8,
]),
Self::Ready2 => music!(bpm 150, octave o5, [
(o4) A 16, R 64, Cis 16, R 64, E 3 32, R 64, A 8,
]),
Self::Success1 => music!(bpm 150, octave o5, [
G 16, B 16, (o6) E 3 32, (o6) A 8,
]),
Self::Success2 => music!(bpm 188, octave o5, [
E 16, R 32, A 5 64, R 32, B 8, R 32, (o6) E 8,
]),
Self::Notify1 => music!(bpm 188, octave o6, [
(o5) B 16, R 32, E 5 64, R 32, A 8,
]),
Self::Notify2 => music!(bpm 188, octave o5, [
E 16, R 32, A 5 64, R 32, (o6) C 8, R 32, (o6) E 8,
]),
Self::Ok1 => music!(bpm 188, octave o6, [
(o5) B 16, R 32, E 5 64, R 32, G 8,
]),
Self::Ok2 => music!(bpm 188, octave o5, [
D 16, R 32, A 5 64, R 32, (o6) D 8, R 32, (o6) G 8,
]),
Self::Coin1 => music!(bpm 150, octave o6, [
C 16, R 64, G 16, R 64, (o7) C 3 32,
]),
Self::Coin2 => music!(bpm 188, octave o6, [
(o5) A 16, R 64, E 5 64, R 64, A 3 32,
]),
Self::Win1 => music!(bpm 150, octave o5, [
C 16, R 32, E 16, R 32, G 5 64, R 32, (o6) C 3 32, R 32, (o6) E 8,
]),
Self::Win2 => music!(bpm 188, octave o5, [
(o4) G 16, R 32, (o4) B 5 64, R 32, D 5 64, R 32, G 3 32, R 32, B 8,
]),
Self::Fail1 => music!(bpm 188, octave o5, [
G 3 32, R 32, E 3 32, R 32, C 8, R 32, (o4) G 5 32,
]),
Self::PowerOn => music!(bpm 188, octave o5, [
C 16, E 5 64, G 3 32,
]),
Self::BootOk => music!(bpm 188, octave o5, [
(o4) A 16, Cis 16, A 3 32,
]),
Self::Ready => music!(bpm 188, octave o5, [
G 16, R 32, B 3 32,
]),
Self::Shutdown => music!(bpm 188, octave o5, [
(o6) C 16, A 16, G 5 64,
]),
Self::Success => music!(bpm 188, octave o5, [
A 16, (o6) C 5 64,
]),
Self::Confirm => music!(bpm 188, octave o5, [
G 16, R 32, B 3 32,
]),
Self::TaskDone => music!(bpm 188, octave o6, [
C 3 64, E 16, G 5 64,
]),
Self::Complete => music!(bpm 150, octave o5, [
B 16, R 64, (o6) E 16,
]),
Self::Error => music!(bpm 150, octave o5, [
C 3 32, R 32, (o4) E 8,
]),
Self::Warning => music!(bpm 188, octave o5, [
D 16, R 3 64, (o4) G 16, R 3 64,
D 16, R 3 64, (o4) G 16, R 3 64,
]),
Self::AlertDrop => music!(bpm 188, octave o5, [
G 3 32, R 32, (o4) A 8,
]),
Self::ButtonTap => music!(bpm 188, octave o5, [
A 32, R 32, B 32,
]),
Self::KeyPress => music!(bpm 188, octave o5, [
A 32, R 64, (o6) E 32,
]),
Self::ShortBlip => music!(bpm 188, octave o5, [
E 32, R 64, G 32,
]),
Self::FastTick => music!(bpm 188, octave o6, [
C 32, R 64, E 32,
]),
Self::Lock => music!(bpm 188, octave o5, [
E 16, R 32, C 5 64,
]),
Self::Unlock => music!(bpm 188, octave o5, [
(o4) A 16, R 32, E 3 32,
]),
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment