allow sample preview via keyboard

This commit is contained in:
tildearrow 2022-01-20 16:51:31 -05:00
parent 05bbfaced2
commit 46fd774f30
4 changed files with 53 additions and 3 deletions

View file

@ -3108,6 +3108,22 @@ void FurnaceGUI::keyDown(SDL_Event& ev) {
}
}
break;
case GUI_WINDOW_SAMPLE_EDIT:
case GUI_WINDOW_SAMPLE_LIST:
if (!ev.key.repeat) {
try {
int key=noteKeys.at(ev.key.keysym.scancode);
int num=12*curOctave+key;
if (key!=100) {
e->previewSample(curSample,num);
samplePreviewOn=true;
samplePreviewKey=ev.key.keysym.scancode;
samplePreviewNote=num;
}
} catch (std::out_of_range& e) {
}
}
break;
case GUI_WINDOW_WAVE_LIST:
case GUI_WINDOW_WAVE_EDIT:
if (!ev.key.repeat) {
@ -3137,6 +3153,12 @@ void FurnaceGUI::keyUp(SDL_Event& ev) {
e->stopWavePreview();
}
}
if (samplePreviewOn) {
if (ev.key.keysym.scancode==samplePreviewKey) {
samplePreviewOn=false;
e->stopSamplePreview();
}
}
}
bool dirExists(String what) {
@ -3485,6 +3507,12 @@ bool FurnaceGUI::loop() {
e->stopWavePreview();
}
}
if (samplePreviewOn) {
if (ev.key.keysym.scancode==samplePreviewKey) {
samplePreviewOn=false;
e->stopSamplePreview();
}
}
}
break;
case SDL_QUIT:
@ -4094,6 +4122,9 @@ FurnaceGUI::FurnaceGUI():
wavePreviewOn(false),
wavePreviewKey((SDL_Scancode)0),
wavePreviewNote(0),
samplePreviewOn(false),
samplePreviewKey((SDL_Scancode)0),
samplePreviewNote(0),
arpMacroScroll(0),
macroDragStart(0,0),
macroDragAreaSize(0,0),

View file

@ -240,6 +240,10 @@ class FurnaceGUI {
SDL_Scancode wavePreviewKey;
int wavePreviewNote;
bool samplePreviewOn;
SDL_Scancode samplePreviewKey;
int samplePreviewNote;
std::map<SDL_Scancode,int> noteKeys;
std::map<SDL_Keycode,int> valueKeys;