[video output=day009 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code template=code009_template.html title="Variable-Pitch Sine Wave Output" vod_platform=youtube id=8y9nPk1c45c annotator=jacebennett annotator=Miblo annotator=schme annotator=theinternetftw] [1:14][Review DirectSound init and square wave] [2:28][Story Time: The First Game Jam] [8:56][The moral of the story] [11:26][How to approach debugging the sound code] [15:40][Square vs Sine Wave] [17:33][Generating a Sine Wave] [17:56][Tangent: Intro to Floating Point] [20:38][C Libraries for sin] [24:55][Story Time: Before floating point hardware] [26:43][Tangent: Fixed-point math] [32:35][Tangent: IEEE Floating-point representation] [42:15][Implementing the Sine wave test tone] [48:09][Lets run it] [49:01][Debugging in earnest] [57:39][A different error] [57:58][Refactor for clarity] [1:03:46][Where did it go?] [1:04:08][Eureka!] [1:05:22][Victory] [1:09:52][Q&A][:speech] [1:10:07][In D this bug couldn't have happened. D always initializes variables.] [1:13:36][How do you know that ByteToLock is far enough ahead of the PlayCursor?] [1:15:40][Try \[compiling with\] -W3 or -W4] [1:15:54][Where do I look for standard C library docs?] [1:16:39][I think you can now remove the ByteToLock == PlayCursor case.] [1:17:58][Will we use the sin() in the actual game?] [1:18:07][Is autocomplete/intellisense a bad idea? You don't seem to use it.] [1:19:25][Re-explaining the last bug] [1:20:50][Is it possible for bits to spill over into neighboring variables? For example, when shifting.] [1:26:26][Will we use the same output buffer to overlay several sounds?] [1:26:33][Change tone frequency based on input, and the bug will resurface.] [1:26:37][Casey: That's a different bug, lets look at it.] [1:30:43][Fixed] [1:30:57][Diagramming the frequency change issue] [1:35:18][Let's map the pitch to the sticks.] [1:37:00][Theramin Simulator 2014 Tech Demo] [1:37:13][Let's lower the latency] [1:42:49][If we could live with a slightly less accurate sin, we could approximate it with polynomials.] [1:45:08][Will the art and audio be released into the public domain?] [1:46:20][Is it a good idea to use fixed point math for games that require deterministic simulation for multiplayer? Or can you use floating point across systems?] [1:48:48][Sometimes you use 'bool' and sometimes 'bool32'] [1:49:30][Are you going to use ETW to log context switches for the game?] [1:49:42][Is this the audio api we will be using to ship the game?] [1:50:01][Is it safe to call DirectSound without initializing COM?] [1:50:47][Can we do an episode on emacs?] [1:51:33][Fix: XInput - missing dependencies] [1:53:45][Fix: Arithmetic for stick values] [2:01:55][Sign off][:speech] [/video]