From 72e6a937f6e95142639a859b27d58a3b9124b57e Mon Sep 17 00:00:00 2001 From: EvanR Date: Sun, 4 Jan 2009 01:32:04 -0600 Subject: [PATCH] Import track names added. The track names in the midi file are used as the track names for the tracks. The track structure was changed so that instead of an array of characters the name is a char pointer. The defined constant MAX_TRACK_NAME was removed. There is no longer a limit on track name length. --- src/main.cpp | 2 +- src/saveload.cpp | 11 ++++++----- src/seq.h | 7 ++++--- src/trackmodule.cpp | 5 ++++- src/ui.cpp | 1 + src/ui.fl | 2 ++ 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 8784ede..ed18cb8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,7 +20,7 @@ Boston, MA 02110-1301, USA */ -#include +#include #include #include diff --git a/src/saveload.cpp b/src/saveload.cpp index 233682f..f55c3ae 100644 --- a/src/saveload.cpp +++ b/src/saveload.cpp @@ -472,10 +472,10 @@ int load(const char* filename){ else if(key == "name"){ file >> n; file.get(); - char buf[256]; + char* buf = (char*)malloc(n+1); file.read(buf,n); buf[n] = '\0'; - strncpy(t->name,buf,256); + t->name = buf; } else if(key == "alive"){ file >> t->alive; } else if(key == "seqpat"){ @@ -526,6 +526,7 @@ int load(const char* filename){ file >> key; } tracks.push_back(t); + ui->track_info->add_track(); } else{ file.ignore(std::numeric_limits::max(),'\n'); @@ -1108,8 +1109,8 @@ int loadsmf(const char* filename){ scope_print(tbuf); free(tbuf); - //tracknames[N] = new char[size+1]; - //strcpy(tracknames[N],abuf); + tracknames[N] = (char*)malloc(sizeof(char)*(size+1)); + strncpy(tracknames[N],abuf,size+1); break; case 4://instrument name @@ -1333,7 +1334,7 @@ int loadsmf(const char* filename){ t->bank = banklist[i]; t->port = 0; - //strncpy(t->name,tracknames[i],MAX_TRACK_NAME); + t->name = tracknames[i]; add_track(t); p++; diff --git a/src/seq.h b/src/seq.h index bdc1e5c..3669bdd 100644 --- a/src/seq.h +++ b/src/seq.h @@ -31,8 +31,7 @@ #define MIDI_CHANNEL_PRESSURE 0xD0 #define MIDI_PITCH_WHEEL 0xE0 -#define MAX_TRACK_NAME 256 - +#include #include struct mevent { @@ -282,7 +281,7 @@ struct track { int solo; int vol; int pan; - char name[MAX_TRACK_NAME]; + char* name; int alive; seqpat* head; seqpat* skip; @@ -300,6 +299,7 @@ struct track { solo = 0; vol = 127; pan = 64; + name = (char*)malloc(8); name[0] = '\0'; alive = 1; head = new seqpat(0,0,0,new pattern()); @@ -309,6 +309,7 @@ struct track { } ~track(){ + free(name); seqpat* s = head; seqpat* next; while(s){ diff --git a/src/trackmodule.cpp b/src/trackmodule.cpp index 0f2cbe6..2828225 100644 --- a/src/trackmodule.cpp +++ b/src/trackmodule.cpp @@ -85,7 +85,10 @@ void bankcb(fltk::Widget* w, long i){ void namecb(fltk::Widget* w, long i){ fltk::Input* o = (fltk::Input*)w; track* t = tracks[i]; - strncpy(t->name,o->text(),MAX_TRACK_NAME); + strcpy(t->name,o->text()); + free(t->name); + t->name = (char*)malloc(strlen(o->text())+1); + strcpy(t->name,o->text()); } void mutecb(fltk::Widget* w, long i){ diff --git a/src/ui.cpp b/src/ui.cpp index 0aea1f6..13bf5c9 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -22,6 +22,7 @@ 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ +#include #include #include #include "backend.h" diff --git a/src/ui.fl b/src/ui.fl index 617b6e5..01242d8 100644 --- a/src/ui.fl +++ b/src/ui.fl @@ -29,6 +29,8 @@ decl {/* Boston, MA 02110-1301, USA */} {} +decl {\#include } {} + decl {\#include } {} decl {\#include } {} -- 2.11.4.GIT