aboutsummaryrefslogtreecommitdiff
path: root/composer/song.c
diff options
context:
space:
mode:
authormescalinum <mescalinum@users.sourceforge.net>2009-08-19 23:51:59 +0000
committermescalinum <mescalinum@users.sourceforge.net>2009-08-19 23:51:59 +0000
commit1bdf5157d0707e89b1bce0a939fbcfcf33047816 (patch)
tree57831761500dd95a51d6a0616ac7b7a71bb17625 /composer/song.c
parent6569fedbe695c5e6cb746ac972c467ca46b2f958 (diff)
[song] is born
svn path=/trunk/externals/ffext/; revision=11988
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*);