From 302924805e7e98c2eb039c5bc33be58b96def446 Mon Sep 17 00:00:00 2001 From: R Ferreira Date: Sun, 16 Nov 2025 00:28:00 +0000 Subject: [PATCH 1/3] Sample trim button --- arm9/source/main.cpp | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index abf9051..b68d7a7 100644 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -93,6 +93,7 @@ using namespace tobkit; #include "sampleedit_all_raw.h" #include "sampleedit_none_raw.h" #include "sampleedit_del_raw.h" +#include "sampleedit_trim_raw.h" #include "sampleedit_reverse_raw.h" #include "sampleedit_record_raw.h" #include "sampleedit_normalize_raw.h" @@ -188,7 +189,7 @@ GUI *gui; Label *labelsampleedit_select, *labelsampleedit_edit, *labelsampleedit_record; BitButton *buttonsmpfadein, *buttonsmpfadeout, *buttonsmpselall, *buttonsmpselnone, *buttonsmpseldel, - *buttonsmpreverse, *buttonrecord, *buttonsmpnormalize; + *buttonsmpreverse, *buttonrecord, *buttonsmpnormalize, *buttonsmptrim; GroupBox *gbsampleloop; RadioButton::RadioButtonGroup *rbg_sampleloop; @@ -2578,6 +2579,35 @@ void sample_del_selection(void) sampledisplay->setSample(smp); } +void sample_crop_selection(void) +{ + Instrument *inst = song->getInstrument(state->instrument); + if(inst==0) return; + + Sample *smp = inst->getSample(state->sample); + if(smp==0) return; + + stopPlay(); + + u32 startsample, endsample; + bool sel_exists = sampledisplay->getSelection(&startsample, &endsample); + if(sel_exists==false) return; + + + if (startsample == endsample) return; + smp->delPart(1, startsample); + + if (smp->getNSamples() + 1 <= endsample - startsample) + return; + + + smp->delPart(endsample - startsample, smp->getNSamples() - 1); + + DC_FlushAll(); + + sampledisplay->setSample(smp); +} + void sample_fade_in(void) { Instrument *inst = song->getInstrument(state->instrument); @@ -3145,6 +3175,9 @@ void setupGUI(bool dldi_enabled) buttonsmpseldel = new BitButton(96, 128, 17, 17, &sub_vram, sampleedit_del_raw); buttonsmpseldel->registerPushCallback(sample_del_selection); + buttonsmptrim = new BitButton(114, 128, 17, 17, &sub_vram, sampleedit_trim_raw); + buttonsmptrim->registerPushCallback(sample_crop_selection); + buttonsmpnormalize = new BitButton(114, 110, 17, 17, &sub_vram, sampleedit_normalize_raw); buttonsmpnormalize->registerPushCallback(sample_show_normalize_window); @@ -3152,6 +3185,7 @@ void setupGUI(bool dldi_enabled) sampletabbox->registerWidget(buttonsmpselall, 0, 0); sampletabbox->registerWidget(buttonsmpselnone, 0, 0); sampletabbox->registerWidget(buttonsmpseldel, 0, 0); + sampletabbox->registerWidget(buttonsmptrim, 0, 0); sampletabbox->registerWidget(buttonsmpfadein, 0, 0); sampletabbox->registerWidget(buttonsmpfadeout, 0, 0); sampletabbox->registerWidget(buttonsmpreverse, 0, 0); From 61110fe587bedd0d0e063529a6c1e773602cbacc Mon Sep 17 00:00:00 2001 From: R Ferreira Date: Wed, 19 Nov 2025 22:37:05 +0000 Subject: [PATCH 2/3] fix sample trim --- arm9/source/main.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index 2e8b7b3..e833809 100644 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -2591,20 +2591,13 @@ void sample_crop_selection(void) u32 startsample, endsample; bool sel_exists = sampledisplay->getSelection(&startsample, &endsample); - if(sel_exists==false) return; - - - if (startsample == endsample) return; - smp->delPart(1, startsample); - - if (smp->getNSamples() + 1 <= endsample - startsample) - return; + if(!sel_exists || startsample == endsample) return; - smp->delPart(endsample - startsample, smp->getNSamples() - 1); + if (endsample < smp->getNSamples()) smp->delPart(endsample, smp->getNSamples() - 1); + if (startsample > 0) smp->delPart(0, startsample - 1); DC_FlushAll(); - sampledisplay->setSample(smp); } From ce1398f1df0e09998874114a7b15ae962627c81c Mon Sep 17 00:00:00 2001 From: prayerie Date: Mon, 24 Nov 2025 17:46:25 +0000 Subject: [PATCH 3/3] also disable trim btn --- arm9/source/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index d5d6888..1776024 100644 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -624,6 +624,7 @@ void handleSampleChange(const u16 newsample) buttonsmpselall->set_enabled(smp != NULL); buttonsmpselnone->set_enabled(smp != NULL); buttonsmpseldel->set_enabled(smp != NULL); + buttonsmptrim->set_enabled(smp != NULL); buttonsmpreverse->set_enabled(smp != NULL); buttonsmpnormalize->set_enabled(smp != NULL); cbsnapto0xing->set_enabled(smp != NULL); @@ -4276,4 +4277,4 @@ int main(int argc, char **argv) { if (launch_path) ntxm_free(launch_path); return 0; -} \ No newline at end of file +}