Midnight Sun Firmware
Loading...
Searching...
No Matches
buzzer.h
1#pragma once
2
3/************************************************************************************************
4 * @file buzzer.h
5 *
6 * @brief Header file for steering buzzer
7 *
8 * @date 2025-07-28
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14
15/* Inter-component Headers */
16#include "gpio.h"
17#include "status.h"
18
19/* Intra-component Headers */
20
27/* Musical note frequencies in Hz */
28typedef enum {
29 NOTE_REST = 0,
30
31 /* Octave 3 */
32 NOTE_C3 = 131,
33 NOTE_CS3 = 139, /* C# / Db */
34 NOTE_D3 = 147,
35 NOTE_DS3 = 156, /* D# / Eb */
36 NOTE_E3 = 165,
37 NOTE_F3 = 175,
38 NOTE_FS3 = 185, /* F# / Gb */
39 NOTE_G3 = 196,
40 NOTE_GS3 = 208, /* G# / Ab */
41 NOTE_A3 = 220,
42 NOTE_AS3 = 233, /* A# / Bb */
43 NOTE_B3 = 247,
44
45 /* Octave 4 */
46 NOTE_C4 = 262,
47 NOTE_CS4 = 277, /* C# / Db */
48 NOTE_D4 = 294,
49 NOTE_DS4 = 311, /* D# / Eb */
50 NOTE_E4 = 330,
51 NOTE_F4 = 349,
52 NOTE_FS4 = 370, /* F# / Gb */
53 NOTE_G4 = 392,
54 NOTE_GS4 = 415, /* G# / Ab */
55 NOTE_A4 = 440,
56 NOTE_AS4 = 466, /* A# / Bb */
57 NOTE_B4 = 494,
58
59 /* Octave 5 */
60 NOTE_C5 = 523,
61 NOTE_CS5 = 554, /* C# / Db */
62 NOTE_D5 = 587,
63 NOTE_DS5 = 622, /* D# / Eb */
64 NOTE_E5 = 659,
65 NOTE_F5 = 698,
66 NOTE_FS5 = 740, /* F# / Gb */
67 NOTE_G5 = 784,
68 NOTE_GS5 = 831, /* G# / Ab */
69 NOTE_A5 = 880,
70 NOTE_AS5 = 932, /* A# / Bb */
71 NOTE_B5 = 988,
72
73 /* Octave 6 */
74 NOTE_C6 = 1047,
75 NOTE_CS6 = 1109, /* C# / Db */
76 NOTE_D6 = 1175,
77 NOTE_DS6 = 1245, /* D# / Eb */
78 NOTE_E6 = 1319,
79 NOTE_F6 = 1397,
80 NOTE_FS6 = 1480, /* F# / Gb */
81 NOTE_G6 = 1568,
82 NOTE_GS6 = 1661, /* G# / Ab */
83 NOTE_A6 = 1760,
84 NOTE_AS6 = 1865, /* A# / Bb */
85 NOTE_B6 = 1976,
86
87 /* Octave 7 */
88 NOTE_C7 = 2093,
89 NOTE_CS7 = 2217, /* C# / Db */
90 NOTE_D7 = 2349,
91 NOTE_DS7 = 2489, /* D# / Eb */
92 NOTE_E7 = 2637,
93 NOTE_F7 = 2794,
94 NOTE_FS7 = 2960, /* F# / Gb */
95 NOTE_G7 = 3136,
96 NOTE_GS7 = 3322, /* G# / Ab */
97 NOTE_A7 = 3520,
98 NOTE_AS7 = 3729, /* A# / Bb */
99 NOTE_B7 = 3951,
100
101 /* Octave 8 - Near 4kHz resonance */
102 NOTE_C8 = 4186
103} NoteFrequency;
104
105/* Note structure for creating melodies */
106typedef struct {
107 NoteFrequency frequency;
108 uint16_t duration_ms;
109} Note;
110
116
122
129
135
141
147
153
158bool buzzer_is_playing(void);
159
StatusCode
StatusCodes for various errors.
Definition: status.h:27
StatusCode buzzer_play_success(void)
Play predefined success melody.
Definition: buzzer.c:174
StatusCode buzzer_play_melody(Note *melody)
Play a custom melody.
Definition: buzzer.c:136
StatusCode buzzer_stop(void)
Stop any currently playing sound.
Definition: buzzer.c:178
StatusCode buzzer_play_startup(void)
Play predefined startup melody.
Definition: buzzer.c:166
bool buzzer_is_playing(void)
Check if a melody is currently playing.
Definition: buzzer.c:193
StatusCode buzzer_init(void)
Initialize the buzzer.
Definition: buzzer.c:106
StatusCode buzzer_beep(void)
Play a simple beep at 3.5kHz.
Definition: buzzer.c:114
StatusCode buzzer_play_error(void)
Play predefined error melody.
Definition: buzzer.c:170
Definition: buzzer.h:106