diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 14577b40..1c5d4dd2 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -414,6 +414,7 @@ void DivEngine::runExportThread() { } } +// TODO: properly export ExtCh songs in per-channel mode bool DivEngine::saveAudio(const char* path, int loops, DivAudioExportModes mode) { exportPath=path; exportMode=mode; diff --git a/src/engine/waveSynth.cpp b/src/engine/waveSynth.cpp index 4d776ba4..e38ee228 100644 --- a/src/engine/waveSynth.cpp +++ b/src/engine/waveSynth.cpp @@ -2,6 +2,10 @@ #include "engine.h" #include "instrument.h" +// TODO: +// - add missing license header +// - implement waveSynth on Amiga and N163 + bool DivWaveSynth::activeChanged() { if (activeChangedB) { activeChangedB=false; diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index 5e8d7257..8d948024 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -20,6 +20,9 @@ #include "gui.h" #include "IconsFontAwesome4.h" +// TODO: +// - "play from start" button/action +// - fix behavior of play buttons void FurnaceGUI::drawEditControls() { if (nextWindow==GUI_WINDOW_EDIT_CONTROLS) { editControlsOpen=true; diff --git a/src/gui/gui.h b/src/gui/gui.h index 631d52a6..e2c61b9b 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -46,6 +46,9 @@ #define BIND_FOR(x) getKeyName(actionKeys[x],true).c_str() +// TODO: +// - add colors for FM envelope and waveform +// - maybe add "alternate" color for FM modulators/carriers (a bit difficult) enum FurnaceGUIColors { GUI_COLOR_BACKGROUND=0, GUI_COLOR_FRAME_BACKGROUND, diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 73ae54c4..e9e69084 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1257,6 +1257,8 @@ if (ImGui::BeginTable("MacroSpace",2)) { \ #define CENTER_VSLIDER \ ImGui::SetCursorPosX(ImGui::GetCursorPosX()+0.5f*ImGui::GetContentRegionAvail().x-10.0f*dpiScale); +// TODO: +// - add right click line draw in macro editor void FurnaceGUI::drawInsEdit() { if (nextWindow==GUI_WINDOW_INS_EDIT) { insEditOpen=true; diff --git a/src/gui/osc.cpp b/src/gui/osc.cpp index c0ce978c..e43dee1e 100644 --- a/src/gui/osc.cpp +++ b/src/gui/osc.cpp @@ -22,6 +22,10 @@ #include #include +// TODO: +// - potentially move oscilloscope seek position to the end, and read the last samples +// - this allows for setting up the window size +// - reduce initial latency (it's too high) void FurnaceGUI::readOsc() { int writePos=e->oscWritePos; int readPos=e->oscReadPos; @@ -65,6 +69,9 @@ void FurnaceGUI::readOsc() { e->oscReadPos=readPos; } +// TODO: +// - draw reference level +// - draw guidelines void FurnaceGUI::drawOsc() { if (nextWindow==GUI_WINDOW_OSCILLOSCOPE) { oscOpen=true; diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 0decef97..de0e5a61 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -408,6 +408,7 @@ void FurnaceGUI::drawPattern() { patWindowSize=ImGui::GetWindowSize(); //char id[32]; ImGui::PushFont(patFont); + // TODO: separate GUI curOrder from engine curOrder int ord=e->isPlaying()?oldOrder:e->getOrder(); oldOrder=e->getOrder(); int chans=e->getTotalChannelCount(); diff --git a/src/gui/piano.cpp b/src/gui/piano.cpp index d3a3d35e..aa18996f 100644 --- a/src/gui/piano.cpp +++ b/src/gui/piano.cpp @@ -20,6 +20,7 @@ #include "gui.h" #include "guiConst.h" +// TODO: actually implement a piano! void FurnaceGUI::drawPiano() { if (nextWindow==GUI_WINDOW_PIANO) { pianoOpen=true; diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index a70f70fc..a4c744b1 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -28,6 +28,12 @@ #include "sampleUtil.h" #include "util.h" +// TODO: +// - resample should change C-4 note +// - clicking on waveform should give this window focus +// - add "create instrument using this sample" option +// - .dmc loading +// - duplicate sample void FurnaceGUI::drawSampleEdit() { if (nextWindow==GUI_WINDOW_SAMPLE_EDIT) { sampleEditOpen=true; diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 87b79857..d8070dc6 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -198,6 +198,10 @@ struct MappedInput { scan(s), val(v) {} }; +// TODO: +// - add metronome volume setting +// - maybe add metronome sound setting +// - add a "close" button to this window void FurnaceGUI::drawSettings() { if (nextWindow==GUI_WINDOW_SETTINGS) { settingsOpen=true; diff --git a/src/log.cpp b/src/log.cpp index 7f7fae8a..89602b42 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -27,69 +27,7 @@ LogEntry logEntries[TA_LOG_SIZE]; static constexpr unsigned int TA_LOG_MASK=TA_LOG_SIZE-1; -int logV(const char* format, ...) { - va_list va; - int ret; - if (logLevel int logV(const char* msg, const T&... args) { - fmt::printf_args a=fmt::make_printf_args(args...); - return writeLog(LOGLEVEL_TRACE,msg,a); + return writeLog(LOGLEVEL_TRACE,msg,fmt::make_printf_args(args...)); } template int logD(const char* msg, const T&... args) { - fmt::printf_args a=fmt::make_printf_args(args...); - return writeLog(LOGLEVEL_DEBUG,msg,a); + return writeLog(LOGLEVEL_DEBUG,msg,fmt::make_printf_args(args...)); } template int logI(const char* msg, const T&... args) { - fmt::printf_args a=fmt::make_printf_args(args...); - return writeLog(LOGLEVEL_INFO,msg,a); + return writeLog(LOGLEVEL_INFO,msg,fmt::make_printf_args(args...)); } template int logW(const char* msg, const T&... args) { - fmt::printf_args a=fmt::make_printf_args(args...); - return writeLog(LOGLEVEL_WARN,msg,a); + return writeLog(LOGLEVEL_WARN,msg,fmt::make_printf_args(args...)); } template int logE(const char* msg, const T&... args) { - fmt::printf_args a=fmt::make_printf_args(args...); - return writeLog(LOGLEVEL_ERROR,msg,a); + return writeLog(LOGLEVEL_ERROR,msg,fmt::make_printf_args(args...)); } void initLog();