diff options
-rw-r--r-- | src/mainwindow.cc | 7 | ||||
-rw-r--r-- | src/mainwindow.h | 1 | ||||
-rw-r--r-- | src/samplesorter.cc | 21 | ||||
-rw-r--r-- | src/samplesorter.h | 4 | ||||
-rw-r--r-- | src/selectioneditor.cc | 2 |
5 files changed, 29 insertions, 6 deletions
diff --git a/src/mainwindow.cc b/src/mainwindow.cc index 05562b6..59fc26a 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -343,6 +343,13 @@ QWidget *MainWindow::createGenerateTab() tool_selections, SLOT(autoCreateSelectionsPreview())); slider_attacklength->setValue(300); + slider_spread = createAttribute(w, "Power spread:", 1, 2000); + connect(slider_spread, SIGNAL(valueChanged(int)), + sorter, SLOT(setSpreadFactor(int))); + connect(slider_spread, SIGNAL(valueChanged(int)), + tool_selections, SLOT(autoCreateSelectionsPreview())); + slider_spread->setValue(1000); + slider_hold = createAttribute(w, "Minimum size (samples):", 0, 200000); connect(slider_hold, SIGNAL(valueChanged(int)), tool_selections, SLOT(holdChanged(int))); diff --git a/src/mainwindow.h b/src/mainwindow.h index 69a4c5e..b512f50 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -107,6 +107,7 @@ private: QScrollBar *sb_playsamples; QComboBox *presets; QSlider *slider_attacklength; + QSlider *slider_spread; QSlider *slider_hold; QSlider *slider_falloff; QSlider *slider_fadelength; diff --git a/src/samplesorter.cc b/src/samplesorter.cc index 00139e2..c32030a 100644 --- a/src/samplesorter.cc +++ b/src/samplesorter.cc @@ -46,6 +46,8 @@ SampleSorter::SampleSorter(Selections &s, Selections &p) attlen = 666; // Magical constants needs biblical proportions... sel_moving = SEL_NONE; + + setSpreadFactor(1000); } void SampleSorter::setShowPreview(bool s) @@ -66,6 +68,13 @@ int SampleSorter::attackLength() return attlen; } +void SampleSorter::setSpreadFactor(int s) +{ + spread = (double)s / 1000.0; + spread *= spread; + relayout(); +} + void SampleSorter::setAttackLength(int len) { attlen = len; @@ -84,7 +93,7 @@ void SampleSorter::addSelection(sel_id_t id) energy += data[idx] * data[idx]; } - s.energy = energy; + s.energy = pow(energy, spread); selections.update(id, s); relayout(); @@ -102,7 +111,7 @@ void SampleSorter::addSelectionPreview(sel_id_t id) energy += data[idx] * data[idx]; } - s.energy = energy; + s.energy = pow(energy, spread); selections_preview.update(id, s); relayout(); @@ -179,9 +188,9 @@ void SampleSorter::paintEvent(QPaintEvent *event) Selection sel = selections.get(*i); if(*i == selections.active()) painter.setPen(colPtSel); else painter.setPen(colPt); - float x = sel.energy / max; + float x = (sel.energy / max); x = sqrt(x); - x *= (float)width(); + x *= (float)width() * 0.9; drawCircle(painter, x, MAP(x)); i++; } @@ -193,9 +202,9 @@ void SampleSorter::paintEvent(QPaintEvent *event) while(i != ids.end()) { Selection sel = selections_preview.get(*i); painter.setPen(colPtPreview); - float x = sel.energy / max; + float x = (sel.energy / max); x = sqrt(x); - x *= (float)width(); + x *= (float)width() * 0.9; drawCircle(painter, x, MAP(x)); i++; } diff --git a/src/samplesorter.h b/src/samplesorter.h index ada7fd8..ed86b9d 100644 --- a/src/samplesorter.h +++ b/src/samplesorter.h @@ -48,6 +48,8 @@ public slots: void setShowPreview(bool show_preview); + void setSpreadFactor(int spread); + protected: void paintEvent(QPaintEvent *event); void mouseMoveEvent(QMouseEvent *event); @@ -73,6 +75,8 @@ private: Selection sel; sel_id_t sel_moving; + + double spread; }; #endif/*__DRUMGIZMO_SAMPLESORTER_H__*/ diff --git a/src/selectioneditor.cc b/src/selectioneditor.cc index e8db104..5f3057b 100644 --- a/src/selectioneditor.cc +++ b/src/selectioneditor.cc @@ -60,6 +60,8 @@ SelectionEditor::SelectionEditor(Selections &s) fadeout = createWidget("FadeOut:", this); energy = createWidget("Energy:", this); name = createWidget("Name:", this); + + ((QHBoxLayout *)layout())->addStretch(); } void SelectionEditor::updateSelection() |