+++ /dev/null
-#include <iostream>
-#include "portaudiocpp/PortAudioCpp.hxx"
-
-#ifdef WIN32
-#include "portaudiocpp/AsioDeviceAdapter.hxx"
-#endif
-
-// ---------------------------------------------------------------------------------------
-
-void printSupportedStandardSampleRates(
- const portaudio::DirectionSpecificStreamParameters &inputParameters,
- const portaudio::DirectionSpecificStreamParameters &outputParameters)
-{
- static double STANDARD_SAMPLE_RATES[] = {
- 8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0,
- 44100.0, 48000.0, 88200.0, 96000.0, -1 }; // negative terminated list
-
- int printCount = 0;
-
- for (int i = 0; STANDARD_SAMPLE_RATES[i] > 0; ++i)
- {
- portaudio::StreamParameters tmp = portaudio::StreamParameters(inputParameters, outputParameters, STANDARD_SAMPLE_RATES[i], 0, paNoFlag);
-
- if (tmp.isSupported())
- {
- if (printCount == 0)
- {
- std::cout << " " << STANDARD_SAMPLE_RATES[i]; // 8.2
- printCount = 1;
- }
- else if (printCount == 4)
- {
- std::cout << "," << std::endl;
- std::cout << " " << STANDARD_SAMPLE_RATES[i]; // 8.2
- printCount = 1;
- }
- else
- {
- std::cout << ", " << STANDARD_SAMPLE_RATES[i]; // 8.2
- ++printCount;
- }
- }
- }
-
- if (printCount == 0)
- std::cout << "None" << std::endl;
- else
- std::cout << std::endl;
-}
-
-// ---------------------------------------------------------------------------------------
-
-int main(int, char*[]);
-int main(int, char*[])
-{
- try
- {
- portaudio::AutoSystem autoSys;
-
- portaudio::System &sys = portaudio::System::instance();
-
- std::cout << "PortAudio version number = " << sys.version() << std::endl;
- std::cout << "PortAudio version text = '" << sys.versionText() << "'" << std::endl;
-
- int numDevices = sys.deviceCount();
- std::cout << "Number of devices = " << numDevices << std::endl;
-
- for (portaudio::System::DeviceIterator i = sys.devicesBegin(); i != sys.devicesEnd(); ++i)
- {
- std::cout << "--------------------------------------- device #" << (*i).index() << std::endl;
-
- // Mark global and API specific default devices:
- bool defaultDisplayed = false;
-
- if ((*i).isSystemDefaultInputDevice())
- {
- std::cout << "[ Default Input";
- defaultDisplayed = true;
- }
- else if ((*i).isHostApiDefaultInputDevice())
- {
- std::cout << "[ Default " << (*i).hostApi().name() << " Input";
- defaultDisplayed = true;
- }
-
- if ((*i).isSystemDefaultOutputDevice())
- {
- std::cout << (defaultDisplayed ? "," : "[");
- std::cout << " Default Output";
- defaultDisplayed = true;
- }
- else if ((*i).isHostApiDefaultOutputDevice())
- {
- std::cout << (defaultDisplayed ? "," : "[");
- std::cout << " Default " << (*i).hostApi().name() << " Output";
- defaultDisplayed = true;
- }
-
- if (defaultDisplayed)
- std::cout << " ]" << std::endl;
-
- // Print device info:
- std::cout << "Name = " << (*i).name() << std::endl;
- std::cout << "Host API = " << (*i).hostApi().name() << std::endl;
- std::cout << "Max inputs = " << (*i).maxInputChannels() << ", Max outputs = " << (*i).maxOutputChannels() << std::endl;
-
- std::cout << "Default low input latency = " << (*i).defaultLowInputLatency() << std::endl; // 8.3
- std::cout << "Default low output latency = " << (*i).defaultLowOutputLatency() << std::endl; // 8.3
- std::cout << "Default high input latency = " << (*i).defaultHighInputLatency() << std::endl; // 8.3
- std::cout << "Default high output latency = " << (*i).defaultHighOutputLatency() << std::endl; // 8.3
-
-#ifdef WIN32
- // ASIO specific latency information:
- if ((*i).hostApi().typeId() == paASIO)
- {
- portaudio::AsioDeviceAdapter asioDevice((*i));
-
- std::cout << "ASIO minimum buffer size = " << asioDevice.minBufferSize() << std::endl;
- std::cout << "ASIO maximum buffer size = " << asioDevice.maxBufferSize() << std::endl;
- std::cout << "ASIO preferred buffer size = " << asioDevice.preferredBufferSize() << std::endl;
-
- if (asioDevice.granularity() == -1)
- std::cout << "ASIO buffer granularity = power of 2" << std::endl;
- else
- std::cout << "ASIO buffer granularity = " << asioDevice.granularity() << std::endl;
- }
-#endif // WIN32
-
- std::cout << "Default sample rate = " << (*i).defaultSampleRate() << std::endl; // 8.2
-
- // Poll for standard sample rates:
- portaudio::DirectionSpecificStreamParameters inputParameters((*i), (*i).maxInputChannels(), portaudio::INT16, true, 0.0, NULL);
- portaudio::DirectionSpecificStreamParameters outputParameters((*i), (*i).maxOutputChannels(), portaudio::INT16, true, 0.0, NULL);
-
- if (inputParameters.numChannels() > 0)
- {
- std::cout << "Supported standard sample rates" << std::endl;
- std::cout << " for half-duplex 16 bit " << inputParameters.numChannels() << " channel input = " << std::endl;
- printSupportedStandardSampleRates(inputParameters, portaudio::DirectionSpecificStreamParameters::null());
- }
-
- if (outputParameters.numChannels() > 0)
- {
- std::cout << "Supported standard sample rates" << std::endl;
- std::cout << " for half-duplex 16 bit " << outputParameters.numChannels() << " channel output = " << std::endl;
- printSupportedStandardSampleRates(portaudio::DirectionSpecificStreamParameters::null(), outputParameters);
- }
-
- if (inputParameters.numChannels() > 0 && outputParameters.numChannels() > 0)
- {
- std::cout << "Supported standard sample rates" << std::endl;
- std::cout << " for full-duplex 16 bit " << inputParameters.numChannels() << " channel input, " << outputParameters.numChannels() << " channel output = " << std::endl;
- printSupportedStandardSampleRates(inputParameters, outputParameters);
- }
- }
-
- std::cout << "----------------------------------------------" << std::endl;
- }
- catch (const portaudio::PaException &e)
- {
- std::cout << "A PortAudio error occured: " << e.paErrorText() << std::endl;
- }
- catch (const portaudio::PaCppException &e)
- {
- std::cout << "A PortAudioCpp error occured: " << e.what() << std::endl;
- }
- catch (const std::exception &e)
- {
- std::cout << "A generic exception occured: " << e.what() << std::endl;
- }
- catch (...)
- {
- std::cout << "An unknown exception occured." << std::endl;
- }
-
- return 0;
-}
+++ /dev/null
-#include "pa_class.h"
-
-PortAudioWrap::PortAudioWrap()
-{
- stream = NULL;\r
-// inputBuffer = 0;
-// outputBuffer = NULL;
- inputDevice = paNoDevice;
- outputDevice = paNoDevice;
- userData = NULL;\r
- samplerate = 0;\r
- framesPerBuffer = 0;
- statusFlags = 0;\r
- streamCallback = NULL;\r
- streamFinishedCallback = NULL;\r
- timeInfo = 0;
-}
-
-PortAudioWrap::~PortAudioWrap()
-{
-}
-
-PaError PortAudioWrap::init()
-{
- return Pa_Initialize();
-}
-
-PaError PortAudioWrap::streamOpen()\r
-{
- return Pa_OpenStream(
- &stream,
- &inputBuffer,
- &outputBuffer,
- samplerate,
- framesPerBuffer,
- statusFlags,
- *streamCallback,
- userData
- );
-}
-
-PaError PortAudioWrap::streamStart()\r
-{
- return Pa_StartStream(this->stream);
-}
-
-PaError PortAudioWrap::streamClose()\r
-{
- if (isOpen())
- {
- return Pa_CloseStream(this->stream);
- }
- else
- {
- return 1;
- }
-}
-\r
-void PortAudioWrap::terminate()\r
-{
- Pa_Terminate();
-}
-\r
-void PortAudioWrap::stop()
-{
- Pa_StopStream(stream);
-}
-
-void PortAudioWrap::abort()
-{
- Pa_AbortStream(stream);
-}
-
-bool PortAudioWrap::isStopped() const
-{
- PaError ret = Pa_IsStreamStopped(stream);
- return ret;
-}
-
-bool PortAudioWrap::isActive() const
-{
- PaError ret = Pa_IsStreamActive(stream);
- return ret;
-}
-
-bool PortAudioWrap::isOpen() const\r
-{\r
- return (stream != NULL);\r
-}\r
-
-PaDeviceIndex PortAudioWrap::getDefaultInputDevice()
-{
- return Pa_GetDefaultInputDevice();
-}
-
-PaDeviceIndex PortAudioWrap::getDefaultOutputDevice()
-{
- return Pa_GetDefaultOutputDevice();
-}
-
-PaError PortAudioWrap::setInputChannelCount(int count)
-{
-// if(!isActive())
-// {
- inputBuffer.channelCount = count;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setInputSampleFormat(PaSampleFormat format)
-{
-// if(!isActive())
-// {
- inputBuffer.sampleFormat = format;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setInputLatency(PaTime latency)
-{
-// if(!isActive())
-// {
- inputBuffer.suggestedLatency = latency;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-\r
-void PortAudioWrap::setInputHostApiStreamInfo(void *info)
-{
- inputBuffer.hostApiSpecificStreamInfo = info;
-}
-\r
-PaTime PortAudioWrap::getInputDefaultLowLatency()
-{
- return Pa_GetDeviceInfo(inputBuffer.device)->defaultLowInputLatency;
-}
-
-PaError PortAudioWrap::setOutputChannelCount(int count)
-{
-// if(!isActive())
-// {
- outputBuffer.channelCount = count;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setOutputSampleFormat(PaSampleFormat format)
-{
-// if(!isActive())
-// {
- outputBuffer.sampleFormat = format;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setOutputLatency(PaTime latency)
-{
-// if(!isOpen())
-// {
- outputBuffer.suggestedLatency = latency;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-void PortAudioWrap::setOutputHostApiStreamInfo(void *info)
-{
- outputBuffer.hostApiSpecificStreamInfo = info;
-}
-
-PaTime PortAudioWrap::getOutputDefaultLowLatency()
-{
- return Pa_GetDeviceInfo(inputBuffer.device)->defaultLowInputLatency;
-}
-
-PaError PortAudioWrap::setFramesPerBuffer(unsigned long size)
-{
-// if(!isOpen())
-// {
- framesPerBuffer = size;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setSampleRate(unsigned long rate)\r
-{
-// if(!isOpen())
-// {
- samplerate = rate;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setStreamFlags(PaStreamFlags flags)\r
-{
-// if(!isOpen())
-// {
- statusFlags = flags;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setInputDevice(PaDeviceIndex flags)\r
-{
-// if(!isOpen())
-// {
- inputDevice = flags;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setOutputDevice(PaDeviceIndex flags)\r
-{
-// if(!isOpen())
-// {
- outputDevice = flags;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-PaError PortAudioWrap::setCallback(PaStreamCallback *callback)\r
-{
-// if(!isOpen())
-// {
- streamCallback = callback;
- return paNoError;
-// }
-// return paStreamIsNotStopped;
-}
-
-
-
-// Non-linear amplifier with soft distortion curve.
-float CubicAmplifier(float input)
-{
- float output, temp;
- if(input < 0.0)
- {
- temp = input + 1.0f;
- output = (temp * temp * temp) - 1.0f;
- }
- else
- {
- temp = input - 1.0f;
- output = (temp * temp * temp) + 1.0f;
- }
- return output;
-}
-
-#define FUZZ(x) CubicAmplifier(CubicAmplifier(CubicAmplifier(CubicAmplifier(x))))
-
-static int gNumNoInputs = 0;
-
-static int fuzzCallback(const void *inputBuffer,
- void *outputBuffer,
- unsigned long framesPerBuffer,
- const PaStreamCallbackTimeInfo* timeInfo,
- PaStreamCallbackFlags statusFlags,
- void *userData)
-{
- SAMPLE *out = (SAMPLE*)outputBuffer;
- const SAMPLE *in = (const SAMPLE*)inputBuffer;
- unsigned int i;
- (void) timeInfo; // Prevent unused variable warnings.
- (void) statusFlags;
- (void) userData;
-
- if(inputBuffer == NULL)
- {
- for(i = 0; i < framesPerBuffer; i++)
- {
- *out++ = 0; // left - silent
- *out++ = 0; // right - silent
- }
- gNumNoInputs += 1;
- }
- else
- {
- for(i = 0; i < framesPerBuffer; i++)
- {
- *out++ = FUZZ(*in++); // left - distorted
- *out++ = *in++; // right - clean
- }
- }
- return paContinue;
-}
-
-
-#if 1
-int main(void)
-{
- PaError err;
- PaDeviceIndex inputDevice;
- PaDeviceIndex outputDevice;
-
- PortAudioWrap pa = PortAudioWrap();
- err = pa.init();
-
- inputDevice = pa.getDefaultInputDevice(); // default input device
- if(inputDevice == paNoDevice)
- {
- fprintf(stderr, "Error: No default input device.\n");
- goto error;
- }
- err = pa.setInputDevice(inputDevice);
- err = pa.setInputChannelCount(2); // stereo input
- err = pa.setInputSampleFormat(PA_SAMPLE_TYPE);
- err = pa.setInputLatency(pa.getInputDefaultLowLatency());
- pa.setInputHostApiStreamInfo(NULL);
-
- outputDevice = pa.getDefaultOutputDevice(); // default output device
- if (outputDevice == paNoDevice)
- {
- fprintf(stderr,"Error: No default output device.\n");
- goto error;
- }
- err = pa.setOutputDevice(inputDevice);
- err = pa.setOutputChannelCount(2); // stereo input
- err = pa.setOutputSampleFormat(PA_SAMPLE_TYPE);
- err = pa.setOutputLatency(pa.getOutputDefaultLowLatency());
- pa.setOutputHostApiStreamInfo(NULL);
-
- err = pa.setFramesPerBuffer(FRAMES_PER_BUFFER);
- err = pa.setSampleRate(SAMPLE_RATE);
- err = pa.setStreamFlags(0);
- err = pa.setCallback(fuzzCallback);
- err = pa.streamOpen();
-
- if(err != paNoError)
- {
- goto error;
- }
- err = pa.streamStart();
- if(err != paNoError)
- {
- goto error;
- }
-
- printf("Hit ENTER to stop program.\n");
- getchar();
- err = pa.streamClose();
- if( err != paNoError )
- {
- goto error;
- }
- printf("Finished. gNumNoInputs = %d\n", gNumNoInputs );
- pa.terminate();
- return 0;
-
-error:
- Pa_Terminate();
- fprintf( stderr, "An error occured while using the portaudio stream\n" );
- fprintf( stderr, "Error number: %d\n", err );
- fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( err ) );
- return -1;
-
-}
-
-#endif
-
+++ /dev/null
-#include <stdio.h>
-#include <math.h>
-#include "portaudio.h"
-\r
-// Note that many of the older ISA sound cards on PCs do NOT support
-// full duplex audio (simultaneous record and playback).
-// And some only support full duplex at lower sample rates.
-#define SAMPLE_RATE (44100)
-#define PA_SAMPLE_TYPE paFloat32
-#define FRAMES_PER_BUFFER (64)
-
-typedef float SAMPLE;
-
-float CubicAmplifier(float input);
-
-class PortAudioWrap\r
-{\r
- public:\r
- PortAudioWrap();\r
- ~PortAudioWrap();\r
-\r
- private:\r
- PaStream *stream;\r
- PaStreamParameters inputBuffer;
- PaStreamParameters outputBuffer;
- void *userData;\r
- int samplerate;\r
- unsigned long framesPerBuffer;
- PaStreamCallbackFlags statusFlags;\r
- PaStreamCallback *streamCallback;\r
- PaStreamFinishedCallback *streamFinishedCallback;\r
- const PaStreamCallbackTimeInfo *timeInfo;
- PaDeviceIndex inputDevice;
- PaDeviceIndex outputDevice;
-\r
- public:\r
-
- PaError streamOpen();\r
-\r
- PaDeviceIndex getDefaultInputDevice();
- PaDeviceIndex getDefaultOutputDevice();\r
-\r
- PaStreamParameters *getDeviceInfo(PaDeviceIndex idx);\r
- PaError setFramesPerBuffer(unsigned long size);\r
- PaError setSampleRate(unsigned long size);\r
- PaError setStreamFlags(PaStreamFlags flags);\r
- PaError setCallback(PaStreamCallback *streamCallback);\r
- PaError setStreamCallback(PaStream *stream, PaStreamCallback* callback ) { streamCallback = callback; return 0;}
- PaError setStreamFinishedCallback(PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback );
-
- PaError setInputDevice(PaDeviceIndex dev);\r
- PaError setInputChannelCount(int count);
- PaError setInputSampleFormat(PaSampleFormat format);
- PaError setInputSampleRate(PaSampleFormat format);
- PaError setInputLatency(PaTime latency);\r
- void setInputHostApiStreamInfo(void *info = NULL);\r
- PaTime getInputDefaultLowLatency();
-
- PaError setOutputDevice(PaDeviceIndex dev);\r
- PaError setOutputChannelCount(int count);
- PaError setOutputSampleFormat(PaSampleFormat format);
- PaError setOutputLatency(PaTime latency);
- void setOutputHostApiStreamInfo(void *info = NULL);
- PaTime getOutputDefaultLowLatency();
-\r
- PaError init();\r
- PaError streamStart();\r
- PaError streamClose();\r
- void terminate();\r
- bool isOpen() const;\r
- void stop();
- void abort();
- bool isStopped() const;
- bool isActive() const;
-};\r
+++ /dev/null
-##\r
-## Auto Generated makefile by CodeLite IDE\r
-## any manual changes will be erased \r
-##\r
-## Release\r
-ProjectName :=pa_test\r
-ConfigurationName :=Release\r
-IntermediateDirectory :=./Release\r
-OutDir := $(IntermediateDirectory)\r
-WorkspacePath := "C:\Users\wittend\Projects\Radio\fdmdv2"\r
-ProjectPath := "C:\Users\wittend\Projects\Radio\fdmdv2\pa_test"\r
-CurrentFileName :=\r
-CurrentFilePath :=\r
-CurrentFileFullPath :=\r
-User :=wittend\r
-Date :=6/18/2012\r
-CodeLitePath :="C:\Program Files\CodeLite"\r
-LinkerName :=g++\r
-ArchiveTool :=ar rcus\r
-SharedObjectLinkerName :=g++ -shared -fPIC\r
-ObjectSuffix :=.o\r
-DependSuffix :=.o.d\r
-PreprocessSuffix :=.o.i\r
-DebugSwitch :=-gstab\r
-IncludeSwitch :=-I\r
-LibrarySwitch :=-l\r
-OutputSwitch :=-o \r
-LibraryPathSwitch :=-L\r
-PreprocessorSwitch :=-D\r
-SourceSwitch :=-c \r
-CompilerName :=g++\r
-C_CompilerName :=gcc\r
-OutputFile :=$(IntermediateDirectory)/$(ProjectName)\r
-Preprocessors :=\r
-ObjectSwitch :=-o \r
-ArchiveOutputSwitch := \r
-PreprocessOnlySwitch :=-E \r
-ObjectsFileList :="C:\Users\wittend\Projects\Radio\fdmdv2\pa_test\pa_test.txt"\r
-PCHCompileFlags :=\r
-MakeDirCommand :=makedir\r
-CmpOptions := -O2 -Wall $(Preprocessors)\r
-C_CmpOptions := -O2 -Wall $(Preprocessors)\r
-LinkOptions := \r
-IncludePath := $(IncludeSwitch). $(IncludeSwitch). $(IncludeSwitch)extern/include \r
-IncludePCH := \r
-RcIncludePath := \r
-Libs := $(LibrarySwitch)portaudio \r
-LibPath := $(LibraryPathSwitch). \r
-\r
-\r
-##\r
-## User defined environment variables\r
-##\r
-CodeLiteDir:=C:\Program Files\CodeLite\r
-WXWIN:=C:\bin\wxWidgets-2.9.4\r
-PATH:=$(WXWIN)\lib\gcc_dll;$(PATH)\r
-WXCFG:=gcc_dll\mswu\r
-UNIT_TEST_PP_SRC_DIR:=C:\bin\UnitTest++-1.3\r
-Objects=$(IntermediateDirectory)/pa_class$(ObjectSuffix) \r
-\r
-##\r
-## Main Build Targets \r
-##\r
-.PHONY: all clean PreBuild PrePreBuild PostBuild\r
-all: $(OutputFile)\r
-\r
-$(OutputFile): $(IntermediateDirectory)/.d $(Objects) \r
- @$(MakeDirCommand) $(@D)\r
- @echo "" > $(IntermediateDirectory)/.d\r
- @echo $(Objects) > $(ObjectsFileList)\r
- $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions)\r
-\r
-$(IntermediateDirectory)/.d:\r
- @$(MakeDirCommand) "./Release"\r
-\r
-PreBuild:\r
-\r
-\r
-##\r
-## Objects\r
-##\r
-$(IntermediateDirectory)/pa_class$(ObjectSuffix): pa_class.cpp $(IntermediateDirectory)/pa_class$(DependSuffix)\r
- $(CompilerName) $(IncludePCH) $(SourceSwitch) "C:/Users/wittend/Projects/Radio/fdmdv2/pa_test/pa_class.cpp" $(CmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/pa_class$(ObjectSuffix) $(IncludePath)\r
-$(IntermediateDirectory)/pa_class$(DependSuffix): pa_class.cpp\r
- @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/pa_class$(ObjectSuffix) -MF$(IntermediateDirectory)/pa_class$(DependSuffix) -MM "C:/Users/wittend/Projects/Radio/fdmdv2/pa_test/pa_class.cpp"\r
-\r
-$(IntermediateDirectory)/pa_class$(PreprocessSuffix): pa_class.cpp\r
- @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/pa_class$(PreprocessSuffix) "C:/Users/wittend/Projects/Radio/fdmdv2/pa_test/pa_class.cpp"\r
-\r
-\r
--include $(IntermediateDirectory)/*$(DependSuffix)\r
-##\r
-## Clean\r
-##\r
-clean:\r
- $(RM) $(IntermediateDirectory)/pa_class$(ObjectSuffix)\r
- $(RM) $(IntermediateDirectory)/pa_class$(DependSuffix)\r
- $(RM) $(IntermediateDirectory)/pa_class$(PreprocessSuffix)\r
- $(RM) $(OutputFile)\r
- $(RM) $(OutputFile).exe\r
- $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\pa_test"\r
-\r
-\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<CodeLite_Project Name="pa_test" InternalType="Console">
- <Plugins>
- <Plugin Name="qmake">
- <![CDATA[00020001N0005Debug0000000000000001N0007Release000000000000]]>
- </Plugin>
- </Plugins>
- <Description/>
- <Dependencies/>
- <VirtualDirectory Name="src">
- <File Name="pa_class.cpp"/>
- </VirtualDirectory>
- <VirtualDirectory Name="include">
- <File Name="pa_class.h"/>
- </VirtualDirectory>
- <Settings Type="Executable">
- <GlobalSettings>
- <Compiler Options="" C_Options="">
- <IncludePath Value="."/>
- </Compiler>
- <Linker Options="">
- <LibraryPath Value="."/>
- </Linker>
- <ResourceCompiler Options=""/>
- </GlobalSettings>
- <Configuration Name="Debug" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
- <Compiler Options="-g;-O0;-Wall" C_Options="-g;-O0;-Wall" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" UseDifferentPCHFlags="no" PCHFlags="">
- <IncludePath Value="."/>
- <IncludePath Value="../extern/include"/>
- <IncludePath Value="../../../portaudio/include"/>
- </Compiler>
- <Linker Options="" Required="yes">
- <Library Value="portaudio"/>
- </Linker>
- <ResourceCompiler Options="" Required="no"/>
- <General OutputFile="$(IntermediateDirectory)/$(ProjectName)" IntermediateDirectory="./Debug" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/>
- <Environment EnvVarSetName="<Use Defaults>" DbgSetName="<Use Defaults>">
- <![CDATA[]]>
- </Environment>
- <Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath="">
- <PostConnectCommands/>
- <StartupCommands/>
- </Debugger>
- <PreBuild/>
- <PostBuild/>
- <CustomBuild Enabled="no">
- <RebuildCommand/>
- <CleanCommand/>
- <BuildCommand/>
- <PreprocessFileCommand/>
- <SingleFileCommand/>
- <MakefileGenerationCommand/>
- <ThirdPartyToolName>None</ThirdPartyToolName>
- <WorkingDirectory/>
- </CustomBuild>
- <AdditionalRules>
- <CustomPostBuild/>
- <CustomPreBuild/>
- </AdditionalRules>
- <Completion EnableCpp11="no">
- <ClangCmpFlags/>
- <ClangPP/>
- <SearchPaths/>
- </Completion>
- </Configuration>
- <Configuration Name="Release" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
- <Compiler Options="-O2;-Wall" C_Options="-O2;-Wall" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" UseDifferentPCHFlags="no" PCHFlags="">
- <IncludePath Value="."/>
- <IncludePath Value="extern/include"/>
- </Compiler>
- <Linker Options="" Required="yes">
- <Library Value="portaudio"/>
- </Linker>
- <ResourceCompiler Options="" Required="no"/>
- <General OutputFile="$(IntermediateDirectory)/$(ProjectName)" IntermediateDirectory="./Release" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/>
- <Environment EnvVarSetName="<Use Defaults>" DbgSetName="<Use Defaults>">
- <![CDATA[]]>
- </Environment>
- <Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath="">
- <PostConnectCommands/>
- <StartupCommands/>
- </Debugger>
- <PreBuild/>
- <PostBuild/>
- <CustomBuild Enabled="no">
- <RebuildCommand/>
- <CleanCommand/>
- <BuildCommand/>
- <PreprocessFileCommand/>
- <SingleFileCommand/>
- <MakefileGenerationCommand/>
- <ThirdPartyToolName>None</ThirdPartyToolName>
- <WorkingDirectory/>
- </CustomBuild>
- <AdditionalRules>
- <CustomPostBuild/>
- <CustomPreBuild/>
- </AdditionalRules>
- <Completion EnableCpp11="no">
- <ClangCmpFlags/>
- <ClangPP/>
- <SearchPaths/>
- </Completion>
- </Configuration>
- </Settings>
- <Dependencies Name="Debug"/>
- <Dependencies Name="Release"/>
-</CodeLite_Project>
+++ /dev/null
-./Debug/pa_class.o \r
+++ /dev/null
-// ---------------------------------------------------------------------------------------\r
-\r
-#include <iostream>\r
-#include <cmath>\r
-#include <cassert>\r
-#include <cstddef>\r
-#include "portaudiocpp/PortAudioCpp.hxx"\r
-\r
-// ---------------------------------------------------------------------------------------\r
-\r
-// Some constants:\r
-const int NUM_SECONDS = 5;\r
-const double SAMPLE_RATE = 44100.0;\r
-const int FRAMES_PER_BUFFER = 64;\r
-const int TABLE_SIZE = 200;\r
-\r
-// ---------------------------------------------------------------------------------------\r
-\r
-// SineGenerator class:\r
-class SineGenerator\r
-{\r
-public:\r
- SineGenerator(int tableSize) : tableSize_(tableSize), leftPhase_(0), rightPhase_(0)\r
- {\r
- const double PI = 3.14159265;\r
- table_ = new float[tableSize];\r
- for (int i = 0; i < tableSize; ++i)\r
- {\r
- table_[i] = 0.125f * (float)sin(((double)i/(double)tableSize)*PI*2.);\r
- }\r
- }\r
-\r
- ~SineGenerator()\r
- {\r
- delete[] table_;\r
- }\r
-\r
- int generate(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, \r
- const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)\r
- {\r
- assert(outputBuffer != NULL);\r
-\r
- float **out = static_cast<float **>(outputBuffer);\r
-\r
- for (unsigned int i = 0; i < framesPerBuffer; ++i)\r
- {\r
- out[0][i] = table_[leftPhase_];\r
- out[1][i] = table_[rightPhase_];\r
-\r
- leftPhase_ += 1;\r
- if (leftPhase_ >= tableSize_)\r
- leftPhase_ -= tableSize_;\r
-\r
- rightPhase_ += 3;\r
- if (rightPhase_ >= tableSize_)\r
- rightPhase_ -= tableSize_;\r
- }\r
-\r
- return paContinue;\r
- }\r
-\r
-private:\r
- float *table_;\r
- int tableSize_;\r
- int leftPhase_;\r
- int rightPhase_;\r
-};\r
-\r
-// ---------------------------------------------------------------------------------------\r
-\r
-// main:\r
-int main(int, char *[]);\r
-int main(int, char *[])\r
-{\r
- try\r
- {\r
- // Create a SineGenerator object:\r
- SineGenerator sineGenerator(TABLE_SIZE);\r
-\r
- std::cout << "Setting up PortAudio..." << std::endl;\r
-\r
- // Set up the System:\r
- portaudio::AutoSystem autoSys;\r
- portaudio::System &sys = portaudio::System::instance();\r
-\r
- // Set up the parameters required to open a (Callback)Stream:\r
- portaudio::DirectionSpecificStreamParameters outParams(sys.defaultOutputDevice(), 2, portaudio::FLOAT32, false, sys.defaultOutputDevice().defaultLowOutputLatency(), NULL);\r
- portaudio::StreamParameters params(portaudio::DirectionSpecificStreamParameters::null(), outParams, SAMPLE_RATE, FRAMES_PER_BUFFER, paClipOff);\r
-\r
- std::cout << "Opening stereo output stream..." << std::endl;\r
-\r
- // Create (and open) a new Stream, using the SineGenerator::generate function as a callback:\r
- portaudio::MemFunCallbackStream<SineGenerator> stream(params, sineGenerator, &SineGenerator::generate);\r
-\r
- std::cout << "Starting playback for " << NUM_SECONDS << " seconds." << std::endl;\r
-\r
- // Start the Stream (audio playback starts):\r
- stream.start();\r
-\r
- // Wait for 5 seconds:\r
- sys.sleep(NUM_SECONDS * 1000);\r
-\r
- std::cout << "Closing stream..." <<std::endl;\r
-\r
- // Stop the Stream (not strictly needed as termintating the System will also stop all open Streams):\r
- stream.stop();\r
-\r
- // Close the Stream (not strictly needed as terminating the System will also close all open Streams):\r
- stream.close();\r
-\r
- // Terminate the System (not strictly needed as the AutoSystem will also take care of this when it \r
- // goes out of scope):\r
- sys.terminate();\r
-\r
- std::cout << "Test finished." << std::endl;\r
- }\r
- catch (const portaudio::PaException &e)\r
- {\r
- std::cout << "A PortAudio error occured: " << e.paErrorText() << std::endl;\r
- }\r
- catch (const portaudio::PaCppException &e)\r
- {\r
- std::cout << "A PortAudioCpp error occured: " << e.what() << std::endl;\r
- }\r
- catch (const std::exception &e)\r
- {\r
- std::cout << "A generic exception occured: " << e.what() << std::endl;\r
- }\r
- catch (...)\r
- {\r
- std::cout << "An unknown exception occured." << std::endl;\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-\r