X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fevoral%2Fevoral%2FSMF.hpp;h=a99514829d6095b45d09cfa9e5dd08afc7e6ed4c;hb=c8e3f32533cc6f4481222781d93e7bf7c32ffe5f;hp=0be2a4b8a7d3dcfae5f8dfd66cb25fbba6fb5e11;hpb=166395c96b8a85d90b9785e629c739494494130f;p=ardour.git diff --git a/libs/evoral/evoral/SMF.hpp b/libs/evoral/evoral/SMF.hpp index 0be2a4b8a7..a99514829d 100644 --- a/libs/evoral/evoral/SMF.hpp +++ b/libs/evoral/evoral/SMF.hpp @@ -2,16 +2,16 @@ * Copyright(C) 2008 Dave Robillard * Copyright(C) 2000-2008 Paul Davis * Author: Hans Baier - * + * * Evoral is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or(at your option) any later * version. - * + * * Evoral is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * + * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -28,7 +28,7 @@ typedef smf_struct smf_t; typedef smf_track_struct smf_track_t; namespace Evoral { - + #define THROW_FILE_ERROR throw(FileError) /** Standard Midi File. @@ -42,30 +42,35 @@ public: SMF() : _smf(0), _smf_track(0), _empty(true) {}; virtual ~SMF(); - + int open(const std::string& path, int track=1) THROW_FILE_ERROR; int create(const std::string& path, int track=1, uint16_t ppqn=19200) THROW_FILE_ERROR; void close() THROW_FILE_ERROR; - - const std::string& path() const { return _path; }; + + const std::string& file_path() const { return _file_path; }; void seek_to_start() const; int seek_to_track(int track); - + int read_event(uint32_t* delta_t, uint32_t* size, uint8_t** buf) const; - + uint16_t num_tracks() const; uint16_t ppqn() const; bool is_empty() const { return _empty; } - + void begin_write(); void append_event_delta(uint32_t delta_t, uint32_t size, const uint8_t* buf); void end_write() THROW_FILE_ERROR; - + void flush() {}; -private: - std::string _path; + double round_to_file_precision (double val) const; + + protected: + void set_path (const std::string& p); + + private: + std::string _file_path; smf_t* _smf; smf_track_t* _smf_track; bool _empty; ///< true iff file contains(non-empty) events