Thin sample editor

This commit is contained in:
BlastBrothers 2022-04-08 00:01:42 -04:00
parent 4dfe9f97fb
commit 8a2bf3ae39
1 changed files with 97 additions and 97 deletions

View File

@ -53,7 +53,7 @@ void FurnaceGUI::drawSampleEdit() {
MARK_MODIFIED; MARK_MODIFIED;
} }
if (ImGui::BeginTable("SampleProps",4,ImGuiTableFlags_SizingStretchSame)) { if (ImGui::BeginTable("SampleProps",2,ImGuiTableFlags_SizingStretchSame)) {
ImGui::TableNextRow(); ImGui::TableNextRow();
ImGui::TableNextColumn(); ImGui::TableNextColumn();
ImGui::Text("Type"); ImGui::Text("Type");
@ -82,6 +82,7 @@ void FurnaceGUI::drawSampleEdit() {
if (sample->rate>96000) sample->rate=96000; if (sample->rate>96000) sample->rate=96000;
} }
ImGui::TableNextRow();
ImGui::TableNextColumn(); ImGui::TableNextColumn();
ImGui::Text("C-4 (Hz)"); ImGui::Text("C-4 (Hz)");
ImGui::SameLine(); ImGui::SameLine();
@ -142,7 +143,7 @@ void FurnaceGUI::drawSampleEdit() {
ImGui::SetTooltip("Edit mode: Draw"); ImGui::SetTooltip("Edit mode: Draw");
} }
ImGui::SameLine(); ImGui::SameLine();
ImGui::Dummy(ImVec2(4.0*dpiScale,dpiScale)); ImGui::Dummy(ImVec2(7.0*dpiScale,dpiScale));
ImGui::SameLine(); ImGui::SameLine();
ImGui::Button(ICON_FA_ARROWS_H "##SResize"); ImGui::Button(ICON_FA_ARROWS_H "##SResize");
if (ImGui::IsItemClicked()) { if (ImGui::IsItemClicked()) {
@ -234,23 +235,7 @@ void FurnaceGUI::drawSampleEdit() {
resampleTarget=sample->rate; resampleTarget=sample->rate;
} }
ImGui::SameLine(); ImGui::SameLine();
ImGui::Dummy(ImVec2(4.0*dpiScale,dpiScale)); ImGui::Dummy(ImVec2(0.5*dpiScale,dpiScale));
ImGui::SameLine();
if (ImGui::Button(ICON_FA_UNDO "##SUndo")) {
doUndoSample();
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Undo");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_REPEAT "##SRedo")) {
doRedoSample();
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Redo");
}
ImGui::SameLine();
ImGui::Dummy(ImVec2(4.0*dpiScale,dpiScale));
ImGui::SameLine(); ImGui::SameLine();
ImGui::Button(ICON_FA_VOLUME_UP "##SAmplify"); ImGui::Button(ICON_FA_VOLUME_UP "##SAmplify");
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
@ -321,80 +306,7 @@ void FurnaceGUI::drawSampleEdit() {
ImGui::SetTooltip("Fade out"); ImGui::SetTooltip("Fade out");
} }
ImGui::SameLine(); ImGui::SameLine();
ImGui::Button(ICON_FA_ADJUST "##SInsertSilence"); ImGui::Dummy(ImVec2(0.5*dpiScale,dpiScale));
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Insert silence");
}
if (openSampleSilenceOpt) {
openSampleSilenceOpt=false;
ImGui::OpenPopup("SSilenceOpt");
}
if (ImGui::BeginPopupContextItem("SSilenceOpt",ImGuiPopupFlags_MouseButtonLeft)) {
if (ImGui::InputInt("Samples",&silenceSize,1,64)) {
if (silenceSize<0) silenceSize=0;
if (silenceSize>16777215) silenceSize=16777215;
}
if (ImGui::Button("Resize")) {
int pos=(sampleSelStart==-1 || sampleSelStart==sampleSelEnd)?sample->samples:sampleSelStart;
sample->prepareUndo(true);
e->lockEngine([this,sample,pos]() {
if (!sample->insert(pos,silenceSize)) {
showError("couldn't insert! make sure your sample is 8 or 16-bit.");
}
e->renderSamples();
});
updateSampleTex=true;
sampleSelStart=pos;
sampleSelEnd=pos+silenceSize;
MARK_MODIFIED;
ImGui::CloseCurrentPopup();
}
ImGui::EndPopup();
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_ERASER "##SSilence")) {
doAction(GUI_ACTION_SAMPLE_SILENCE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Apply silence");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_TIMES "##SDelete")) {
doAction(GUI_ACTION_SAMPLE_DELETE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Delete");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_CROP "##STrim")) {
doAction(GUI_ACTION_SAMPLE_TRIM);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Trim");
}
ImGui::SameLine();
ImGui::Dummy(ImVec2(4.0*dpiScale,dpiScale));
ImGui::SameLine();
if (ImGui::Button(ICON_FA_BACKWARD "##SReverse")) {
doAction(GUI_ACTION_SAMPLE_REVERSE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Reverse");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_SORT_AMOUNT_ASC "##SInvert")) {
doAction(GUI_ACTION_SAMPLE_INVERT);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Invert");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_LEVEL_DOWN "##SSign")) {
doAction(GUI_ACTION_SAMPLE_SIGN);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Signed/unsigned exchange");
}
ImGui::SameLine(); ImGui::SameLine();
ImGui::Button(ICON_FA_INDUSTRY "##SFilter"); ImGui::Button(ICON_FA_INDUSTRY "##SFilter");
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
@ -508,23 +420,111 @@ void FurnaceGUI::drawSampleEdit() {
} }
ImGui::EndPopup(); ImGui::EndPopup();
} }
if (ImGui::Button(ICON_FA_UNDO "##SUndo")) {
doUndoSample();
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Undo");
}
ImGui::SameLine(); ImGui::SameLine();
ImGui::Dummy(ImVec2(4.0*dpiScale,dpiScale)); if (ImGui::Button(ICON_FA_REPEAT "##SRedo")) {
doRedoSample();
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Redo");
}
ImGui::SameLine(); ImGui::SameLine();
if (ImGui::Button(ICON_FA_VOLUME_UP "##PreviewSample")) { ImGui::Dummy(ImVec2(7.0*dpiScale,dpiScale));
ImGui::SameLine();
if (ImGui::Button(ICON_FA_BACKWARD "##SReverse")) {
doAction(GUI_ACTION_SAMPLE_REVERSE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Reverse");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_SORT_AMOUNT_ASC "##SInvert")) {
doAction(GUI_ACTION_SAMPLE_INVERT);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Invert");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_LEVEL_DOWN "##SSign")) {
doAction(GUI_ACTION_SAMPLE_SIGN);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Signed/unsigned exchange");
}
ImGui::SameLine();
ImGui::Dummy(ImVec2(7.0*dpiScale,dpiScale));
ImGui::SameLine();
ImGui::Button(ICON_FA_ADJUST "##SInsertSilence");
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Insert silence");
}
if (openSampleSilenceOpt) {
openSampleSilenceOpt=false;
ImGui::OpenPopup("SSilenceOpt");
}
if (ImGui::BeginPopupContextItem("SSilenceOpt",ImGuiPopupFlags_MouseButtonLeft)) {
if (ImGui::InputInt("Samples",&silenceSize,1,64)) {
if (silenceSize<0) silenceSize=0;
if (silenceSize>16777215) silenceSize=16777215;
}
if (ImGui::Button("Resize")) {
int pos=(sampleSelStart==-1 || sampleSelStart==sampleSelEnd)?sample->samples:sampleSelStart;
sample->prepareUndo(true);
e->lockEngine([this,sample,pos]() {
if (!sample->insert(pos,silenceSize)) {
showError("couldn't insert! make sure your sample is 8 or 16-bit.");
}
e->renderSamples();
});
updateSampleTex=true;
sampleSelStart=pos;
sampleSelEnd=pos+silenceSize;
MARK_MODIFIED;
ImGui::CloseCurrentPopup();
}
ImGui::EndPopup();
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_ERASER "##SSilence")) {
doAction(GUI_ACTION_SAMPLE_SILENCE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Apply silence");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_TIMES "##SDelete")) {
doAction(GUI_ACTION_SAMPLE_DELETE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Delete");
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_CROP "##STrim")) {
doAction(GUI_ACTION_SAMPLE_TRIM);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Trim");
}
if (ImGui::Button(ICON_FA_PLAY "##PreviewSample")) {
e->previewSample(curSample); e->previewSample(curSample);
} }
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Preview sample"); ImGui::SetTooltip("Preview sample");
} }
ImGui::SameLine(); ImGui::SameLine();
if (ImGui::Button(ICON_FA_VOLUME_OFF "##StopSample")) { if (ImGui::Button(ICON_FA_STOP "##StopSample")) {
e->stopSamplePreview(); e->stopSamplePreview();
} }
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Stop sample preview"); ImGui::SetTooltip("Stop sample preview");
} }
ImGui::SameLine(); ImGui::SameLine();
double zoomPercent=100.0/sampleZoom; double zoomPercent=100.0/sampleZoom;
ImGui::Text("Zoom"); ImGui::Text("Zoom");