summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-01-01 19:52:36 +0000
committerDavid Robillard <d@drobilla.net>2008-01-01 19:52:36 +0000
commitcb21a7b08354134307637eb822a3c1ad9cb7ed23 (patch)
treefed8b9484141e723317a00886b0bd8bc841c9397 /src
parent143d9b1599a82a35165fd8e17f249998f95f15d0 (diff)
downloadraul-cb21a7b08354134307637eb822a3c1ad9cb7ed23.tar.gz
raul-cb21a7b08354134307637eb822a3c1ad9cb7ed23.tar.bz2
raul-cb21a7b08354134307637eb822a3c1ad9cb7ed23.zip
RAUL code cleanup.
git-svn-id: http://svn.drobilla.net/lad/raul@999 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/Path.cpp27
-rw-r--r--src/SMFReader.cpp25
-rw-r--r--src/SMFWriter.cpp73
3 files changed, 17 insertions, 108 deletions
diff --git a/src/Path.cpp b/src/Path.cpp
index 284cf16..04f89e7 100644
--- a/src/Path.cpp
+++ b/src/Path.cpp
@@ -17,6 +17,8 @@
#include <raul/Path.hpp>
+using namespace std;
+
namespace Raul {
@@ -124,27 +126,6 @@ Path::nameify(const std::basic_string<char>& str)
void
Path::replace_invalid_chars(string& str, bool replace_slash)
{
-#if 0
- for (size_t i=0; i < str.length(); ++i) {
- if (str[i] == ' ' || str[i] == '_') {
- str[i+1] = std::toupper(str[i+1]); // capitalize next char
- str = str.substr(0, i) + str.substr(i+1); // chop space/underscore
- --i;
- } else if (str[i] == '[' || str[i] == '{') {
- str[i] = '(';
- } else if (str[i] == ']' || str[i] == '}') {
- str[i] = ')';
- } else if (str[i] < 32 || str.at(i) > 126
- || str[i] == '#'
- || str[i] == '*'
- || str[i] == ','
- || str[i] == '?'
- || (replace_slash && str[i] == '/')) {
- str[i] = '.';
- }
- }
-#endif
-
size_t open_bracket = str.find_first_of('(');
if (open_bracket != string::npos)
str = str.substr(0, open_bracket-1);
@@ -165,10 +146,8 @@ Path::replace_invalid_chars(string& str, bool replace_slash)
// Kill CamelCase in favour of god_fearing_symbol_names
for (size_t i=1; i < str.length(); ++i) {
- if (str[i] >= 'A' && str[i] <= 'Z' && str[i-1] >= 'a' && str[i-1] <= 'z') {
- //str[i] = std::tolower(str[i]);
+ if (str[i] >= 'A' && str[i] <= 'Z' && str[i-1] >= 'a' && str[i-1] <= 'z')
str = str.substr(0, i) + '_' + str.substr(i);
- }
}
for (size_t i=0; i < str.length(); ++i) {
diff --git a/src/SMFReader.cpp b/src/SMFReader.cpp
index 9b2e4de..a27939d 100644
--- a/src/SMFReader.cpp
+++ b/src/SMFReader.cpp
@@ -73,6 +73,7 @@ midi_event_size(unsigned char status)
SMFReader::SMFReader()
: _fd(NULL)
, _ppqn(0)
+ , _track(0)
, _track_size(0)
{
}
@@ -127,14 +128,6 @@ SMFReader::open(const string& filename)
_ppqn = GUINT16_FROM_BE(ppqn_be);
seek_to_track(1);
- // Read Track size (skip bytes 14..17 'Mtrk')
- // FIXME: first track read only
- /*fseek(_fd, 18, SEEK_SET);
- uint32_t track_size_be = 0;
- fread(&track_size_be, 4, 1, _fd);
- _track_size = GUINT32_FROM_BE(track_size_be);
- std::cerr << "SMF - read track size " << _track_size << std::endl;
- */
return true;
} else {
@@ -147,12 +140,12 @@ SMFReader::open(const string& filename)
* Returns true if specified track was found.
*/
bool
-SMFReader::seek_to_track(unsigned track)
+SMFReader::seek_to_track(unsigned track) throw (std::logic_error)
{
assert(track > 0);
if (!_fd)
- throw logic_error("Attempt to seek to track on unopen SMF file.");
+ throw logic_error("Attempt to seek to track on unopened SMF file.");
unsigned track_pos = 0;
@@ -182,7 +175,7 @@ SMFReader::seek_to_track(unsigned track)
}
if (!feof(_fd) && track_pos == track) {
- //_track = track;
+ _track = track;
_track_size = chunk_size;
return true;
} else {
@@ -205,10 +198,14 @@ SMFReader::seek_to_track(unsigned track)
* set to the actual size of the event.
*/
int
-SMFReader::read_event(size_t buf_len, unsigned char* buf, uint32_t* ev_size, uint32_t* delta_time)
+SMFReader::read_event(size_t buf_len,
+ uint8_t* buf,
+ uint32_t* ev_size,
+ uint32_t* delta_time) throw (std::logic_error)
{
- // - 4 is for the EOT event, which we don't actually want to read
- //if (feof(_fd) || ftell(_fd) >= HEADER_SIZE + _track_size - 4) {
+ if (_track == 0)
+ throw logic_error("Attempt to read from unopened SMF file");
+
if (!_fd || feof(_fd)) {
return -1;
}
diff --git a/src/SMFWriter.cpp b/src/SMFWriter.cpp
index b339b46..b141e30 100644
--- a/src/SMFWriter.cpp
+++ b/src/SMFWriter.cpp
@@ -71,48 +71,6 @@ SMFWriter::start(const string& filename,
return (_fd == 0) ? -1 : 0;
}
-#if 0
-jack_nframes_t
-SMFWriter::write_unlocked (MidiRingBuffer& src, jack_nframes_t cnt)
-{
- //cerr << "SMF WRITE -- " << _length << "--" << cnt << endl;
-
- MidiBuffer buf(1024); // FIXME: allocation, size?
- src.read(buf, /*_length*/0, _length + cnt); // FIXME?
-
- fseek(_fd, 0, SEEK_END);
-
- // FIXME: start of source time?
-
- for (size_t i=0; i < buf.size(); ++i) {
- const MidiEvent& ev = buf[i];
- assert(ev.time >= _timeline_position);
- uint32_t delta_time = (ev.time - _timeline_position) - _last_ev_time;
-
- /*printf("SMF - writing event, delta = %u, size = %zu, data = ",
- delta_time, ev.size);
- for (size_t i=0; i < ev.size; ++i) {
- printf("%X ", ev.buffer[i]);
- }
- printf("\n");
- */
- size_t stamp_size = write_var_len(delta_time);
- fwrite(ev.buffer, 1, ev.size, _fd);
- _last_ev_time += delta_time;
- _track_size += stamp_size + ev.size;
- }
-
- fflush(_fd);
-
- if (buf.size() > 0) {
- ViewDataRangeReady (_length, cnt); /* EMIT SIGNAL */
- }
-
- update_length(_length, cnt);
- return cnt;
-}
-#endif
-
/** Write an event at the end of the file.
*
@@ -184,9 +142,9 @@ SMFWriter::write_header()
assert(_fd);
- const uint16_t type = GUINT16_TO_BE(0); // SMF Type 0 (single track)
- const uint16_t ntracks = GUINT16_TO_BE(1); // Number of tracks (always 1 for Type 0)
- const uint16_t division = GUINT16_TO_BE(_ppqn); // Number of tracks (always 1 for Type 0)
+ const uint16_t type = GUINT16_TO_BE(0); // SMF Type 0 (single track)
+ const uint16_t ntracks = GUINT16_TO_BE(1); // Number of tracks (always 1 for Type 0)
+ const uint16_t division = GUINT16_TO_BE(_ppqn); // Number of tracks (always 1 for Type 0)
char data[6];
memcpy(data, &type, 2);
@@ -264,30 +222,5 @@ SMFWriter::write_var_len(uint32_t value)
}
-#if 0
-uint32_t
-SMFWriter::read_var_len() const
-{
- assert(!feof(_fd));
-
- //int offset = ftell(_fd);
- //cerr << "SMF - reading var len at " << offset << endl;
-
- uint32_t value;
- unsigned char c;
-
- if ( (value = getc(_fd)) & 0x80 ) {
- value &= 0x7F;
- do {
- assert(!feof(_fd));
- value = (value << 7) + ((c = getc(_fd)) & 0x7F);
- } while (c & 0x80);
- }
-
- return value;
-}
-#endif
-
-
} // namespace Raul