diff options
Diffstat (limited to 'composer/Track.cpp')
-rw-r--r-- | composer/Track.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/composer/Track.cpp b/composer/Track.cpp new file mode 100644 index 0000000..47ad81b --- /dev/null +++ b/composer/Track.cpp @@ -0,0 +1,47 @@ +#include "Song.hpp" +#include "Track.hpp" +#include "Pattern.hpp" + +#include <iostream> + +using std::cout; +using std::cerr; +using std::endl; + +Track::Track(Song *_song, string trackName) +: name(trackName), song(_song) +{ +} + +Track *Track::byName(string songName, string trackName) +{ + Song *song = Song::byName(songName); + + Track *track = song->getTrackByName(trackName); + if(!track) track = new Track(song, trackName); + + return track; +} + +void Track::print() +{ + cerr << "---- Track: " << name << " ----" << endl; + + for(unsigned int i = 0; i < patterns.size(); i++) + { + cerr << " Pattern[" << patterns[i]->getName() << "]: " << patterns[i]->getName() << endl; + } + + cerr << "---- End track (" << name << ") ----" << endl; +} + +void Track::addPattern(int rows, int cols, string name) +{ + Pattern *pattern = new Pattern(rows, cols, name); + patterns.push_back(pattern); +} + +Pattern *Track::getPattern(int n) +{ + return patterns[n]; +} |