Category Archives: Phil

Phil 6.7.13

8:00 – 11:00 SR

  • Ugh.
  • rain
  • Traffic from hell. Took me over an hour to do my 20 minute commute
  • Backups
  • Query fixes.
  • All claimed items are showing up on the project page. There should be only claimed lines for that project. Unclaimed is correct though

11:00 – 4:00 FP

  • Adding comments and velocity accessors to audio code
    • Comments are done
    • Checked in project to Subversion repo, checked out and compiled. All seems to be working fine.
  • Cleaning up #includes
    • I had been getting the following annoying warning once I started including items like <unordered_map>: 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cstring(21): warning C4995: ‘strcat’: name was marked as #pragma deprecated. In the cleanup, I finally got around to testing the need for includes and deleted <strsafe.h>, which seems to be the source of my grief. Yay!
  • Ready to make the audio code a library. Monday. Then time to design the experimental interface.

Phil 6.6.13

7:30 – 12:30 SR

  • PIT Crew meeting
    • Not quite ready for the demo
    • Req Amt -> “Amount”
    • MIPR Desc -> Funding Description
    • Fix “#” tab title
    • Remove Sub-budget Center name and number from project and move to Req Line
    • Test search/auto claim (add sub-budget ctr) add debug statements so we can see what’s going on in production environment
    • Add columns for sub budget center and executing budget ctr
    • Project management screen in doubling
    • Search functions (still!) need to be query driven
    • When searching for sub-budget centers, the default should be to cull based on the budget center prefix. There should be an additional search box which overrides the default search (* lists everything)
    • Use alert SQL to produce charts (There needs to be date information, so this may mean that we have to edit the source for text panels)
    • Fix Lenny’s email problem (may be the DB misbehaving. Bounced MySQL)
      • Date field tries to save empty string.
      • Look MySqlIf for clean up after a sql error.
    • Funding status should default to current month
    • Column names
      • Budget Center
      • Budget Center Name
      • Sub-Budget Center
      • Sub-Budget Center Name
      • Executing Budget Center
      • EBC Name
      • Appropriation Year
      • Requisition ID
      • PO Reference
      • ACR
      • Vendor Name
      • Address Line 1
      • City
      • Postal Code
      • Comitted Date
      • Comitted Amount
      • Obligation Date Obligated Amount
      • Expensed Date
      • Expensed Amount
      • Vendor ID
      • Vendor Abbr.
      • PO Start Date PO End Date
      • Contract Type
      • PO Type Code
      • Contract No.
  • Took FA offline until null date error is resolved
  • Demo is now scheduled for June 14
  • Interview for Dong’s paperwork.

FP 12:30 – 4:00

Phil 5.5.13

8:00 – 11:30 SR

  • Backups. Also cleaned out a bunch of Gigabytes since the server’s drive was getting full.
  • More resume stuff.
  • Some email back-and-forth with Shawn

11:30 – 4:00 FP

  • That is, unless I have to pick up part of my vehicle diaspora…
  • I’m going to add the ability to create and store a named sound within BasicAudio. Sounds really don’t need to be created outside of the instance.
  • Lunch meeting with Shawn about R&D. Good meeting with good chili to boot.
  • Got the createSound method working and cleaned up the Console app some more
