71 lines
2.6 KiB
C++
71 lines
2.6 KiB
C++
|
|
||
|
/*******************************************************************************/
|
||
|
/* Copyright (C) 2008 Jonathan Moore Liles */
|
||
|
/* */
|
||
|
/* This program 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. */
|
||
|
/* */
|
||
|
/* This program 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 */
|
||
|
/* more details. */
|
||
|
/* */
|
||
|
/* You should have received a copy of the GNU General Public License along */
|
||
|
/* with This program; see the file COPYING. If not,write to the Free Software */
|
||
|
/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||
|
/*******************************************************************************/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
typedef unsigned long nframes_t;
|
||
|
|
||
|
/* a clip is just a stupid wrapper object for communicating with the peak server */
|
||
|
|
||
|
#include "Peak_Client.H"
|
||
|
extern Peak_Client peak_client;
|
||
|
|
||
|
class Clip
|
||
|
{
|
||
|
const char *_filename;
|
||
|
nframes_t _length; /* length of file in samples */
|
||
|
int _channels;
|
||
|
|
||
|
public:
|
||
|
|
||
|
Clip ( )
|
||
|
{
|
||
|
_filename = NULL;
|
||
|
_length = _channels = 0;
|
||
|
}
|
||
|
|
||
|
const char *name ( void ) const { return _filename; }
|
||
|
nframes_t length ( void ) const { return _length; }
|
||
|
int channels ( void ) const { return _channels; }
|
||
|
|
||
|
static Clip *
|
||
|
from_file ( const char * filename )
|
||
|
{
|
||
|
|
||
|
Clip *c = new Clip;
|
||
|
|
||
|
c->_filename = filename;
|
||
|
|
||
|
if ( ! peak_client.get_info( filename, &c->_length, &c->_channels ) )
|
||
|
{
|
||
|
delete c;
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
return c;
|
||
|
}
|
||
|
|
||
|
bool
|
||
|
read_peaks ( float fpp, nframes_t start, nframes_t end,
|
||
|
int *peaks, Peak **pbuf, int *channels )
|
||
|
{
|
||
|
return peak_client.read_peaks( _filename, fpp, start, end, peaks, pbuf, channels );
|
||
|
}
|
||
|
};
|