1#![allow(unused)]
4#![allow(missing_docs)]
5use super::ToneValue;
6
7#[macro_export]
9macro_rules! song {
10 ($tempo:expr, [$(($note:expr, $duration:expr)),*]) => {
11 {
12 const WHOLENOTE: u32 = (600_000 * 4) / $tempo;
13 [
14 $(
15 ToneValue { frequency: $note, duration: WHOLENOTE / $duration },
16 )*
17 ]
18 }
19 };
20 }
21
22pub const NOTE_B0: u32 = 31;
24pub const NOTE_C1: u32 = 33;
25pub const NOTE_CS1: u32 = 35;
26pub const NOTE_D1: u32 = 37;
27pub const NOTE_DS1: u32 = 39;
28pub const NOTE_E1: u32 = 41;
29pub const NOTE_F1: u32 = 44;
30pub const NOTE_FS1: u32 = 46;
31pub const NOTE_G1: u32 = 49;
32pub const NOTE_GS1: u32 = 52;
33pub const NOTE_A1: u32 = 55;
34pub const NOTE_AS1: u32 = 58;
35pub const NOTE_B1: u32 = 62;
36pub const NOTE_C2: u32 = 65;
37pub const NOTE_CS2: u32 = 69;
38pub const NOTE_D2: u32 = 73;
39pub const NOTE_DS2: u32 = 78;
40pub const NOTE_E2: u32 = 82;
41pub const NOTE_F2: u32 = 87;
42pub const NOTE_FS2: u32 = 93;
43pub const NOTE_G2: u32 = 98;
44pub const NOTE_GS2: u32 = 104;
45pub const NOTE_A2: u32 = 110;
46pub const NOTE_AS2: u32 = 117;
47pub const NOTE_B2: u32 = 123;
48pub const NOTE_C3: u32 = 131;
49pub const NOTE_CS3: u32 = 139;
50pub const NOTE_D3: u32 = 147;
51pub const NOTE_DS3: u32 = 156;
52pub const NOTE_E3: u32 = 165;
53pub const NOTE_F3: u32 = 175;
54pub const NOTE_FS3: u32 = 185;
55pub const NOTE_G3: u32 = 196;
56pub const NOTE_GS3: u32 = 208;
57pub const NOTE_A3: u32 = 220;
58pub const NOTE_AS3: u32 = 233;
59pub const NOTE_B3: u32 = 247;
60pub const NOTE_C4: u32 = 262;
61pub const NOTE_CS4: u32 = 277;
62pub const NOTE_D4: u32 = 294;
63pub const NOTE_DS4: u32 = 311;
64pub const NOTE_E4: u32 = 330;
65pub const NOTE_F4: u32 = 349;
66pub const NOTE_FS4: u32 = 370;
67pub const NOTE_G4: u32 = 392;
68pub const NOTE_GS4: u32 = 415;
69pub const NOTE_A4: u32 = 440;
70pub const NOTE_AS4: u32 = 466;
71pub const NOTE_B4: u32 = 494;
72pub const NOTE_C5: u32 = 523;
73pub const NOTE_CS5: u32 = 554;
74pub const NOTE_D5: u32 = 587;
75pub const NOTE_DS5: u32 = 622;
76pub const NOTE_E5: u32 = 659;
77pub const NOTE_F5: u32 = 698;
78pub const NOTE_FS5: u32 = 740;
79pub const NOTE_G5: u32 = 784;
80pub const NOTE_GS5: u32 = 831;
81pub const NOTE_A5: u32 = 880;
82pub const NOTE_AS5: u32 = 932;
83pub const NOTE_B5: u32 = 988;
84pub const NOTE_C6: u32 = 1047;
85pub const NOTE_CS6: u32 = 1109;
86pub const NOTE_D6: u32 = 1175;
87pub const NOTE_DS6: u32 = 1245;
88pub const NOTE_E6: u32 = 1319;
89pub const NOTE_F6: u32 = 1397;
90pub const NOTE_FS6: u32 = 1480;
91pub const NOTE_G6: u32 = 1568;
92pub const NOTE_GS6: u32 = 1661;
93pub const NOTE_A6: u32 = 1760;
94pub const NOTE_AS6: u32 = 1865;
95pub const NOTE_B6: u32 = 1976;
96pub const NOTE_C7: u32 = 2093;
97pub const NOTE_CS7: u32 = 2217;
98pub const NOTE_D7: u32 = 2349;
99pub const NOTE_DS7: u32 = 2489;
100pub const NOTE_E7: u32 = 2637;
101pub const NOTE_F7: u32 = 2794;
102pub const NOTE_FS7: u32 = 2960;
103pub const NOTE_G7: u32 = 3136;
104pub const NOTE_GS7: u32 = 3322;
105pub const NOTE_A7: u32 = 3520;
106pub const NOTE_AS7: u32 = 3729;
107pub const NOTE_B7: u32 = 3951;
108pub const NOTE_C8: u32 = 4186;
109pub const NOTE_CS8: u32 = 4435;
110pub const NOTE_D8: u32 = 4699;
111pub const NOTE_DS8: u32 = 4978;
112pub const REST: u32 = 0;
113
114pub const NOTE: u32 = 10;
117pub const DOTTED_NOTE: u32 = NOTE - NOTE / 2;
118pub const HALF_NOTE: u32 = 20;
119pub const DOTTED_HALF_NOTE: u32 = HALF_NOTE - HALF_NOTE / 2;
120pub const QUARTER_NOTE: u32 = 40;
121pub const DOTTED_QUARTER_NOTE: u32 = QUARTER_NOTE - QUARTER_NOTE / 2;
122pub const EIGHTEENTH_NOTE: u32 = 80;
123pub const DOTTED_EIGHTEENTH_NOTE: u32 = EIGHTEENTH_NOTE - EIGHTEENTH_NOTE / 2;
124pub const SIXTEENTH_NOTE: u32 = 160;
125pub const DOTTED_SIXTEENTH_NOTE: u32 = SIXTEENTH_NOTE - SIXTEENTH_NOTE / 2;
126pub const THIRTYSECOND_NOTE: u32 = 320;
127pub const DOTTED_THIRTYSECOND_NOTE: u32 = THIRTYSECOND_NOTE - THIRTYSECOND_NOTE / 2;