int _tmain(int argc, _TCHAR* argv[])
{
	BasicAudio *ba = new BasicAudio();
	ba->init();
 
	wprintf( L"\nReady to play mono WAV PCM file(s)...\n" );
 
	WavSampleSound *singleSound = (WavSampleSound *)ba->createSound(L"music", L"Wavs\\MusicMono.wav", 0);
	WavSampleSound *continuousSound = (WavSampleSound *)ba->createSound(L"heli", L"Wavs\\heli.wav", XAUDIO2_LOOP_INFINITE);
 
	int keyIn;
	printf("Type 'x' to quit\nC start continuous\nc stop continuous\nS start single\n");
	bool doit = true;
 
	int channelIndex = -1;
	while(doit){
		if(kbhit()){
			keyIn = getch();
			channelIndex = -1;
 
			printf("key = %c\n", keyIn);
			switch(keyIn){
			case 'x' : doit = false; 
 
				break;
			case 'C' : continuousSound->start();                  // play sound
				break;
			case 'c' : continuousSound->stop();                  // cease sound
				break;
			case 'S' : singleSound->start();						// play sound
				break;
			case 'w' : 
				continuousSound->setEmitterZ(continuousSound->getEmitterZ() + (FLOAT32)0.5);
				break;
			case 's' : 
				continuousSound->setEmitterZ(continuousSound->getEmitterZ() - (FLOAT32)0.5);
				break;
			case 'a' : 
				continuousSound->setEmitterX(continuousSound->getEmitterX() - (FLOAT32)0.5);
				break;
			case 'd' : 
				continuousSound->setEmitterX(continuousSound->getEmitterX() + (FLOAT32)0.5);
				break;
			case 'p':
				ba->printMatrixCoefficients();
				break;
			case '0' : channelIndex = 0; break;
			case '1' : channelIndex = 1; break;
			case '2' : channelIndex = 2; break;
			case '3' : channelIndex = 3; break;
			case '4' : channelIndex = 4; break;
			case '5' : channelIndex = 5; break;
			case '6' : channelIndex = 6; break;
			case '7' : channelIndex = 7; break;
 
			}
			if(channelIndex == -1){
				IXAudio2SourceVoice* voice = continuousSound->getSourceVoice();
				ba->play3DVoice(continuousSound->getEmitter(), voice);
			}else{
				printf("channel = %d\n", channelIndex);
				IXAudio2SourceVoice* voice = continuousSound->getSourceVoice();
				ba->playOnChannelVoice(voice, channelIndex);
			}
		}
 
		ba->run(); // perform periodic sound engine tasks
		Sleep(100);
	}
 
	wprintf( L"\nFinished playing\n" );
 
	// All XAudio2 interfaces are released when the engine is destroyed, but being tidy
 
	ba->destroy();
 
	// printf("hit return to exit");
	// getchar();
	
	return 0;
}

Phil 6.4.13

8:00 – 11:30 SR

  • Backups and disk cleaning
  • Conversation with Lenny about how to handle COGNOS uploads
    • non MIPR/EAO are all manually claimed
    • (MIPRs and EAOs) get automatically mapped, and don’t have to go through the claiming process (budget center and Req ID match the budget line item)
    • All unclaimed should always be shown.
    • If a MIPR line item is incorrectly claimed, it can be unclaimed, at which point it will have to be manually claimed

11:30 – 4:30 FP

  • Making nice clean classes for audio
  • Emitter goes into the SampledSound base class – done. Almost easy, though I had to go and relearn how C++ constructors work. Gawd, it’s been a while…
  • Everything else goes into BasicAudio – done. Had some problems with frequency until I realized that I hadn’t zeroed out the listener velocity.
  • And actually, I need to be able to set velocity for doppler effects. Need to add methods like the position methods tomorrow.

Phil 6.3.13

8:00 – 11:00 SR

  • Backups
  • Got the paperwork to start on getting client sites hooked up to the main system
  • Bugs
    • Lenny did the following and got some kind of NULL sql error. It may have happened to Carla as well
      • Created a project
      • Added service PM on the project tab
      • saved
      • Deleted the PM from the project (first tab)
      • Added a Req on the second tab
      • Added the same (now deleted) service PM to the Req.
      • Clicked ‘update’, which threw the SQL error
      • clicked close
      • Checked the record, and everything appeared to be saved properly
      • Other req updates using the same sequence did not cause the error
    • The goal is thenter one EA line item and then link multiple req’s out of unclaimed to it. Is this possible?
    • Unclaimed needs to roll up and subtotal all lines (just with matching req’s? Not sure what to do about blanks, unless there is a way to find other matching sequences)
    • There are a heck of a lot of “UPDATE budget_center_contracts SET budget_center_id= NULL where uid = xx”. It’s probably a good 70% of the logs.

