--- /dev/null
+#include "sounddecoder.h"
+#include "waveform.h"
+
+using namespace std;
+
+namespace Msp {
+namespace AL {
+
+Waveform::Waveform():
+ format(MONO8),
+ freq(0),
+ size(0),
+ data(0)
+{ }
+
+Waveform::~Waveform()
+{
+ delete[] data;
+}
+
+void Waveform::load_file(const string &fn)
+{
+ SoundDecoder decoder;
+ decoder.open_file(fn);
+ load(decoder);
+}
+
+void Waveform::load_memory(const void *d, unsigned len)
+{
+ SoundDecoder decoder;
+ decoder.open_memory(d, len);
+ load(decoder);
+}
+
+void Waveform::load(SoundDecoder &decoder)
+{
+ delete[] data;
+
+ format = decoder.get_format();
+ freq = decoder.get_frequency();
+ size = decoder.get_size();
+ data = new char[size];
+ unsigned pos = 0;
+ while(unsigned len = decoder.read(data+pos, size-pos))
+ pos += len;
+ size = pos;
+}
+
+} // namespace AL
+} // namespace Msp