From 9eb1bc5f2bf1e922b55f643f8de22383c638930c Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Tue, 14 May 2013 18:18:53 +0000 Subject: move drum in drum editor with midi in --- muse2/ChangeLog | 3 +++ muse2/muse/midiedit/drumedit.cpp | 34 ++++++++++++++++++++++++++++++++++ muse2/muse/midiedit/drumedit.h | 1 + 3 files changed, 38 insertions(+) (limited to 'muse2') diff --git a/muse2/ChangeLog b/muse2/ChangeLog index c49ae072..37efb381 100644 --- a/muse2/ChangeLog +++ b/muse2/ChangeLog @@ -1,3 +1,6 @@ +14.05.2013: + - When midi in is enabled in drum editor the selected track is moved along with + the triggered key (rj) 12.05.2013: - Fixed bug with playback of drums clicking on notes in the new drum editor, it was playing the wrong instrument (rj) diff --git a/muse2/muse/midiedit/drumedit.cpp b/muse2/muse/midiedit/drumedit.cpp index e2ba0ef1..a93ad01e 100644 --- a/muse2/muse/midiedit/drumedit.cpp +++ b/muse2/muse/midiedit/drumedit.cpp @@ -622,6 +622,8 @@ DrumEdit::DrumEdit(MusECore::PartList* pl, QWidget* parent, const char* name, un connect(ctrl, SIGNAL(clicked()), SLOT(addCtrlClicked())); + connect(MusEGlobal::song, SIGNAL(midiNote(int, int)), SLOT(midiNote(int,int))); + QClipboard* cb = QApplication::clipboard(); connect(cb, SIGNAL(dataChanged()), SLOT(clipboardChanged())); @@ -672,6 +674,38 @@ void DrumEdit::songChanged1(MusECore::SongChangedFlags_t bits) songChanged(bits); } +//--------------------------------------------------------- +// midiNote +//--------------------------------------------------------- +void DrumEdit::midiNote(int pitch, int velo) +{ + //if (debugMsg) + printf("DrumEdit::midiNote: pitch=%i, velo=%i\n", pitch, velo); + int index=0; + + // *note = old_style_drummap_mode ? ourDrumMap[index].anote : instrument_map[index].pitch; + + if ((DrumCanvas*)(canvas)->midiin()) + { + if (old_style_drummap_mode()) { + MusECore::DrumMap *dmap= ((DrumCanvas*)canvas)->getOurDrumMap(); + for (index = 0; index < ((DrumCanvas*)canvas)->getOurDrumMapSize(); ++index) { + + if ((&dmap[index])->anote == pitch) + break; + } + + } + else + { + for (index = 0; index < get_instrument_map().size(); ++index) { + if (get_instrument_map().at(index).pitch == pitch) + break; + } + } + dlist->setCurDrumInstrument(index); + } +} //--------------------------------------------------------- // horizontalZoom //--------------------------------------------------------- diff --git a/muse2/muse/midiedit/drumedit.h b/muse2/muse/midiedit/drumedit.h index fef06bfe..2a97bbf5 100644 --- a/muse2/muse/midiedit/drumedit.h +++ b/muse2/muse/midiedit/drumedit.h @@ -169,6 +169,7 @@ class DrumEdit : public MidiEditor { void display_old_new_conflict_message(); void deltaModeChanged(bool); + void midiNote(int pitch, int velo); public slots: void setSelection(int tick, MusECore::Event&, MusECore::Part*, bool update); -- cgit v1.2.3