-Add: edit mode for tempo adjusting.
git-svn-id: http://svn.fuzzle.org/mloop/trunk@19 ba049829-c6ef-42ef-81ac-908dd8d2e907master
parent
4c351d1eff
commit
62083c0bb3
50
src/ui.cpp
50
src/ui.cpp
|
@ -154,8 +154,16 @@ bool UI::Run(Jack &j)
|
||||||
bkgdset(color_map[0]);
|
bkgdset(color_map[0]);
|
||||||
attrset(color_map[0]);
|
attrset(color_map[0]);
|
||||||
|
|
||||||
snprintf(buf, sizeof buf, " [ ] %2d: Position: %0.2f beats (%0.2fs) Length: %0.2f beats (%0.2fs) Tempo: %0.1f%%", i, m_bpm * j.LoopPosition(i) / 60.0, j.LoopPosition(i), m_bpm * j.LoopLength(i) / 60.0, j.LoopLength(i), j.GetTempo(i) * 100);
|
snprintf(buf, sizeof buf, " [ ] %2d: Position: %0.2f beats (%0.2fs) Length: %0.2f beats (%0.2fs) Tempo: ", i, m_bpm * j.LoopPosition(i) / 60.0, j.LoopPosition(i), m_bpm * j.LoopLength(i) / 60.0, j.LoopLength(i));
|
||||||
mvaddstr(i + y_offs, 0, buf);
|
mvaddstr(i + y_offs, 0, buf);
|
||||||
|
if (m_loop == i && m_edit_mode == EM_TEMPO) {
|
||||||
|
bkgdset(color_map[2]);
|
||||||
|
attrset(color_map[2]);
|
||||||
|
}
|
||||||
|
snprintf(buf, sizeof buf, "%0.1f%%", j.GetTempo(i) * 100);
|
||||||
|
addstr(buf);
|
||||||
|
bkgdset(color_map[0]);
|
||||||
|
attrset(color_map[0]);
|
||||||
clrtoeol();
|
clrtoeol();
|
||||||
|
|
||||||
const char *c; int k = 3;
|
const char *c; int k = 3;
|
||||||
|
@ -214,6 +222,17 @@ bool UI::Run(Jack &j)
|
||||||
m_bpm += (c - '0');
|
m_bpm += (c - '0');
|
||||||
}
|
}
|
||||||
m_edit_timer = EDIT_TIMER_RESET;
|
m_edit_timer = EDIT_TIMER_RESET;
|
||||||
|
} else if (m_edit_mode == EM_TEMPO) {
|
||||||
|
if (m_edit_timer <= 0) {
|
||||||
|
j.SetTempo(m_loop, 0.0);
|
||||||
|
}
|
||||||
|
float tempo = j.GetTempo(m_loop);
|
||||||
|
if (tempo < 1000.0) {
|
||||||
|
tempo *= 10;
|
||||||
|
tempo += (c - '0') / 100.0;
|
||||||
|
j.SetTempo(m_loop, tempo);
|
||||||
|
}
|
||||||
|
m_edit_timer = EDIT_TIMER_RESET;
|
||||||
} else {
|
} else {
|
||||||
m_loop = (c - '0');
|
m_loop = (c - '0');
|
||||||
snprintf(status, sizeof status, "Selected loop %d", m_loop);
|
snprintf(status, sizeof status, "Selected loop %d", m_loop);
|
||||||
|
@ -250,11 +269,11 @@ bool UI::Run(Jack &j)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'b':
|
case 'b':
|
||||||
if (m_edit_mode == EM_BPM) {
|
m_edit_mode = EM_BPM;
|
||||||
m_edit_mode = EM_LOOPS;
|
break;
|
||||||
} else {
|
|
||||||
m_edit_mode = EM_BPM;
|
case 't':
|
||||||
}
|
m_edit_mode = EM_TEMPO;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '\r':
|
case '\r':
|
||||||
|
@ -266,6 +285,8 @@ bool UI::Run(Jack &j)
|
||||||
if (m_edit_mode == EM_BPM) {
|
if (m_edit_mode == EM_BPM) {
|
||||||
m_bpm++;
|
m_bpm++;
|
||||||
if (m_bpm >= 1000) m_bpm = 999;
|
if (m_bpm >= 1000) m_bpm = 999;
|
||||||
|
} else if (m_edit_mode == EM_TEMPO) {
|
||||||
|
j.SetTempo(m_loop, j.GetTempo(m_loop) + 0.001);
|
||||||
} else {
|
} else {
|
||||||
m_loop--;
|
m_loop--;
|
||||||
if (m_loop == -1) m_loop = NUM_LOOPS - 1;
|
if (m_loop == -1) m_loop = NUM_LOOPS - 1;
|
||||||
|
@ -276,28 +297,21 @@ bool UI::Run(Jack &j)
|
||||||
if (m_edit_mode == EM_BPM) {
|
if (m_edit_mode == EM_BPM) {
|
||||||
m_bpm--;
|
m_bpm--;
|
||||||
if (m_bpm < 0) m_bpm = 0;
|
if (m_bpm < 0) m_bpm = 0;
|
||||||
|
} else if (m_edit_mode == EM_TEMPO) {
|
||||||
|
j.SetTempo(m_loop, j.GetTempo(m_loop) - 0.001);
|
||||||
} else {
|
} else {
|
||||||
m_loop++;
|
m_loop++;
|
||||||
if (m_loop == NUM_LOOPS) m_loop = 0;
|
if (m_loop == NUM_LOOPS) m_loop = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KEY_LEFT:
|
|
||||||
if (m_edit_mode == EM_LOOPS) {
|
|
||||||
j.SetTempo(m_loop, j.GetTempo(m_loop) - 0.001);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_RIGHT:
|
|
||||||
if (m_edit_mode == EM_LOOPS) {
|
|
||||||
j.SetTempo(m_loop, j.GetTempo(m_loop) + 0.001);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_BACKSPACE:
|
case KEY_BACKSPACE:
|
||||||
if (m_edit_mode == EM_BPM) {
|
if (m_edit_mode == EM_BPM) {
|
||||||
m_bpm /= 10;
|
m_bpm /= 10;
|
||||||
m_edit_timer = EDIT_TIMER_RESET;
|
m_edit_timer = EDIT_TIMER_RESET;
|
||||||
|
} else if (m_edit_mode == EM_TEMPO) {
|
||||||
|
j.SetTempo(m_loop, j.GetTempo(m_loop) / 10);
|
||||||
|
m_edit_timer = EDIT_TIMER_RESET;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue