summaryrefslogtreecommitdiff
path: root/project/Core/Src/Project/player.c
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-12-10 17:49:22 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-12-10 17:49:22 -0500
commit29f69b5b7831c846cea1f61a7de4920fafa97ede (patch)
treea216cbcef9306ab5707752d8eec33f5a5a682744 /project/Core/Src/Project/player.c
parent9db025199644833d70e729d03e6151f8cce58ed5 (diff)
download340-repo-Sowgro-29f69b5b7831c846cea1f61a7de4920fafa97ede.tar.gz
340-repo-Sowgro-29f69b5b7831c846cea1f61a7de4920fafa97ede.tar.bz2
340-repo-Sowgro-29f69b5b7831c846cea1f61a7de4920fafa97ede.zip
push for laptop
Diffstat (limited to '')
-rw-r--r--project/Core/Src/Project/player.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/project/Core/Src/Project/player.c b/project/Core/Src/Project/player.c
index 71531a8..0925483 100644
--- a/project/Core/Src/Project/player.c
+++ b/project/Core/Src/Project/player.c
@@ -9,6 +9,8 @@
#include <stdint.h>
#include "endian_converters.h"
#include "hw8.h"
+#include "activity4.h"
+#include "song_info.h"
#define NOTE_OFF_EVENT (0)
#define NOTE_ON_EVENT (1)
@@ -22,11 +24,24 @@ typedef struct {
} note_event_t;
void parse_song(uint8_t *p_song) {
+ header_t header;
+ header = get_header(p_song);
+ p_song += sizeof(header_t) - 2; // move pointer past header
+
+ song_info_t song_info;
+ p_song = get_song_info(p_song, &song_info);
+
+ note_event_t trackEvents[header.ntrcks][1024];
+ for(int i = 0; i < header.ntrcks; i++){
+ p_song = parse_track(p_song, trackEvents[i]);
+ }
+}
+
+uint8_t parse_track(uint8_t *p_song, note_event_t *events) {
p_song += 4; // skip MTrk
uint32_t MTrk_len = convert_to_uint32(p_song);
p_song += 4;
- note_event_t events[1/*track*/][1024/*event*/];
int curEvent = 0;
uint32_t prev_abs_time = 0;
@@ -59,9 +74,9 @@ void parse_song(uint8_t *p_song) {
note.value = *p_song;
p_song++;
- events[0][curEvent++] = note;
+ events[curEvent++] = note;
}
- events[0][curEvent] = 0;
+ events[curEvent] = 0; // null terminate array
- printf("done %p", events);
+ return p_song;
}