Add Quantize button to Piano Roll

Add Quantize button to Piano Roll
This commit is contained in:
grejppi
2016-05-05 13:39:55 +03:00
parent 355f6c28c5
commit c94d6e8db4
2 changed files with 36 additions and 0 deletions

View File

@@ -181,6 +181,7 @@ protected slots:
void zoomingChanged();
void quantizeChanged();
void quantizeNotes();
void updateSemiToneMarkerMenu();

View File

@@ -3890,6 +3890,36 @@ int PianoRoll::quantization() const
}
void PianoRoll::quantizeNotes()
{
NoteVector notes = getSelectedNotes();
if (notes.empty())
{
for (Note* n : m_pattern->notes())
{
notes.push_back(n);
}
}
for (Note* n : notes)
{
if (n->length() == MidiTime(0))
{
continue;
}
Note copy(*n);
m_pattern->removeNote(n);
copy.quantizePos(quantization());
m_pattern->addNote(copy);
}
update();
gui->songEditor()->update();
}
void PianoRoll::updateSemiToneMarkerMenu()
@@ -4047,10 +4077,15 @@ PianoRollWindow::PianoRollWindow() :
connect(editModeGroup, SIGNAL(triggered(int)), m_editor, SLOT(setEditMode(int)));
QAction* quantizeAction = new QAction(embed::getIconPixmap("quantize"), tr("Quantize"), this);
connect(quantizeAction, SIGNAL(triggered()), m_editor, SLOT(quantizeNotes()));
notesActionsToolBar->addAction( drawAction );
notesActionsToolBar->addAction( eraseAction );
notesActionsToolBar->addAction( selectAction );
notesActionsToolBar->addAction( detuneAction );
notesActionsToolBar->addSeparator();
notesActionsToolBar->addAction( quantizeAction );
// Copy + paste actions
DropToolBar *copyPasteActionsToolBar = addDropToolBarToTop(tr("Copy paste controls"));