11:00 – 4:30 FP

  • Well, after two days of not being able to work on this due to Comps prep and trouble with a significant fraction of my vehicles, maybe I can get some 3D audio working today.
  • Added everything from How to: Integrate X3DAudio with XAudio2, and definitely got a result – when the emitter position moved off of center, the sound cut out. Now you might think that’s a bad thing, but my guess is that I have some variable that either being set with zero or junk, which is messing up the sound matrix calculations.
  • Using the XAudio2Sound3D project as a source of code to mine, I pulled over the (much more extensive) emitter setup and now have things working, although not as clearly as I’d like. Next is to clean up and package the code into the SampleSound-derived classes.
  • And by the way, this might be a good hard hat to try the rig on: http://www.amazon.com/ERB-19224-Americana-Full-Ratchet/dp/B001LYB7JW
  • Cleared a lot of nonessential (i.e. listening cone)code out of the emitter
  • Realized that I could probably use voice->SetOutputMatrix() to set the channels directly. I added a method that cleans out the dspSettings.matrixCoefficients and then sets a single value in the matrix. Whadaya know – it worked :-)
  • Need to do some packaging of the code, but I now have enough to do tests for the situational awareness system and to get rid of the MIDI boards for the vibrotactile controller.

Phil 5.31.13

7:30 – 10:30 SR

  • Backups – I wonder if I can have the output go through a script that counts the number of “copied” and “moved” to report if the entire script executed correctly? Have to look into that.
  • Took the projportfolio debug login out of setup.xml
  • Took care of various paperwork, including resume stuff

10:30 – 3:30 TIMEOFF

  • Arranged to get the Porsche towed. Well no, that was an adventure in itself, and basically killed the rest of the day.
  • Scheduled service for motorcycle
  • Handed in tuition paperwork

Phil 5.30.13

7:30 – 10:30 SR

  • Direct Cite/Reimbursable – separate lines
  • Comitted date changes to latest
  • Set date(s) nullable
  • Reports on Committed and Obligated dates (future)
  • Total in Proj Mgmt incorrect
  • Add “Create Project” to sub project line
  • Add “View Financial Data” to sub project line
  • Double clicking should bring up subproject
  • FACTS PE resetting to null?
  • Reset login on logout
  • Verify that “Add” subproject moves a root-level project and that Remove does the same
    • Add -> “link”
    • Remove -> “unlink”
  • Double-clicking on a subproject shouold switch the project view to the subproject
  • Add a check for no budget data so that “view data” does not hang
  • “view data” contract info should come from COGNOS pull.
  • In “Funding Status” have a TOTALS line above the main grid that totals up the columns with numbers
    • Be able to add/remove columns created by the query
    • Be able to have public/private queries

10:30 – 5:30 TIMEOFF

  • Prepping for comps meeting this evening. If I get done early, I’ll go back to XAudio

Phil 5.29.13

8:00 – 1:00 SR

  • Backups
  • There was a demo today! Was invited in towards the end to talk about data security and roles.
  • Had a good idea about how to run the PA/RA code on one of our (Dreamhost? Steadfast?) servers and let the labs input their data directly. We could then ingest the data nightly. Need to research this a bit.

1:00 – 4:00 FP

  • Finished rolling up the SampleSounds(s) into BasicAudio.
  • Starting on 3D audio, using How to: Integrate X3DAudio with XAudio2
    • Adding the 3D calls to the main() in ConsoleSound2, just after the BasicAudio class has been initialized.
    • Had to add x3daudio.lib to the project and <x3daudio.h> to the #includes.
    • This looks to be the meat of the calculation. It looks like X3DCalculate() works on the relative position of an Emitter and the Listener and uses that to populate a DSP. Once that’s done, then the Audio2 source is manipulated appropriately.
    •         X3DAudioCalculate( g_audioState.x3DInstance, &g_audioState.listener, &g_audioState.emitter, dwCalcFlags,
                                 &g_audioState.dspSettings );
      
              IXAudio2SourceVoice* voice = g_audioState.pSourceVoice;
              if( voice )
              {
                  // Apply X3DAudio generated DSP settings to XAudio2
                  voice->SetFrequencyRatio( g_audioState.dspSettings.DopplerFactor );
                  voice->SetOutputMatrix( g_audioState.pMasteringVoice, INPUTCHANNELS, g_audioState.nChannels,
                                          g_audioState.matrixCoefficients );
      
                  voice->SetOutputMatrix(g_audioState.pSubmixVoice, 1, 1, &g_audioState.dspSettings.ReverbLevel);
      
                  XAUDIO2_FILTER_PARAMETERS FilterParametersDirect = { LowPassFilter, 2.0f * sinf(X3DAUDIO_PI/6.0f * g_audioState.dspSettings.LPFDirectCoefficient), 1.0f }; // see XAudio2CutoffFrequencyToRadians() in XAudio2.h for more information on the formula used here
                  voice->SetOutputFilterParameters(g_audioState.pMasteringVoice, &FilterParametersDirect);
                  XAUDIO2_FILTER_PARAMETERS FilterParametersReverb = { LowPassFilter, 2.0f * sinf(X3DAUDIO_PI/6.0f * g_audioState.dspSettings.LPFReverbCoefficient), 1.0f }; // see XAudio2CutoffFrequencyToRadians() in XAudio2.h for more information on the formula used here
                  voice->SetOutputFilterParameters(g_audioState.pSubmixVoice, &FilterParametersReverb);
              }

