summaryrefslogtreecommitdiff
path: root/project/Core/Inc/Project/parser.h
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-12-14 00:21:02 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-12-14 00:21:02 -0500
commite68a05b29de507a56b8747557707e8d6cdd68542 (patch)
tree1f7c457159af75ae198258a2301a55531d7baff5 /project/Core/Inc/Project/parser.h
parent519f868c445a86b988772307ea1f1e2fc95fe54a (diff)
download340-repo-Sowgro-e68a05b29de507a56b8747557707e8d6cdd68542.tar.gz
340-repo-Sowgro-e68a05b29de507a56b8747557707e8d6cdd68542.tar.bz2
340-repo-Sowgro-e68a05b29de507a56b8747557707e8d6cdd68542.zip
Refactor
Diffstat (limited to 'project/Core/Inc/Project/parser.h')
-rw-r--r--project/Core/Inc/Project/parser.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/project/Core/Inc/Project/parser.h b/project/Core/Inc/Project/parser.h
new file mode 100644
index 0000000..356a4ad
--- /dev/null
+++ b/project/Core/Inc/Project/parser.h
@@ -0,0 +1,46 @@
+/*
+ * player.h
+ *
+ * Created on: Dec 10, 2025
+ * Author: sowgro
+ */
+
+#ifndef INC_PROJECT_PARSER_H_
+#define INC_PROJECT_PARSER_H_
+
+#include <stdint.h>
+
+#define NOTE_OFF_EVENT (0)
+#define NOTE_ON_EVENT (1)
+#define KEY_PRESSURE (2)
+
+typedef struct {
+ uint8_t ev_type;
+ uint32_t abs_time;
+ uint8_t key_number;
+ uint8_t value;
+} note_event_t;
+
+typedef struct {
+ note_event_t events[1024];
+ int nEvents;
+ int curEventIndex;
+} track_t;
+
+typedef struct {
+ char *title;
+ char *copyright;
+ int tempo;
+} song_info_t;
+
+void parser_play_notes();
+
+void parse_song(uint8_t *p_song);
+
+uint8_t *parse_track(uint8_t *p_song, track_t *track);
+
+uint8_t *parse_song_info(uint8_t *p_song, song_info_t *ret);
+
+song_info_t parser_get_song_info();
+
+#endif /* INC_PROJECT_PARSER_H_ */