Hi James
Thanks for that hint. I actually _wanted_ to check [readanysf~], but failed to compile it. But yeah, it would cover some of the given requirments. Unfortunately, it does not seem to return the number of channels of an audio file. Since i cannot test myself now: Is it able at all to play multi-channel-files with a higher number of channels than 2?
I don't see any errors, when running ./configure. However, 'make' fails pretty early:
roman@yoyo2:~/pd-svn/externals/august/readanysf~$ make
make all-recursive
make[1]: Entering directory
/home/roman/pd-svn/externals/august/readanysf~' Making all in src make[2]: Entering directory
/home/roman/pd-svn/externals/august/readanysf~/src'
g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include/
-I/usr/local/lib/pd/flext/ -I../include/ -DUNIX -Wno-deprecated -Wall
-Wimplicit -Wunused -Wmissing-prototypes -O1 -DFLEXT_SYS=2
-DFLEXT_THREADS -DFLEXT_SHARED -DFLEXT_USE_CMEM
-I/usr/local/include/flext -DREAD_VORBIS -DREAD_MAD -DREAD_FLAC -MT
Input.o -MD -MP -MF .deps/Input.Tpo -c -o Input.o Input.cpp
cc1plus: warning: command line option "-Wmissing-prototypes" is valid
for Ada/C/ObjC but not for C++
Input.cpp:2:22: error: iostream.h: No such file or directory
make[2]: *** [Input.o] Error 1
make[2]: Leaving directory
/home/roman/pd-svn/externals/august/readanysf~/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory
/home/roman/pd-svn/externals/august/readanysf~'
make: *** [all] Error 2
There are several packages delivering a file 'iostream.h', but none of them puts it directly to /usr/include. I also did install all the pre-requisites of readanysf~: libmad, libsamplerate, libflac, libogg, working flext.
Help would be much appreciated.
Roman
On Mon, 2009-12-07 at 16:43 +0000, James Dunn wrote:
What about readanysf~? You can send it [seek $1( and you can also get the file length in seconds out with [route length]
Quoth Roman Haefeli, on 06/12/09 23:57:
Hi all
Yeah, it's never too late for basic questions. Basically i would like to create file player patch, that let's you pick a soundfile (be it a wav) of any number of channels and a bit depth currently supported by [readsf~] and it should be able to play from any position between the start and the end of the file.
Usually i used a kludge by using [soundfiler] in order to get the number of sample frames of the file and then i calculated the number of bytes to be skipped in order to be able to let [readsf~] play the file from a random position. However, this only works when the actual header size of the file is constant (i.e. known and the same for every file; ok, when the header sizes would be known, they wouldn't need to be the same for all files, but you get the point) and when you know beforehand the bit depth of the file(s), since [readsf~] reads it correctly, but doesn't tell you about it.
Now, i would like to be able to play wav files correctly with arbitrary (unkown) bit depths and arbitrary (unkown) number of channels. Also, i am looking for a way to be able to load both, simple RIFF WAV and so called 'Broadcast WAV' files (the ones with a 'bext' header signature).
I also tried [wavinfo] from ext13. However, this seems to work only with the former (simple) format, but not with broadcast wav-files. Funny enough, [readsf~] seems to have everything needed built-in, since it reads both formats correctly, it just does not expose those functions to the pd patch (as this unfortunately is often the problem with many object classes).
Any idea or pointers to other externals welcome!
Roman
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list