diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index c6db354..1776024 100644 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -94,6 +94,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" @@ -189,7 +190,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; @@ -623,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); @@ -2706,6 +2708,28 @@ void sample_del_selection(void) setHasUnsavedChanges(true); } +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 || startsample == endsample) return; + + if (endsample < smp->getNSamples()) smp->delPart(endsample, smp->getNSamples() - 1); + if (startsample > 0) smp->delPart(0, startsample - 1); + + DC_FlushAll(); + sampledisplay->setSample(smp); +} + void sample_fade_in(void) { Instrument *inst = song->getInstrument(state->instrument); @@ -3309,6 +3333,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); @@ -3316,6 +3343,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); @@ -4249,4 +4277,4 @@ int main(int argc, char **argv) { if (launch_path) ntxm_free(launch_path); return 0; -} \ No newline at end of file +}