![]() |
Mixxx
|
00001 #include "signalrecorder.h" 00002 #include "scriptrecorder.h" 00003 #include "numberrecorder.h" 00004 #include "trackrecorder.h" 00005 #include "interp.h" 00006 00007 #ifdef __LUA__ 00008 #include "lua/luarecorder.h" 00009 #endif 00010 00011 ScriptRecorder::ScriptRecorder(Track* track) { 00012 m_track = track; 00013 00014 m_all = new QLinkedList<SignalRecorder*>(); 00015 install("[Master]", "crossfader"); 00016 install("[Master]", "balance"); 00017 install("[Master]", "volume"); 00018 installRaw("[Master]", "headVolume"); 00019 installRaw("[Master]", "headMix"); 00020 00021 install("[Channel1]", "volume"); 00022 install("[Channel2]", "volume"); 00023 install("[Channel1]", "pregain"); 00024 install("[Channel2]", "pregain"); 00025 install("[Channel1]", "rate"); 00026 install("[Channel2]", "rate"); 00027 install("[Channel1]", "filterLow"); 00028 install("[Channel1]", "filterMid"); 00029 install("[Channel1]", "filterHigh"); 00030 install("[Channel2]", "filterLow"); 00031 install("[Channel2]", "filterMid"); 00032 install("[Channel2]", "filterHigh"); 00033 00034 installTrack(1); 00035 installTrack(2); 00036 00037 installRaw("[Channel1]", "play"); 00038 installRaw("[Channel2]", "play"); 00039 installRaw("[Channel1]", "reverse"); 00040 installRaw("[Channel2]", "reverse"); 00041 installRaw("[Channel1]", "fwd"); 00042 installRaw("[Channel2]", "fwd"); 00043 installRaw("[Channel1]", "back"); 00044 installRaw("[Channel2]", "back"); 00045 00046 install("[Flanger]", "lfoDepth"); 00047 install("[Flanger]", "lfoDelay"); 00048 install("[Flanger]", "lfoPeriod"); 00049 00050 installRaw("[Channel1]", "flanger"); 00051 installRaw("[Channel2]", "flanger"); 00052 00053 installRaw("[Channel1]", "loop"); 00054 installRaw("[Channel2]", "loop"); 00055 00056 installRaw("[Channel1]", "cue_set"); 00057 installRaw("[Channel2]", "cue_set"); 00058 installRaw("[Channel1]", "cue_preview"); 00059 installRaw("[Channel2]", "cue_preview"); 00060 00061 } 00062 00063 void ScriptRecorder::install(const char* group, const char* name) { 00064 m_all->append(new NumberRecorder(group, name)); 00065 } 00066 00067 void ScriptRecorder::installRaw(const char* group, const char* name) { 00068 m_all->append(new NumberRecorder(group, name, INTERP_NONE)); 00069 } 00070 00071 void ScriptRecorder::installTrack(int channel) { 00072 m_all->append(new TrackRecorder(m_track, channel)); 00073 } 00074 00075 ScriptRecorder::~ScriptRecorder() { 00076 } 00077 00078 void ScriptRecorder::startRecord() { 00079 SDateTime* start = SDateTime::now(); 00080 00081 QLinkedList<SignalRecorder*>::iterator iter; 00082 00083 for (iter = m_all->begin(); iter != m_all->end(); iter++) { 00084 (*iter)->startRecord(start); 00085 } 00086 } 00087 00088 void ScriptRecorder::stopRecord() { 00089 00090 QLinkedList<SignalRecorder*>::iterator iter; 00091 00092 for (iter = m_all->begin(); iter != m_all->end(); iter++) { 00093 (*iter)->stopRecord(); 00094 } 00095 } 00096 00097 Macro* ScriptRecorder::getMacro() { 00098 #ifdef __LUA__ 00099 Macro* rmacro = new Macro(Macro::LANG_LUA, "Recorded Macro"); 00100 QString *macro = new QString(); 00101 LuaRecorder *rec = new LuaRecorder(macro); 00102 #else 00103 qDebug("Lua support required for recording macros"); 00104 return NULL; 00105 #endif 00106 00107 #ifdef __LUA__ 00108 SignalRecorder *ptr; 00109 for (ptr = m_all->first(); ptr; ptr = m_all->next()) { 00110 ptr->writeToScript(rec); 00111 } 00112 00113 delete rec; 00114 rmacro->setScript(*macro); 00115 delete macro; 00116 return rmacro; 00117 #endif 00118 } 00119 00120 void ScriptRecorder::reset() { 00121 QLinkedList<SignalRecorder*>::iterator iter; 00122 00123 for (iter = m_all->begin(); iter != m_all->end(); iter++) { 00124 (*iter)->reset(); 00125 } 00126 }