You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.3KB

  1. #include "MidiSequencer.h"
  2. #include "MidiEditor.h"
  3. #include "UndoRedoStack.h"
  4. int _mdb = 0; // global instance counter
  5. MidiSequencer::MidiSequencer(std::shared_ptr<MidiSong> sng) :
  6. selection(std::make_shared<MidiSelectionModel>()),
  7. song(sng),
  8. context(std::make_shared<MidiEditorContext>(sng)
  9. )
  10. {
  11. undo = std::make_shared<UndoRedoStack>();
  12. ++_mdb;
  13. }
  14. void MidiSequencer::makeEditor()
  15. {
  16. MidiSequencerPtr seq = shared_from_this();
  17. editor = std::make_shared<MidiEditor>(seq);
  18. }
  19. MidiSequencer::~MidiSequencer()
  20. {
  21. --_mdb;
  22. }
  23. void MidiSequencer::assertValid() const
  24. {
  25. assert(editor);
  26. assert(undo);
  27. assert(song);
  28. assert(context);
  29. assert(selection);
  30. context->assertValid();
  31. song->assertValid();
  32. assertSelectionInTrack();
  33. }
  34. void MidiSequencer::assertSelectionInTrack() const
  35. {
  36. MidiTrackPtr track = context->getTrack();
  37. for (auto it : *selection) {
  38. #if 1
  39. auto foundPtr = track->findEventPointer(it);
  40. assert(foundPtr != track->end());
  41. auto x = *foundPtr;
  42. MidiEventPtrC y = x.second;
  43. // MidiEventPtrC x = track->findEventPointer(it);;
  44. #else
  45. MidiEventPtrC foundPtr = track->findEventPointer(it)->second;
  46. assert(foundPtr);
  47. #endif
  48. }
  49. }