Phil 5.28.13

8:00 – 10:30 SR

  • Backups

10:30 – 4:00 FP

  • Comments on Ravi’s proposal
  • Working on getting multi buffer support. Done! Also got repeating sound working.
  • Going to put a basic Audio class together to manage SampleSounds.

Phil 5.24.13

7:30 – 11:00 SR

  • Backups. And to make sure that it’s possible to see the results of the db backup script, I added in a “pause.exe” at the end of the batch file.
  • Deployed the new FA and RA
  • RA was taking a *long* time to start up. It turns out that the reason was that there were 17,000 alerts that were going into a DataGrid. The temporary fix was to delete the old alerts, but there needs to be a mechanism for determining/limiting what to show.

11:00 – 4:30FP

  • Building a copy of XAudio2BasicSound, cleverly calling ConsoleSound2.
  • Since it depends on SDKwavefile, I had to pull SAFE_DELETE, SAFE_DELETE_ARRAY, and SAFE_RELEASE from dxut.h. It also requires dxerr.h. but that’s in the regular directx include directory.
  • Extremely empty code right now, but it compiles and links. On a side note, the compiler should accept the environment variable $(DXSDK_DIR), but it doesn’t. And adding macros is an enormous pain, as near as I can tell.
  • The code is ported over and works. It’s all stuck in a main() right now. I need to clean up and build an Audio class. Actually, looking at the way the code is set up, a WavSampleSound class might be better. It probably could extend from a SampleSound class, but I’ll break that out later…
  • Class is mostly done and running!
  •  ConsoleSound2

Phil 5.23.13

7:30 – 10:30 SR

  • Backups, and it turns out that there was a bug with the project_portfolio_enh db, where a view that referenced tables that no longer exist was trying to be serialized. Dropping the view fixed the problem.
  • Deployed the new FA, and changed the db around a bit to accommodate. Which caused all the data to disappear from the client due to a null return of a query. Which caused us to want to restore from the backups. Which brought the backup error to light. Fortunately, it’s a test db, and very little actual work was lost.
  • Looked at the server info in Xacta, which was a new, exciting thing. It looks like our current authority to operate expires 3/25/2014. Need to keep an eye on that.
  • Meeting with the PIT crew from 7:30-8:00, which I missed due to the fact that I was uploading the new FA in preparation for the *scheduled* 8:00 meeting. Dong caught it though. He showed/described FA and RA to the team and they are actually quite happy.

