X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/992d59159547267e1491fcd1c5123765b4c452b8..63cf293f572ae7d5c1c83b9dffb31e7d774f8854:/interpretor/lib/src/libsndfile-1.0.25/examples/sndfilehandle.cc diff --git a/interpretor/lib/src/libsndfile-1.0.25/examples/sndfilehandle.cc b/interpretor/lib/src/libsndfile-1.0.25/examples/sndfilehandle.cc new file mode 100644 index 0000000..c9a1931 --- /dev/null +++ b/interpretor/lib/src/libsndfile-1.0.25/examples/sndfilehandle.cc @@ -0,0 +1,84 @@ +/* +** Copyright (C) 2007-2011 Erik de Castro Lopo +** +** 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; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include + +#include + +#define BUFFER_LEN 1024 + +static void +create_file (const char * fname, int format) +{ static short buffer [BUFFER_LEN] ; + + SndfileHandle file ; + int channels = 2 ; + int srate = 48000 ; + + printf ("Creating file named '%s'\n", fname) ; + + file = SndfileHandle (fname, SFM_WRITE, format, channels, srate) ; + + memset (buffer, 0, sizeof (buffer)) ; + + file.write (buffer, BUFFER_LEN) ; + + puts ("") ; + /* + ** The SndfileHandle object will automatically close the file and + ** release all allocated memory when the object goes out of scope. + ** This is the Resource Acquisition Is Initailization idom. + ** See : http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization + */ +} /* create_file */ + +static void +read_file (const char * fname) +{ static short buffer [BUFFER_LEN] ; + + SndfileHandle file ; + + file = SndfileHandle (fname) ; + + printf ("Opened file '%s'\n", fname) ; + printf (" Sample rate : %d\n", file.samplerate ()) ; + printf (" Channels : %d\n", file.channels ()) ; + + file.read (buffer, BUFFER_LEN) ; + + puts ("") ; + + /* RAII takes care of destroying SndfileHandle object. */ +} /* read_file */ + +int +main (void) +{ const char * fname = "test.wav" ; + + puts ("\nSimple example showing usage of the C++ SndfileHandle object.\n") ; + + create_file (fname, SF_FORMAT_WAV | SF_FORMAT_PCM_16) ; + + read_file (fname) ; + + puts ("Done.\n") ; + return 0 ; +} /* main */ + +