From 637e545f27f9f13f7068230aae1b2b7c79719bbe Mon Sep 17 00:00:00 2001 From: Harry van Haaren Date: Thu, 5 Sep 2013 14:28:11 +0100 Subject: [PATCH] -Working on saving all master track details --- src/avtk/avtk_clip_selector.h | 5 ++++ src/avtk/avtk_reverb.h | 4 +++ src/diskreader.cxx | 47 +++++++++++++++++++++++------------ src/diskreader.hxx | 4 +++ src/diskwriter.cxx | 41 +++++++++++++++++++++++++++--- src/diskwriter.hxx | 2 ++ src/gmastertrack.hxx | 4 +-- 7 files changed, 85 insertions(+), 22 deletions(-) diff --git a/src/avtk/avtk_clip_selector.h b/src/avtk/avtk_clip_selector.h index e74a780..112c08e 100644 --- a/src/avtk/avtk_clip_selector.h +++ b/src/avtk/avtk_clip_selector.h @@ -151,6 +151,11 @@ class ClipSelector : public Fl_Button redraw(); } + std::string clipName(int clip) + { + return clips[clip].getName(); + } + void draw() { if (damage() & FL_DAMAGE_ALL) diff --git a/src/avtk/avtk_reverb.h b/src/avtk/avtk_reverb.h index 4369b89..b8fe266 100644 --- a/src/avtk/avtk_reverb.h +++ b/src/avtk/avtk_reverb.h @@ -55,6 +55,10 @@ class Reverb : public Fl_Slider void wet(float v) { amp = v; redraw(); } void damping(float v){damp = v; redraw();} + float size(){return s;} + float wet (){return amp;} + float damping(){return damp;} + bool getActive(){return active;} void setActive(bool a){active = a; redraw();} diff --git a/src/diskreader.cxx b/src/diskreader.cxx index 4390e1f..2e27a3d 100644 --- a/src/diskreader.cxx +++ b/src/diskreader.cxx @@ -48,10 +48,6 @@ void DiskReader::readSession( std::string path ) char *sampleString = new char[file_length]; sampleFile.read(sampleString, file_length); - //cout << "sessionFile string:\n " << sessionString << endl; - //cout << "sampleFile string: \n " << sampleString << endl; - - // create cJSON nodes from strings session = cJSON_Parse( sessionString ); if (!session) { @@ -63,10 +59,38 @@ void DiskReader::readSession( std::string path ) printf("Error in Sample JSON before: [%s]\n",cJSON_GetErrorPtr()); return; } - //cout << "readSample: " << cJSON_Print( sample ) << endl; + + //cout << "session: " << cJSON_Print( session ) << endl; + //cout << "sample: " << cJSON_Print( sample ) << endl; + readGrid(); + + // cleanup + cJSON_Delete( session ); + cJSON_Delete( sample ); + + free ( sessionString ); + free ( sampleString ); + +} + +void DiskReader::readMaster() +{ + cJSON* master = cJSON_GetObjectItem( session, "master"); + if ( master ) + { + cJSON* volume = cJSON_GetObjectItem( master, "volume"); + + + } + + +} + +void DiskReader::readGrid() +{ cJSON* tracks = cJSON_GetObjectItem( session, "tracks"); if ( tracks ) { @@ -88,7 +112,7 @@ void DiskReader::readSession( std::string path ) if ( !strcmp(clip->valuestring, "") == 0 ) { stringstream sampleFilePath; - sampleFilePath << path << "/samples/" << clip->valuestring; + sampleFilePath << sessionPath << "/samples/" << clip->valuestring; #ifdef DEBUG_LOAD cout << "clip " << sampleFilePath.str() << endl; #endif @@ -115,8 +139,7 @@ void DiskReader::readSession( std::string path ) } // nClips loop - } - + } } // nTracks loop } @@ -124,12 +147,4 @@ void DiskReader::readSession( std::string path ) { cout << "DiskReader: Error getting clip" << endl; } - - // cleanup - cJSON_Delete( session ); - cJSON_Delete( sample ); - - free ( sessionString ); - free ( sampleString ); - } diff --git a/src/diskreader.hxx b/src/diskreader.hxx index ff23605..472bed2 100644 --- a/src/diskreader.hxx +++ b/src/diskreader.hxx @@ -33,6 +33,10 @@ class DiskReader std::string sessionName; std::string sessionPath; + + // convinience functions + void readGrid(); + void readMaster(); }; #endif // LUPPP_DISK_READER_H diff --git a/src/diskwriter.cxx b/src/diskwriter.cxx index 8c97938..f5f2e67 100644 --- a/src/diskwriter.cxx +++ b/src/diskwriter.cxx @@ -9,7 +9,11 @@ #include #include +#include "gui.hxx" #include "worker.hxx" +#include "gmastertrack.hxx" + +extern Gui* gui; using namespace std; @@ -61,6 +65,39 @@ void DiskWriter::writeAudioBuffer(int track, int scene, AudioBuffer* ab ) delete ab; } +void DiskWriter::writeMaster() +{ + // Master track stuff + cJSON* masterTrack = cJSON_CreateObject(); + cJSON_AddItemToObject(session, "master", masterTrack ); + GMasterTrack* master = gui->getMasterTrack(); + + cJSON_AddNumberToObject( masterTrack, "fader", master->getVolume()->value() ); + + + // scene names + Avtk::ClipSelector* clipSelector = master->getClipSelector(); + cJSON* sceneNames = cJSON_CreateArray(); + cJSON_AddItemToObject( masterTrack, "sceneNames", sceneNames ); + for(int i = 0; i < NSCENES; i++) + { + cJSON* sceneName = cJSON_CreateString( clipSelector->clipName(i).c_str() ); + cJSON_AddItemToArray( sceneNames, sceneName ); + } + + // reverb + Avtk::Reverb* rev = master->getReverb(); + cJSON* reverb = cJSON_CreateObject(); + cJSON_AddItemToObject( masterTrack, "reverb", reverb ); + cJSON_AddNumberToObject( reverb, "size", rev->size() ); + cJSON_AddNumberToObject( reverb, "wet", rev->wet() ); + cJSON_AddNumberToObject( reverb, "damping", rev->damping() ); + + cJSON_AddNumberToObject( reverb, "wet", rev->wet() ); + cJSON_AddNumberToObject( reverb, "damping", rev->damping() ); + +} + void DiskWriter::writeSession( std::string path, std::string sessionName ) { // add session metadata @@ -70,9 +107,7 @@ void DiskWriter::writeSession( std::string path, std::string sessionName ) cJSON_AddNumberToObject( session, "version_patch", 0 ); cJSON_AddNumberToObject( session, "bpm", 120 ); - // Master track stuff - cJSON* masterTrack = cJSON_CreateObject(); - cJSON_AddItemToObject(session, "master", masterTrack ); + writeMaster(); diff --git a/src/diskwriter.hxx b/src/diskwriter.hxx index 034bded..72e3b22 100644 --- a/src/diskwriter.hxx +++ b/src/diskwriter.hxx @@ -46,6 +46,8 @@ class DiskWriter std::vector clipData; + // convienice functions for code separation + void writeMaster(); }; #endif // LUPPP_DISK_WRITER_H diff --git a/src/gmastertrack.hxx b/src/gmastertrack.hxx index 2157b80..2365cb3 100644 --- a/src/gmastertrack.hxx +++ b/src/gmastertrack.hxx @@ -71,8 +71,6 @@ class GMasterTrack : public Fl_Group source(x+5, y+26, 140, 100, ""), volBox(x+5, y+422, 140, 172, ""), - - tapTempo(x + 25 + 52, y + 26 + 4, 63, 29,"Tap"), metronomeButton(x + 9,y + 26 + 4, 64, 29,"Metro"), @@ -126,7 +124,7 @@ class GMasterTrack : public Fl_Group source.color( FL_BLACK ); source.selection_color( FL_BLUE ); - volume.amplitude( 0.75, 0.8 ); + volume.amplitude( 0.0, 0.0 ); end(); // close the group }