10:30 – 3:30 FP.

  • More Audio3d.
  • Starting to add in the 3dAudio based on this and this and this.
  • Got an audio link error and chased that down, discovering a few things along the way.
  • There is directX help for C++ in (“C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Documentation\DirectX9\directx_sdk.chm”). I don’t know it it’s any good, but I’m going to look though it next. Note that this is DX9, not 11. I’m *hoping* that this is all up to date…
  • Pointed Configuration Properties->Linker->General->Additional Library Directories at (C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86), and added the following files to Configuration Properties->Linker->Input->additional dependencies”
    • d3d11.lib
      d3dx11.lib
      winmm.lib
      xinput.lib
      X3DAudio.lib
    • This is a change from the libraries that the demo book points at, which were dxd9 libs. Recompiled and ran the code with no problems. I did attempt to clean up the xact3dInstance pointer in ~Audio3d(), but delete[] threw an exception
  • Reading through the DX documentation, which, though it is in the DX9 folder, contains information about DX11. Whatever.
  • The documentation is kind of what you’d expect, but it let me find the tutorials and demos, which are quite nice. On my machine, the demos that I’m interested in are located here: (C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\XAudio2). It contains 4 projects:
    • XAudio2BasicSound
    • XAudioBasicStream
    • XAudio2CustomAPO
    • XAudio2Sound3D
  • Each project has source and MSVC2008 and MSVC2010 project files. I’ve just opened up the XAudio2Sound3D MSVC2010 project, and it compiled and ran just fine: XAudio2demo
  • This is almost exactly what I intend to build for the test environment, so that’s pretty cool. And using the buttons or the keyboard, I can drive the sound emitter around my head. Woohoo!
  • Next goal is to build up a copy of XAudio2BasicSound and then add the 3D components (without the graphics) from XAudio2Sound3D.

Phil 5.22.13

8:00 – 12:00, 3:00 – 4:00 SR

  • Backup.
  • ISSO Meeting – 8210 Dorsey Run Road, Jessup, MD
  • More resume variants
  • Meeting with Brad, our Program Manager.

12:00 – 1:30 Lunch with Greg

