#pragma once #include "MidiTrack.h" #include #include class MidiSong; class MidiLock; using MidiSongPtr = std::shared_ptr; class MidiSong { public: MidiSong(); ~MidiSong(); std::shared_ptr getTrack(int index); std::shared_ptr getTrackConst(int index) const; void createTrack(int index); void assertValid() const; /** * returns -1 if no tracks exist */ int getHighestTrackNumber() const; /** * factory method to generate test content */ static MidiSongPtr makeTest(MidiTrack::TestContent, int trackNumber); std::shared_ptr lock; private: std::vector> tracks; /** like create track, but passes in the track */ void addTrack(int index, std::shared_ptr); };