|
From: Yoda-JM <yo...@us...> - 2010-08-15 14:52:31
|
Module: performous
Branch: joinmenu
Commit: 63476ceedd38feb0ff2c34328e8085c42bab56ad
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 15 20:31:17 2010 +0300
Output PA devices to console.
---
game/audio.cc | 4 ++++
game/audio.hh | 13 +++++++------
libs/libda/include/libda/portaudio.hpp | 13 ++++++++++++-
3 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/game/audio.cc b/game/audio.cc
index 1cb771a..2c6a3b4 100644
--- a/game/audio.cc
+++ b/game/audio.cc
@@ -150,6 +150,7 @@ struct Output {
std::vector<Command> commands;
volatile bool paused;
Output(): paused(false) {}
+
void callbackUpdate() {
boost::mutex::scoped_try_lock l(mutex);
if (!l.owns_lock()) return; // No update now, try again later (cannot stop and wait for mutex to be released)
@@ -174,6 +175,7 @@ struct Output {
}
commands.clear();
}
+
void callback(float* begin, float* end) {
callbackUpdate();
std::fill(begin, end, 0.0f);
@@ -224,10 +226,12 @@ struct Device {
{
mics.resize(in);
}
+
void start() {
PaError err = Pa_StartStream(stream);
if (err != paNoError) throw std::runtime_error("Cannot start PortAudio audio stream " + dev + ": " + Pa_GetErrorText(err));
}
+
int operator()(void const* input, void* output, unsigned long frames, const PaStreamCallbackTimeInfo*, PaStreamCallbackFlags) try {
float const* in = static_cast<float const*>(input);
float* out = static_cast<float*>(output);
diff --git a/game/audio.hh b/game/audio.hh
index dab6770..27018f8 100644
--- a/game/audio.hh
+++ b/game/audio.hh
@@ -27,15 +27,15 @@ public:
* @param startPos starting position
*/
void playMusic(std::string const& filename, bool preview = false, double fadeTime = 0.5, double startPos = 0.0);
- /// plays a list of songs
+ /** Plays a list of songs **/
void playMusic(std::map<std::string,std::string> const& filenames, bool preview = false, double fadeTime = 0.5, double startPos = 0.0);
- /// loads/plays/unloads a sample
+ /** Loads/plays/unloads a sample **/
void loadSample(std::string const& streamId, std::string const& filename);
void playSample(std::string const& streamId);
void unloadSample(std::string const& streamId);
- /// stops music
+ /** Stops music **/
void stopMusic();
- /// fades music out
+ /** Fades music out **/
void fadeout(double time = 1.0);
/** Get the length of the currently playing song, in seconds. **/
double getLength() const;
@@ -54,8 +54,9 @@ public:
void togglePause() { pause(!isPaused()); }
void pause(bool state = true);
bool isPaused() const;
- void toggleSynth(Notes const&); ///< toggles synth playback
- /// Adjust volume level of a single track (used for muting incorrectly played instruments). Range 0.0 to 1.0.
+ /** Toggle synth playback **/
+ void toggleSynth(Notes const&);
+ /** Adjust volume level of a single track (used for muting incorrectly played instruments). Range 0.0 to 1.0. **/
void streamFade(std::string track, double volume);
double getSR() const { return 48000.0; }
};
diff --git a/libs/libda/include/libda/portaudio.hpp b/libs/libda/include/libda/portaudio.hpp
index 8add471..d6e33b1 100644
--- a/libs/libda/include/libda/portaudio.hpp
+++ b/libs/libda/include/libda/portaudio.hpp
@@ -25,7 +25,18 @@ namespace portaudio {
}
struct Init {
- Init() { PORTAUDIO_CHECKED(Pa_Initialize, ()); }
+ Init()
+ {
+ PORTAUDIO_CHECKED(Pa_Initialize, ());
+ // Print the devices
+ std::cout << "PortAudio devices:\n";
+ for (int i = 0, end = Pa_GetDeviceCount(); i != end; ++i) {
+ PaDeviceInfo const* info = Pa_GetDeviceInfo(i);
+ if (!info) continue;
+ std::cout << " " << i << " " << info->name << " (" << info->maxInputChannels << " in, " << info->maxOutputChannels << " out)\n";
+ }
+ std::cout << std::endl;
+ }
~Init() { Pa_Terminate(); }
};
|