1:30 – 3:00 FP

  • Work on Audio3d class
  • It appears that you *have* to include <xact3.h> before <xact3d3.h>. It seems to be tied up with <x3daudio.h>, which is declared before <xact3.h> in <xact3d3.h>. If I reverse the order of those calls, no error messages. otherwise I get the following (included for the next poor soul who pastes this errot in Google):
    • 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(6361): error C2146: syntax error : missing ';' before identifier 'ContextRecord'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(6361): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(6361): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12983): error C2065: 'PCONTEXT' : undeclared identifier
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): error C2146: syntax error : missing ')' before identifier 'ContextRecord'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): warning C4229: anachronism used : modifiers on data are ignored
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): error C2182: 'RtlCaptureContext' : illegal use of type 'void'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): error C2491: 'RtlCaptureContext' : definition of dllimport data not allowed
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): error C2059: syntax error : ')'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(13372): error C2143: syntax error : missing ';' before '__stdcall'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(13372): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(13376): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(14982): error C3861: '__readfsdword': identifier not found
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(1048): error C2146: syntax error : missing ';' before identifier 'LPCONTEXT'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(1048): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(1048): error C2378: 'PCONTEXT' : redefinition; symbol cannot be overloaded with a typedef
      1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(13372) : see declaration of 'PCONTEXT'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(1048): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(3610): error C2061: syntax error : identifier 'PCONTEXT'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(4449): error C2061: syntax error : identifier 'LPCONTEXT'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(4457): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(4457): error C2143: syntax error : missing ',' before '*'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(15112): error C2143: syntax error : missing ';' before '__stdcall'
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(15112): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(15116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  • And this is one of the reasons the Microsoft drives me so crazy…
  • …..and I got sucked into a meeting so that looks like it for the day.

Phil 5.21.13

8:00 – 1:00 SR

  • Backups
  • Deployed the new FA and RA for the first time. Had to make some changes to the DB to support. FA runs just fine, but there is a query problem in RA. Current bugs are:
    • When Update is clicked and not all fields are filledin, we might what to pop up a dialog box saying that they are not all filled in but allowing for a save.
    • Add tooltips to buttons. In particular, we need to be clear about what saves and what cnacels without saving.
    • Add a “Select All” to the SQL error dialog, now that we have QUERIES FROM HELL.
    • RA error string: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptio: Unknown column ‘c.appropriation’ in ‘where clause’.
  • Cleaned up the blog a bit to accommodate FA and RA.
  • Had an interesting talk with Dimitri about his Master’s program. Thought for the day. What if access to a system was based on an Eliza-like conversation with the computer. There would be an initial “get acquainted” session, and then the “login” conversation would be shorter.
    • Store key patterns as well as the words.
    • Use a plagerism test to look for cut-and-paste replies from recorded sessions
    • Login discussions could be like Capchas in that they could be half test, half learning.

2:00 – 4:00 FP

  • I thought this tutorial would be the best way to get positional information, but it appears to be stale. The New Way seems to be this.
  • Close, but it’s actually part of the Windows API now?
  • Nope that’s C#. Still looking. Since I have xact3.h working, trying to stay in this space…
  • Ok, for tomorrow, I start writing a 3D version of Audio.h and then try calling that from the ConsoleSoundApp.

8:00 – 10:30 SR

  • Backups
  • I got an email saying the current Tomcat server is out of date, but I can’t find an actual ticket. Maybe it will show up later?
  • While poking around throug codeproject, I came upon an article for JavaScript game development that used a library called “ease”. Looks interesting…

ease.js is a Classical Object-Oriented framework for JavaScript, intended to eliminate boilerplate code and “ease” the transition into JavaScript from other Object-Oriented languages. Features include:

Download v0.1.1

(Released: 19 Jan 2013)

ease.js is a framework, not a compiler. It may be used wherever JavaScript may be used, including with other compilers/parsers. ease.js also provides support for older, pre-ES5 environments by gracefully degrading features (such as visibility support), but remaining functionally consistent.

10:30 – 4:00 FP

Looks like everything is working in the proof of concept! Here’s the code:

#include "stdafx.h"
#include <Windows.h>
#include <conio.h>
#include "audio.h"

int _tmain(int argc, _TCHAR* argv[])
{
	int keyIn;
	HRESULT hr;                 // standard return type
	LPTSTR buf;
	LPTSTR targetDir = "C:\\Programming 2D Games in DirectX 11\\Chapter 7 - Sound\\ConsoleSound\\ConsoleSound\\ConsoleSound";
	Audio *audio = new Audio();

	SetCurrentDirectory(targetDir);
	buf = (LPTSTR)calloc(256, sizeof(char));
	GetCurrentDirectory(256, buf);
	printf("Current dir: '%s'\n", buf);
	if (*WAVE_BANK != '' && *SOUND_BANK != '')  // if sound files defined
	{
		if( FAILED( hr = audio->initialize() ) )
		{
			if( hr == HRESULT_FROM_WIN32( ERROR_FILE_NOT_FOUND ) ){
				printf("Failed to initialize sound system because media file not found.\n");
				printf("hit return to exit\n");
				getchar();
				return -1;
			}
			else{
				printf("Failed to initialize sound system.\n");
				printf("hit return to exit\n");
				getchar();
				return -1;
			}
		}
	}

	printf("Type 'x' to quit, 1, 2, or 3 for sounds.\n");
	bool doit = true;
	while(doit){
		if(kbhit()){
			keyIn = getch();

			printf("key = %c\n", keyIn);
			switch(keyIn){
			case 'x' : doit = false; 
				break;
			case '1' : audio->playCue(BEEP1);                  // play sound
				break;
			case '2' : audio->playCue(BEEP2);                  // play sound
				break;
			case '3' : audio->playCue(BEEP3);                  // play sound
				break;
			}
		}
		audio->run();                       // perform periodic sound engine tasks
		Sleep(100);
	}
	SAFE_DELETE(audio);

	printf("hit return to exit");
	getchar();
	return 0;
	}

Tomorrow, we’ll try to add positional sound.

Phil 5.17.13

8:00 – 11:00 SR

  • It turns out that I had forgotten to change the conf/server.xml file in addition to the java startup arguments. The keystore.jks file needs to be referenced in the <Connector keystoreFile=””/> element.
  • Backups
  • Talked schedule with Dong. Maybe a deployment Tuesday?

11:00 – 4:00 FP

  • Imported the sound example code into MSVC and successfully compiled. 
  • And runs! With sound!
  •  withSound
  • Next we try to put the audio class into a console app (main as opposed to winmain) and see if that can be made to work.
  • That went pretty smoothly. I had to add the DirectX “include” directories, add stdafx.h to the audio.cpp file and cast some char* to LPWSTR. The next step is to fill out the main() so that the audio is initialized and then run a loop to send different audio commands. A good task for Monday.