aboutsummaryrefslogtreecommitdiff
path: root/composer/song.c
diff options
context:
space:
mode:
Diffstat (limited to 'composer/song.c')
-rw-r--r--composer/song.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/composer/song.c b/composer/song.c
index 7c99877..424c52c 100644
--- a/composer/song.c
+++ b/composer/song.c
@@ -28,15 +28,17 @@
static t_song* song_new(t_symbol* song_name) {
ArrayListGetByName(songs, song_name, t_song*, obj);
- debugprint("song_new - object lookup {{%s}} => " PTR, song_name->s_name, obj);
+ debugprint("song_new - object lookup %s => " PTR, song_name->s_name, obj);
if(obj) return obj;
t_song* x = (t_song*)getbytes(sizeof(t_song));
x->x_name = song_name;
- ArrayListInit(x->x_tracks, struct _track*, 16);
+ ArrayListInit(x->x_tracks, struct _track*, 16);
+ // mastertrack is named like the song
+ x->x_mastertrack = mastertrack_new(x, x->x_name, 0);
debugprint("created a song object (" PTR "), "
- "creation args: {{%s}}",
+ "creation args: %s",
x, x->x_name->s_name);
ArrayListAdd(songs, t_song*, x);
@@ -44,6 +46,17 @@ static t_song* song_new(t_symbol* song_name) {
return x;
}
+static void song_mastertrack_fix_cols(t_song* x) {
+ debugprint("song_mastertrack_fix_cols(" PTR "), new track count: %d", x, x->x_tracks_count);
+ debugprint("song='%s' mastertrack=" PTR, x->x_name->s_name, x->x_mastertrack);
+ debugprint("we have %d patterns, sir", x->x_mastertrack->x_patterns_count);
+ int j;
+ for(j = 0; j < x->x_mastertrack->x_patterns_count; j++) {
+ if(j > 0) post("WARNING: mastertrack with more than one pattern!");
+ pattern_resize_cols(x->x_mastertrack->x_patterns[j], x->x_tracks_count);
+ }
+}
+
static void song_free(t_song* x) {
// free tracks memory
ArrayListFree(x->x_tracks, t_track*);