wave-audio/lib/audio3d/test/test.cpp

Go to the documentation of this file.
00001 /*
00002  * test.cpp
00003  *
00004  * Copyright (C) 2009  Thomas A. Vaughan
00005  * All rights reserved.
00006  *
00007  * Program to test the audio3d library.
00008  */
00009 
00010 // includes --------------------------------------------------------------------
00011 #include "audio3d/audio3d.h"
00012 
00013 #include <math.h>
00014 
00015 
00016 
00017 ////////////////////////////////////////////////////////////////////////////////
00018 //
00019 //      static helper methods
00020 //
00021 ////////////////////////////////////////////////////////////////////////////////
00022 
00023 
00024 ////////////////////////////////////////////////////////////////////////////////
00025 //
00026 //      entry point
00027 //
00028 ////////////////////////////////////////////////////////////////////////////////
00029 
00030 int
00031 main
00032 (
00033 IN int argc,
00034 IN const char * argv[]
00035 )
00036 {
00037         int retval = 0;
00038         ASSERT(2 == argc, "usage: audio3d-test <filename>");
00039         const char * soundfile = argv[1];
00040 
00041         try {
00042 
00043                 // create a sound manager
00044                 smart_ptr<audio3d::SoundManager> sndMgr =
00045                     audio3d::SoundManager::create(NULL, NULL);
00046                 ASSERT(sndMgr, "failed to create sound manager");
00047 
00048                 // create a listener
00049                 audio3d::id_t lid = sndMgr->createListener();
00050                 ASSERT(lid, "bad listener id: %d", (int) lid);
00051 
00052                 // create sound in the same space as the listener
00053                 float baseVolume = 1.0;
00054                 audio3d::id_t sid =
00055                     sndMgr->createSound(lid, soundfile, baseVolume);
00056                 ASSERT(sid, "null");
00057 
00058                 // keep looping!
00059                 useconds_t us = 100 * 1000;     // 100ms = 100K us
00060                 float dt = 1.0e-6 * us;
00061                 float t = 0;
00062                 while (true) {
00063                         usleep(us);
00064 
00065                         t += dt;
00066                         point3d_t pos(3.0 * sin(t), 2.0 * sin(2.0 * t), 5.0 * cos(7.0 * t));
00067 
00068                         sndMgr->updateSound(sid, pos);
00069 
00070                         sndMgr->updateSounds();
00071                 }
00072 
00073         } catch (std::exception& e) {
00074                 DPRINTF("Exception: %s", e.what());
00075                 retval = 1;
00076         }
00077 
00078         return retval;
00079 }
00080