00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ 00002 00003 /* 00004 Sonic Visualiser 00005 An audio file viewer and annotation editor. 00006 Centre for Digital Music, Queen Mary, University of London. 00007 This file copyright 2006 Chris Cannam. 00008 00009 This program is free software; you can redistribute it and/or 00010 modify it under the terms of the GNU General Public License as 00011 published by the Free Software Foundation; either version 2 of the 00012 License, or (at your option) any later version. See the file 00013 COPYING included with this distribution for more information. 00014 */ 00015 00016 #ifndef _WAV_FILE_WRITER_H_ 00017 #define _WAV_FILE_WRITER_H_ 00018 00019 #include <QString> 00020 00021 #include <sndfile.h> 00022 00023 class DenseTimeValueModel; 00024 class MultiSelection; 00025 00026 class WavFileWriter 00027 { 00028 public: 00029 WavFileWriter(QString path, size_t sampleRate, size_t channels); 00030 virtual ~WavFileWriter(); 00031 00032 bool isOK() const; 00033 00034 virtual QString getError() const; 00035 00036 QString getPath() const { return m_path; } 00037 00038 bool writeModel(DenseTimeValueModel *source, 00039 MultiSelection *selection = 0); 00040 00041 bool writeSamples(float **samples, size_t count); // count per channel 00042 00043 bool close(); 00044 00045 protected: 00046 QString m_path; 00047 size_t m_sampleRate; 00048 size_t m_channels; 00049 SNDFILE *m_file; 00050 QString m_error; 00051 }; 00052 00053 00054 #endif
1.5.1