-Add: loop quantisation
git-svn-id: http://svn.fuzzle.org/mloop/mloop/trunk@10 ba049829-c6ef-42ef-81ac-908dd8d2e907remotes/git-svn@10
parent
bfa83efd94
commit
89a8fe6101
|
@ -131,10 +131,16 @@ int Jack::ProcessCallback(jack_nframes_t nframes)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Jack::ToggleRecording(int loop)
|
void Jack::ToggleRecording(int loop, int bpm)
|
||||||
{
|
{
|
||||||
if (m_recording) {
|
if (m_recording) {
|
||||||
m_recording = false;
|
m_recording = false;
|
||||||
|
|
||||||
|
if (bpm > 0) {
|
||||||
|
jack_nframes_t chunk = 60 * m_sample_rate / bpm;
|
||||||
|
m_recording_time -= m_recording_time % chunk;
|
||||||
|
}
|
||||||
|
|
||||||
m_loops[m_recording_loop].SetLength(m_recording_time);
|
m_loops[m_recording_loop].SetLength(m_recording_time);
|
||||||
m_loops[m_recording_loop].SetState(LS_IDLE);
|
m_loops[m_recording_loop].SetState(LS_IDLE);
|
||||||
m_loops[m_recording_loop].EndFromNoteCache(m_notecache);
|
m_loops[m_recording_loop].EndFromNoteCache(m_notecache);
|
||||||
|
|
|
@ -49,7 +49,7 @@ public:
|
||||||
void Disconnect();
|
void Disconnect();
|
||||||
bool Run();
|
bool Run();
|
||||||
|
|
||||||
void ToggleRecording(int loop);
|
void ToggleRecording(int loop, int bpm);
|
||||||
void StartLoop(int loop, bool repeat);
|
void StartLoop(int loop, bool repeat);
|
||||||
void StopLoop(int loop);
|
void StopLoop(int loop);
|
||||||
void EraseLoop(int loop);
|
void EraseLoop(int loop);
|
||||||
|
|
10
src/ui.cpp
10
src/ui.cpp
|
@ -57,6 +57,7 @@ int getch()
|
||||||
int bpm = 120;
|
int bpm = 120;
|
||||||
int color_map[4];
|
int color_map[4];
|
||||||
char status[1024];
|
char status[1024];
|
||||||
|
bool quantise = false;
|
||||||
|
|
||||||
bool UI::Run(Jack &j)
|
bool UI::Run(Jack &j)
|
||||||
{
|
{
|
||||||
|
@ -128,14 +129,12 @@ bool UI::Run(Jack &j)
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 3:
|
case 3:
|
||||||
case 'q': {
|
|
||||||
endwin();
|
endwin();
|
||||||
reset_terminal_mode();
|
reset_terminal_mode();
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
j.ToggleRecording(m_loop);
|
j.ToggleRecording(m_loop, quantise ? bpm : 0);
|
||||||
if (j.Recording()) {
|
if (j.Recording()) {
|
||||||
snprintf(status, sizeof status, "Start recording loop %d", m_loop);
|
snprintf(status, sizeof status, "Start recording loop %d", m_loop);
|
||||||
} else {
|
} else {
|
||||||
|
@ -173,6 +172,11 @@ bool UI::Run(Jack &j)
|
||||||
j.EraseLoop(m_loop);
|
j.EraseLoop(m_loop);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'q':
|
||||||
|
quantise = !quantise;
|
||||||
|
snprintf(status, sizeof status, "Set quantise %s", quantise ? "on" : "off");
|
||||||
|
break;
|
||||||
|
|
||||||
case KEY_UP:
|
case KEY_UP:
|
||||||
m_loop--;
|
m_loop--;
|
||||||
if (m_loop == -1) m_loop = NUM_LOOPS - 1;
|
if (m_loop == -1) m_loop = NUM_LOOPS - 1;
|
||||||
|
|
Loading…
Reference in New Issue