C++ sound program

download C++   sound program

of 4

Transcript of C++ sound program

  • 8/13/2019 C++ sound program

    1/4

    simple sounds via Beep programS

    Program 1#include#include // WinApi header

    using namespace std;

    int main(){Beep(523,500); // 523 hertz (C5) for 500 millisecondsBeep(587,500);Beep(659,500);Beep(698,500);Beep(784,500);

    cin.get(); // waitreturn 0;}

    Program 2#include

    using namespace std;int main(){Beep(768,500);return 0;}

    soundfile++ is a library of C++ classes for writing simple sound processing programs. The library can read/write soundfiles in the Microsoft WAVE format (.wav)and the Sun/NeXT format (.au, or .snd). Cross-platform compiling is possible, and soundfile++ is known to compile in Linux, OSX and Windowssoundfile++ is a subset of the sig++ library.

    SoundFile -- soundfile reading/writing library for soundfiles in theMicrosoft WAVE format and the Sun/NeXT audio file formats.See programs in the examples directory for sample usage of the library.

    The primary classes, SoundFileRead and SoundFileWrite, are designedto interface with standard digital signal processing techniques bynormalizing the audio data into the range from -1.0 to +1.0. 16-Bitfunctions are added to access the data as integer values, but only as acourtesy since they are reconverted from the normalized double values.The SoundFileRead and SoundFileWrite can handle almost all possible inputand output sound file data types, such as 8-bit mulaw, 8-bit linear,16-bit linear, 24-bit linear, 32-bit linear, 32-bit float, and 64-bitdouble float types. All of the actual reading/writing of soundfiles

    is done with soundfilehelpers.cpp.

    Before compiling the library/programs, you should change theOSTYPE variable in Makefile.library and Makefile.examples to oneof the following values:* use LINUX for linux computers (on Intel CPUs)* use VISUAL for Windows computers* use SUN for Sun computers* use OSX for Apple OS X computers (on Motorola CPUs)

  • 8/13/2019 C++ sound program

    2/4

    Then type "make library" to compile the soundfile library.And then type "make examples" to compile all of the example programs.

    Operating systems known to compile the code successfully:* Linux on Intel architecture with GCC 2.7.2 or higher* Apple OS X 10.2 or higher* Microsoft Windows 95 with Visual C++ 5.0 or higher

    If you use the Cygwin (cygwin.com) linux terminal for Windows, youshould comment out the strip command when making the example programs.

    The library and example programs should compile on any other platform,although the endianness of the computer will have to be specified ininclude/sigConfiguration.h which is used by the FileIO class to figureout the correct order to write multi-byte numbers.

    Mon Oct 17 03:28:58 PDT 2005Craig Stuart Sapp

    =========================================================================

    00README -- This file.examples -- Example programs which use the library.include -- Header files for use with library file.lib -- Location for the library file.Makefile -- Makefile for creating library and example programs.Makefile.library -- Makefile for creating library.Makefile.examples -- Makefile for creating exmaple programs.src -- Source code directory for library.

    -------------------------------------------------------------------------

    Example programs in the examples/ directory:badsplice.cpp -- Chop up a soundfile into random pieces.

    extractChannel.cpp -- Take one channel out of a multi-channel file.extractrange.cpp -- Extract a segment from a larger soundfile.looptest.cpp -- Demonstration and testing of the loopingfeature of the SoundFileRead class.makemulti.cpp -- Take several input soundfiles and writeout a single multi-channel soundfile.multi2mono.cpp -- Example program to convert multi-channel filesto mono files by adding all channels together.readtest.cpp -- Soundfile reading test program.sndcopy.cpp -- Program that reads a file and outputsthe an exact copy of the same soundfile.sndinfo.cpp -- Print out the soundfile's vital statistics.sndreverse.cpp -- Reverses a soundfile.

    sndsubtract.cpp -- Subtract two sound files and storeresults in a third soundfile. Usefulfor debugging.writetest.cpp -- Soundfile writing test program.

    clicktrack.cpp -- Create a click track for an existing soundfile.cutoff.cpp --extractclicks.cpp -- Extract click track times from audio clicktrack.printbits.cpp --snd16.cpp --

  • 8/13/2019 C++ sound program

    3/4

    sndpower.cpp -- Calculate power information for a soundfile.sndscale.cpp --

    Library files in lib/, include/, and src/ directories:soundfile.h -- API interface for soundio library.lib/libsoundfile.a -- soundfile library file (when created w/ makefile)

    Array.cpp -- Class for arrays of numbers.Array.hCollection.cpp -- Base class for Array.Collection.hFileIO.cpp -- Class for handling endian outputs to files.FileIO.hOptions.cpp -- Handy command-line option processor.Options.hOptions_private.cpp -- Used by Options class.Options_private.hsigConfiguration.h -- Miscellaneous preprocessor define setups.SoundFileRead.cpp -- Class which reads soundfiles.SoundFileRead.hSoundFileWrite.cpp -- Class which writes soundfiles.

    SoundFileWrite.hSoundHeader.cpp -- Class for soundfile formatting parameters.SoundHeader.hsoundfilehelpers.cpp-- Helping function which do the actual soundfilesoundfilehelpers.h reading/writing.

    ---------------------------------------------------------------------------

    To test the basic reading and writing of soundfiles, type "make runtest"which should generate this output:

    ; Sample count = 20

    ; Channels = 1; samp 16-bit double0: -5 (-0.000152588)1: -4 (-0.00012207)2: -3 (-9.15527e-05)3: -2 (-6.10352e-05)4: -1 (-3.05176e-05)5: 0 (0)6: 1 (3.05176e-05)7: 2 (6.10352e-05)8: 3 (9.15527e-05)9: 4 (0.00012207)10: -5 (-0.000152588)

    11: -4 (-0.00012207)12: -3 (-9.15527e-05)13: -2 (-6.10352e-05)14: -1 (-3.05176e-05)15: 0 (0)16: 1 (3.05176e-05)17: 2 (6.10352e-05)18: 3 (9.15527e-05)19: 4 (0.00012207)

  • 8/13/2019 C++ sound program

    4/4

    To test the looping feature of the SoundFileRead class, type "make runloop"which should generate this output:

    ; Sample count = 100; Channels = 1; samp 16-bit double; The first 10 samples:0: 0 (0)1: 1 (3.05176e-05)2: 2 (6.10352e-05)3: 3 (9.15527e-05)4: 4 (0.00012207)5: 5 (0.000152588)6: 6 (0.000183105)7: 7 (0.000213623)8: 8 (0.000244141)9: 9 (0.000274658)

    ; The last 10 samples:90: 90 (0.00274658)91: 91 (0.0027771)92: 92 (0.00280762)93: 93 (0.00283813)

    94: 94 (0.00286865)95: 95 (0.00289917)96: 96 (0.00292969)97: 97 (0.00296021)98: 98 (0.00299072)99: 99 (0.00302124)

    ; The first 10 samples again via looping:0: 0 (0)1: 1 (3.05176e-05)2: 2 (6.10352e-05)3: 3 (9.15527e-05)4: 4 (0.00012207)

    5: 5 (0.000152588)6: 6 (0.000183105)7: 7 (0.000213623)8: 8 (0.000244141)9: 9 (0.000274658)

    A useful debugging sound file can be generated with thefollowing command:bin/writetest -n 65536 -s -32768 fullrange.wavThis should write a sound file which contains exactly one sound sampleat every possible amplitude level. This file can also be createdin the bin directory by typing "make fullrange".