<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>lukechalaudio</title>
	<atom:link href="http://www.lukechalaudio.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lukechalaudio.com</link>
	<description>Luke Chalupowski &#124; Audiophile</description>
	<lastBuildDate>Sat, 19 May 2012 16:54:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<copyright>Copyright © lukechalaudio 2012 </copyright>
	<managingEditor>lukechal@lukechalaudio.com (Luke Chalupowski)</managingEditor>
	<webMaster>lukechal@lukechalaudio.com (Luke Chalupowski)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>http://www.lukechalaudio.com/wp-content/uploads/2011/11/favicon.jpg</url>
		<title>lukechalaudio</title>
		<link>http://www.lukechalaudio.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Luke Chalupowski &#124; Audiophile</itunes:summary>
	<itunes:keywords>audio, engineer, sound, design</itunes:keywords>
	<itunes:category text="Education">
		<itunes:category text="Training" />
	</itunes:category>
	<itunes:category text="Technology" />
	<itunes:category text="Music" />
	<itunes:author>Luke Chalupowski</itunes:author>
	<itunes:owner>
		<itunes:name>Luke Chalupowski</itunes:name>
		<itunes:email>lukechal@lukechalaudio.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.lukechalaudio.com/wp-content/uploads/2011/11/favicon.jpg" />
		<item>
		<title>Soundboard C++ Tutorial</title>
		<link>http://www.lukechalaudio.com/2012/05/19/soundboard-c-tutorial/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=soundboard-c-tutorial</link>
		<comments>http://www.lukechalaudio.com/2012/05/19/soundboard-c-tutorial/#comments</comments>
		<pubDate>Sat, 19 May 2012 16:28:06 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[#ifdef]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[audio c++]]></category>
		<category><![CDATA[audio engine]]></category>
		<category><![CDATA[audio event]]></category>
		<category><![CDATA[board]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[cin >> input]]></category>
		<category><![CDATA[CreateWindow()]]></category>
		<category><![CDATA[dev c++]]></category>
		<category><![CDATA[IDW_SOUND1]]></category>
		<category><![CDATA[include]]></category>
		<category><![CDATA[MAKEINTRESOURCE()]]></category>
		<category><![CDATA[playsound()]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[RC_INVOKED]]></category>
		<category><![CDATA[resource script]]></category>
		<category><![CDATA[resource.h]]></category>
		<category><![CDATA[resource.rc]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SND_ASYNC]]></category>
		<category><![CDATA[SND_RESOURCE]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[soundboard]]></category>
		<category><![CDATA[soundboard c++ tutorial]]></category>
		<category><![CDATA[standalone]]></category>
		<category><![CDATA[standalone exe]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wave file]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=903</guid>
		<description><![CDATA[Introduction: Have you seen all the funny soundboards out there on the internet? Perhaps you have used one to do prank phone calls to your relatives for a funny joke. These kind of apps have risen in popularity with the &#8230; <a href="http://www.lukechalaudio.com/2012/05/19/soundboard-c-tutorial/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/05/soundboard_tutorial.jpg"><img class="aligncenter size-full wp-image-904" title="soundboard_tutorial" src="http://www.lukechalaudio.com/wp-content/uploads/2012/05/soundboard_tutorial.jpg" alt="soundboard_tutorial" width="228" height="182" /></a><br />
<strong>Introduction:</strong><br />
</strong>Have you seen all the funny soundboards out there on the internet? Perhaps you have used one to do prank phone calls to your relatives for a funny joke. These kind of apps have risen in popularity with the dawn of mobile apps. With this tutorial we will revisit the popular soundboard with the use of simple buttons and playing sound events using the windows api. This tutorial is a follow up of &#8220;<a href="http://www.lukechalaudio.com/2012/05/17/how-to-use-wav-files-as-c-resources-and-play-them-in-a-standalone-exe/">How to use wave files as resources in c++</a>&#8220;. This time we will be using buttons instead of cin &gt;&gt; input;. Thus we will be leaving the shell commands and migrating into a little taste of windows gui.</p>
<p><strong>NOTE:</strong> We must enter -lwinmm in the linker settings or PlaySound() will not work.</p>
<p><strong><strong>Resource Script:</strong><br />
</strong>We will need to use a resource script as mentioned in the <a href="http://www.lukechalaudio.com/2012/05/17/how-to-use-wav-files-as-c-resources-and-play-them-in-a-standalone-exe/">previous tutorial</a>. This will define our audio files as the names IDW_SOUND1, IDW_SOUND2, IDW_SOUND3, and IDW_SOUND4. WAVE defines the type of resource then the next portion of syntax is the file path of the resource. The .rc file tells the compiler where to get these resources and where to place them inside the executable at runtime. This should start to make a little more sense when you review the code below.<br />
<strong><br />
resource.rc</strong></p><pre class="crayon-plain-tag">#include &quot;resource.h&quot;

//Define the files as IDW_SOUND! (resource name) and of type WAVE then filepath
IDW_SOUND1 WAVE &quot;1.wav&quot;
IDW_SOUND2 WAVE &quot;2.wav&quot;
IDW_SOUND3 WAVE &quot;3.wav&quot;
IDW_SOUND4 WAVE &quot;4.wav&quot;</pre><p></p>
<p><strong>Resource Header:</strong><br />
The purpose of the header file is to teach the compiler how to access the resources we described in the resource script. To do this we define the names IDW_SOUND1, IDW_SOUND2, IDW_SOUND3, and IDW_SOUND4 as resources by associating them with unique IDs 1000, 1001, 1002, and 1003. These numbers are arbitrary thus you could use anything here just don&#8217;t duplicate them. Since we will be using the PlaySound() function we need to tell the compiler what to do when the name is called upon using #ifdef RC_INVOKED. This tells the compiler if the name is invoked then use the resources described. This will make sense when you review the code below.</p>
<p><strong>resource.h</strong></p><pre class="crayon-plain-tag">//Defines
#define IDW_SOUND1 1000
#define IDW_SOUND2 1001
#define IDW_SOUND3 1002
#define IDW_SOUND4 1003

//If these are invoked as resources load them
#ifdef RC_INVOKED
IDW_SOUND1 WAVE &quot;1.wav&quot;
IDW_SOUND2 WAVE &quot;2.wav&quot;
IDW_SOUND3 WAVE &quot;3.wav&quot;
IDW_SOUND4 WAVE &quot;4.wav&quot;
#endif</pre><p></p>
<p><strong>Main Program:</strong><br />
This is where all our gui related features come to life using the windows api. We must include the resource.h file to let the compiler know when we are invoking the audio resources. The GetSystemMetrics() function gets the width and height of the users computer screen. We will then take this and put it in the variable screenWidth and screenHeight respectively but applying some logic first screenWidth = (screenWidth / 2) &#8211; 115. This will account for the size of the initial window created because GetSystemMetrics(SM_CXSCREEN) and GetSystemMetrics(SM_CYSCREEN) only returns the size of the entire screen. Windows sets position based on the upper left hand corner thus applying this with variables is the best way to approach this issue. The buttons can be found in the function CreateWindow(TEXT(&#8220;button&#8221;), TEXT(&#8220;SFX1&#8243;), WS_VISIBLE | WS_CHILD , 20, 50, 80, 25, hwnd, (HMENU) 1, NULL, NULL) the first 20 is the x position the next is the y position and the width and height follow. (HMENU) 1 is the event number in which we will use to trigger the sound. Using if (LOWORD(wParam) == 1) will trigger the event to the PlaySound() function. PlaySound(MAKEINTRESOURCE(IDW_SOUND4), NULL, SND_RESOURCE | SND_ASYNC) will trigger the sound from the resource header. MAKEINTRESOURCE() function retrieves the file from the resources inside the executable so we don&#8217;t have to include our resources as separate files thus we have a portable standalone executable. This should make more sense once you review the code below.</p>
<p><strong>main.cpp</strong></p><pre class="crayon-plain-tag">#include &lt;iostream&gt;
#include &lt;windows.h&gt; 
#include &quot;resource.h&quot;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
					LPSTR lpCmdLine, int nCmdShow )
{
  MSG  msg ;    
  WNDCLASS wc = {0};
  wc.lpszClassName = TEXT( &quot;Buttons&quot; );
  wc.hInstance     = hInstance ;
  wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
  wc.lpfnWndProc   = WndProc ;
  wc.hCursor       = LoadCursor(0, IDC_ARROW);
  int screenWidth = GetSystemMetrics(SM_CXSCREEN);
  int screenHeight = GetSystemMetrics(SM_CYSCREEN);
  screenWidth = (screenWidth / 2) - 115;
  screenHeight = (screenHeight / 2) - 90;

  
  RegisterClass(&amp;wc);
  CreateWindow( wc.lpszClassName, TEXT(&quot;SoundBoard Tutorial&quot;),
                WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                screenWidth, screenHeight, 230, 180, 0, 0, hInstance, 0);  

  while( GetMessage(&amp;msg, NULL, 0, 0)) {
    TranslateMessage(&amp;msg);
    DispatchMessage(&amp;msg);
  }
  return (int) msg.wParam;
}

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{

    
  switch(msg)  
  {
	case WM_CREATE:
	{
        CreateWindow(TEXT(&quot;button&quot;), TEXT(&quot;SFX1&quot;),    
		             WS_VISIBLE | WS_CHILD ,
		             20, 50, 80, 25,        
		             hwnd, (HMENU) 1, NULL, NULL);
		             
        CreateWindow(TEXT(&quot;button&quot;), TEXT(&quot;SFX2&quot;),    
		             WS_VISIBLE | WS_CHILD ,
		             20, 80, 80, 25,        
		             hwnd, (HMENU) 2, NULL, NULL);
                      
        CreateWindow(TEXT(&quot;button&quot;), TEXT(&quot;SFX3&quot;),    
		             WS_VISIBLE | WS_CHILD ,
		             120, 50, 80, 25,        
		             hwnd, (HMENU) 3, NULL, NULL); 
        CreateWindow(TEXT(&quot;button&quot;), TEXT(&quot;SFX4&quot;),    
		             WS_VISIBLE | WS_CHILD ,
		             120, 80, 80, 25,        
		             hwnd, (HMENU) 4, NULL, NULL); 
		             
        CreateWindow(TEXT(&quot;button&quot;), TEXT(&quot;ABOUT&quot;),    
		             WS_VISIBLE | WS_CHILD ,
		             20, 110, 80, 25,        
		             hwnd, (HMENU) 5, NULL, NULL);

	    CreateWindow(TEXT(&quot;button&quot;), TEXT(&quot;QUIT&quot;),    
		             WS_VISIBLE | WS_CHILD ,
		             120, 110, 80, 25,        
		             hwnd, (HMENU) 6, NULL, NULL);    
	    break;
	}

    case WM_COMMAND:
    {
    if (LOWORD(wParam) == 1){
	    PlaySound(MAKEINTRESOURCE(IDW_SOUND1), NULL, SND_RESOURCE | SND_ASYNC);
        }
        
    if (LOWORD(wParam) == 2){
	    PlaySound(MAKEINTRESOURCE(IDW_SOUND2), NULL, SND_RESOURCE | SND_ASYNC);
        }
        
    if (LOWORD(wParam) == 3){
	    PlaySound(MAKEINTRESOURCE(IDW_SOUND3), NULL, SND_RESOURCE | SND_ASYNC);
        }
        
    if (LOWORD(wParam) == 4){
	    PlaySound(MAKEINTRESOURCE(IDW_SOUND4), NULL, SND_RESOURCE | SND_ASYNC);
        }
        
    if (LOWORD(wParam) == 5){
    MessageBox(NULL, &quot;This tutorial was created by www.lukechalaudio.com&quot;, &quot;About&quot;, MB_OK);
    }

	   if (LOWORD(wParam) == 6) {
              PostQuitMessage(0);
	   }

	   break;
       }

      case WM_DESTROY:
      {
         PostQuitMessage(0);
         break;
      }
  }
  return DefWindowProc(hwnd, msg, wParam, lParam);
}</pre><p></p>
<p><strong>Final Remarks:</strong><br />
With a little basic knowledge it starts becomes easy to trigger audio events from code. Since you have read the post you can now have the source code and files.<br />
<a href="http://www.lukechalaudio.com/wp-content/uploads/2012/05/soundboard_tutorial.zip">Download Source</a><br />
I hope this helps with your current projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/05/19/soundboard-c-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to use WAV files as C++ resources and play them in a standalone exe</title>
		<link>http://www.lukechalaudio.com/2012/05/17/how-to-use-wav-files-as-c-resources-and-play-them-in-a-standalone-exe/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-use-wav-files-as-c-resources-and-play-them-in-a-standalone-exe</link>
		<comments>http://www.lukechalaudio.com/2012/05/17/how-to-use-wav-files-as-c-resources-and-play-them-in-a-standalone-exe/#comments</comments>
		<pubDate>Thu, 17 May 2012 02:25:36 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[!=]]></category>
		<category><![CDATA[#define]]></category>
		<category><![CDATA[#ifdef RC_INVOKED]]></category>
		<category><![CDATA[-lwinmm]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[audio engine]]></category>
		<category><![CDATA[audio events]]></category>
		<category><![CDATA[audio programming]]></category>
		<category><![CDATA[c++ programming]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[devc++]]></category>
		<category><![CDATA[embeded files]]></category>
		<category><![CDATA[embeded files in exe]]></category>
		<category><![CDATA[exe]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[main.cpp]]></category>
		<category><![CDATA[playsound()]]></category>
		<category><![CDATA[resource.h]]></category>
		<category><![CDATA[resource.rc]]></category>
		<category><![CDATA[sfx]]></category>
		<category><![CDATA[SND_ASYNC]]></category>
		<category><![CDATA[SND_RESOURCE]]></category>
		<category><![CDATA[wav file resource c++]]></category>
		<category><![CDATA[windows.h]]></category>
		<category><![CDATA[winmm.a]]></category>
		<category><![CDATA[winmm.lib]]></category>
		<category><![CDATA[||]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=876</guid>
		<description><![CDATA[As some of my friends may already know this issue has been eating away at me for sometime. Although DevC++ is a great program it proves hard to workaround the little issues with the windows.h header file and or windows &#8230; <a href="http://www.lukechalaudio.com/2012/05/17/how-to-use-wav-files-as-c-resources-and-play-them-in-a-standalone-exe/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/05/wav_resources_cpp.jpg"><img class="aligncenter size-full wp-image-877" title="wav_resources_cpp" src="http://www.lukechalaudio.com/wp-content/uploads/2012/05/wav_resources_cpp.jpg" alt="" width="666" height="333" /></a><br />
As some of my friends may already know this issue has been eating away at me for sometime. Although DevC++ is a great program it proves hard to workaround the little issues with the windows.h header file and or windows api. However being persistent has paid off thus I will share my discoveries with you for free (lucky you).</p>
<p>In order to start defining the resources to be included in the executable we must first start with the resource.h header. The purpose of this file is to define the resources as IDs and names. #define will help us with that. However in order to access these assets we must also add #ifdef RC_INVOAKED as well. This will allow the compiler to know where to find this information when it&#8217;s called upon. The source is provided below of resource.h.</p>
<p><strong>resource.h</strong></p><pre class="crayon-plain-tag">//Defines
#define IDW_SOUND1 1000
#define IDW_SOUND2 1001
#define IDW_SOUND3 1002
#define IDW_SOUND4 1003

//If these are invoked as resources load them
#ifdef RC_INVOKED
IDW_SOUND1 WAVE &quot;sound1.wav&quot;
IDW_SOUND2 WAVE &quot;sound2.wav&quot;
IDW_SOUND3 WAVE &quot;sound3.wav&quot;
IDW_SOUND4 WAVE &quot;sound4.wav&quot;
#endif</pre><p></p>
<p>The next file we will need is the .rc file. These files are also known as resource scripts. This file gives the resource.h header the correct file path of the resources to be compiled into the final executable. Take note of the following code.</p>
<p><strong>resource.rc</strong></p><pre class="crayon-plain-tag">#include &quot;resource.h&quot;

//Define the files as IDW_SOUND! (resource name) and of type WAVE then filepath
IDW_SOUND1 WAVE &quot;sound1.wav&quot;
IDW_SOUND2 WAVE &quot;sound2.wav&quot;
IDW_SOUND3 WAVE &quot;sound3.wav&quot;
IDW_SOUND4 WAVE &quot;sound4.wav&quot;</pre><p></p>
<p>This brings us to the main event or code I should say. The switch function will allow us to create specific events for each number from 1 to 5. The if statement which uses != (not equal to) and || (or) takes every other entry as invalid. The else statement at this point is for fun thus the sarcasm. The exit(0) function will allow us to exit the program when we wish.</p>
<p><strong>main.cpp</strong></p><pre class="crayon-plain-tag">#include &lt;iostream&gt;
#include &lt;windows.h&gt; 
#include &quot;resource.h&quot;

using namespace std;

int main(int argc, char *argv[])
{
    //Ask for input from 1 to 4 or 5 to exit and store in input var
    int input;
    cout &lt;&lt; &quot;Choose a sound from 1 to 4 or 5 to exit:&quot;;
    cin &gt;&gt; input;

    //If the input is 1 2 3 or 5...
    //This switch will execute the valid arguments in series
    switch (input)
    {
         //We will use the PlaySound function from windows.h and the linker must contain -lwinmm in DevC++
         case 1: PlaySound(MAKEINTRESOURCE(IDW_SOUND1), NULL, SND_RESOURCE | SND_ASYNC);
         cout &lt;&lt; &quot;Playing sound 1...&quot; &lt;&lt; endl;
         cout &lt;&lt; &quot;Press any key to exit&quot; &lt;&lt; endl;
         system(&quot;PAUSE&gt;nul&quot;);
         exit(0);
         break;
         case 2: PlaySound(MAKEINTRESOURCE(IDW_SOUND2), NULL, SND_RESOURCE | SND_ASYNC);
         cout &lt;&lt; &quot;Playing sound 2...&quot; &lt;&lt; endl;
         cout &lt;&lt; &quot;Press any key to exit&quot; &lt;&lt; endl;
         system(&quot;PAUSE&gt;nul&quot;);
         exit(0);
         break;
         case 3: PlaySound(MAKEINTRESOURCE(IDW_SOUND3), NULL, SND_RESOURCE | SND_ASYNC);
         cout &lt;&lt; &quot;Playing sound 3...&quot; &lt;&lt; endl;
         cout &lt;&lt; &quot;Press any key to exit&quot; &lt;&lt; endl;
         system(&quot;PAUSE&gt;nul&quot;);
         exit(0);
         break;
         case 4: PlaySound(MAKEINTRESOURCE(IDW_SOUND4), NULL, SND_RESOURCE | SND_ASYNC);
         cout &lt;&lt; &quot;Playing sound 4...&quot; &lt;&lt; endl;
         cout &lt;&lt; &quot;Press any key to exit&quot; &lt;&lt; endl;
         system(&quot;PAUSE&gt;nul&quot;);
         exit(0);
         break;
         case 5: exit(0);
         break;
    }
    if (input != (1 || 2 || 3 || 4 || 5))
    {
        cout &lt;&lt; &quot;You entered an invalid choice you know how to count from 1 to 5 right?&quot; &lt;&lt; endl;
        system(&quot;PAUSE&gt;nul&quot;);
    }
    else
    {
        cout &lt;&lt; &quot;I don't know how you did it but you really screwed this one up!&quot; &lt;&lt; endl;
    }
    return 0;
}</pre><p></p>
<p><strong>IMPORTANT NOTE:</strong><br />
You MUST put -lwinmm (library for playsound) in the project settings -&gt; paramaters / linker or DevC++ will think your a complete loser.</p>
<p>After you understand these concepts then you may download the source.<br />
<a href="http://www.lukechalaudio.com/wp-content/uploads/2012/05/wave_resource_tutorial.zip">Download Source</a></p>
<p><strong>Final Remarks:</strong><br />
I hope this helps you in your own projects. Some more programs to look into are resedit for generating the .h and .res file automatically for you and resource hacker for checking your work on the compiled executable. Hopefully soon I will be going over how to use this with an external API like irrKlang or the famous FMOD.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/05/17/how-to-use-wav-files-as-c-resources-and-play-them-in-a-standalone-exe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to HEX Edit Audio WAV Files [Part 2]</title>
		<link>http://www.lukechalaudio.com/2012/04/30/how-to-hex-wav-edit-audio-wav-files-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-hex-wav-edit-audio-wav-files-part-2</link>
		<comments>http://www.lukechalaudio.com/2012/04/30/how-to-hex-wav-edit-audio-wav-files-part-2/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 23:55:18 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[bit depth]]></category>
		<category><![CDATA[bytes]]></category>
		<category><![CDATA[decimal]]></category>
		<category><![CDATA[digital audio]]></category>
		<category><![CDATA[hex]]></category>
		<category><![CDATA[hex code]]></category>
		<category><![CDATA[hex conversion]]></category>
		<category><![CDATA[hex editor]]></category>
		<category><![CDATA[microsoft wav]]></category>
		<category><![CDATA[RIFF file format]]></category>
		<category><![CDATA[signed]]></category>
		<category><![CDATA[signed audio]]></category>
		<category><![CDATA[unsigned]]></category>
		<category><![CDATA[unsigned audio]]></category>
		<category><![CDATA[wav]]></category>
		<category><![CDATA[wav file]]></category>
		<category><![CDATA[wav file format]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=838</guid>
		<description><![CDATA[Overview: I&#8217;m back yet again to help you discover how to read wav audio files in hex code. This time we will revisit how to read and understand the definitions of ChunkSize, SubChunk1Size, AudioFormat, Sample Rate, Byte Rate, Block Align, &#8230; <a href="http://www.lukechalaudio.com/2012/04/30/how-to-hex-wav-edit-audio-wav-files-part-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Overview:</strong><br />
I&#8217;m back yet again to help you discover how to read wav audio files in hex code. This time we will revisit how to read and understand the definitions of ChunkSize, SubChunk1Size, AudioFormat, Sample Rate, Byte Rate, Block Align, SubChunk2Size, and the samples themselves based on the Bit Rate being signed or unsigned. We will be talking about PCM wav files but I&#8217;ll give you an insight to other formats and how to figure out where to start with them.</p>
<p><strong>Tools of the trade:</strong><br />
<a href="http://www.binaryconvert.com/">Hex Converter</a> (more advanced one)<br />
Road Map (<a href="http://www.lukechalaudio.com/2012/04/25/how-to-hex-edit-audio-wav-files/">see part 1</a>)<br />
Hex Editor (<a href="http://www.lukechalaudio.com/2012/04/25/how-to-hex-edit-audio-wav-files/">see part 1</a>)</p>
<p><strong>Chunk Size:</strong><br />
This describes the size of whole file in bytes. Although you must subtract 8 bytes because ChunkID and Chunk Size are not included.<br />
This chunk is 4 bytes in size and is read backwards. Thus if you have 24:08 you must put 08:24 in the hex converter returning 2084 bytes as the decimal value.</p>
<p><strong>SubChunk1Size:</strong><br />
This is the size in bytes of the rest of the fmt subchunk in bytes excluding the 4 bytes the SubChunk1Size uses to describe this. Usually in a 16bit wav file this value will be 16 bytes.<br />
Unlike Chunk Size this usually reads forwards.</p>
<p><strong>Audio Format:</strong><br />
<a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/mmreg.h">List of Compression Codes in mmreg.h</a><br />
This is where the compression code for the audio file is decided. Use the list from the link above to get the value of the compression code you are looking for. Once you find the correct code then you must read on how to interpret the samples for the data chunk.<br />
Remember to put this in your text editor.</p>
<p><strong>Sample Rate:</strong><br />
The rate in hz in which samples are read. Usually CD quality will be 44:AC:00:00. Thus convert AC:44 to decimal and it returns 44.1Khz. This chunk uses 4 bytes.</p>
<p><strong>Byte Rate:</strong><br />
This is just a calculated value done using the Sample Rate times the Number of Channels times Bits per Sample divided by 8. This is how many bytes per second.</p>
<p><strong>Block Align:</strong><br />
The number of bytes for one sample but including all channels.<br />
This chunk is 2 bytes in size.</p>
<p><strong>SubChunk2Size:</strong><br />
This is the total number of bytes of the data chunk (the samples).<br />
This is read just like SubChunk1Size.</p>
<p><strong>Samples:</strong><br />
In a 16bit mono wav file it&#8217;s 2byes per sample and they are signed decimal values. There is an excellent converter for this on-line if you click the hex converter link from &#8220;Tools of the trade&#8221;. Once you arrive at the website click on the signed short 16bit converter button. Here you can now enter your hex values to return the sample value. So lets say for example you have a sample of 2bytes as 1E:F3 this is equal to 7923. Where -7923 is E1:0D in hex. In order to know the range of the samples you must figure out the sample range. This is determined by 2^n where n is the bit depth. This means 2 to the power of 16 bits equals 65536 increments of quantization. Since this is signed samples it will range from decimal values of −32768 to 32767 because we are starting from zero. The same method of mathematics can be applied to 24bit and 32bit as well except for 8bit audio files in which case are always unsigned only having 256 increments of quantization. This makes 16bit look like a huge technological improvement. Below is an image of what audio quantization looks like. This will show you what the analog signal looks like in comparison to the quantized digital portion.</p>
<div id="attachment_840" class="wp-caption aligncenter" style="width: 688px"><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/quantization.jpg"><img class="size-full wp-image-840" title="quantization" src="http://www.lukechalaudio.com/wp-content/uploads/2012/04/quantization.jpg" alt="quantization" width="678" height="204" /></a><p class="wp-caption-text">Digital Audio Quantization (bit depth)</p></div>
<p>I could go into ideal sample rates based on the nyquist frequency principal but this I&#8217;ll leave for another post.</p>
<p><strong>Final Remarks:</strong><br />
After looking at these principals step by step it becomes easy to identify how computers read every byte of wav file data. I hope that this will be useful to you now and in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/04/30/how-to-hex-wav-edit-audio-wav-files-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to HEX Edit Audio WAV Files</title>
		<link>http://www.lukechalaudio.com/2012/04/25/how-to-hex-edit-audio-wav-files/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-hex-edit-audio-wav-files</link>
		<comments>http://www.lukechalaudio.com/2012/04/25/how-to-hex-edit-audio-wav-files/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 02:45:53 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[advanced audio]]></category>
		<category><![CDATA[audacity]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[audio hex editing]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[frhed]]></category>
		<category><![CDATA[hex]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[restoration]]></category>
		<category><![CDATA[RIFF]]></category>
		<category><![CDATA[wav]]></category>
		<category><![CDATA[wav header]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=824</guid>
		<description><![CDATA[The Basics: I know that some individuals reading this are wondering, &#8220;Why would this ever be useful?&#8221;. I like to push the envelope with technology and standards because it&#8217;s human nature to learn and explore new possibilities. But there is &#8230; <a href="http://www.lukechalaudio.com/2012/04/25/how-to-hex-edit-audio-wav-files/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>The Basics:</strong><br />
I know that some individuals reading this are wondering, &#8220;Why would this ever be useful?&#8221;. I like to push the envelope with technology and standards because it&#8217;s human nature to learn and explore new possibilities. But there is a legitimate reason for this kind of audio editing. At this point I&#8217;m sure you believe I&#8217;m clinically insane thus lets begin!</p>
<p>Hex editing is not as daunting as one may expect. It&#8217;s actually very logical the first thing you will need is a road map, hex editor, and of course the file that you are editing. When I refer to &#8220;road map&#8221; this is actually a list of address and what they mean. Kind of like &#8220;33 Wonder St., 5th floor&#8221;. In this example the street name is the filename, the street number 33 is the hex offset and the value is the 5 (the fifth floor level). The 33 Wonder St., 5th floor example may strike you as elementary but it will help later on.</p>
<p>The WAV filetype is a standard for storing audio data in chunks and subchunks using the RIFF (Resource Interchange File Format) format. The most common type of WAV file in audio is PCM (Pulse Code Modulation) and this is the type of file we will be editing today. If you don&#8217;t understand some of this terminology it&#8217;s okay this is more about doing then knowing really.. just trust me okay!</p>
<p><strong>The Road Map:</strong><br />
HEX |DESCRIPTION<br />
0000 |RIFF (in plain ASCII text)<br />
0004 |Length of the entire file as a 32-bit unsigned integer<br />
0008 |WAVE (in plain ASCII text)<br />
000C |fmt[] (fmt[] in ASCII text denotes subchunk)<br />
0010 |subchunk1size as a 32-bit unsigned integer<br />
0032 |audio format 1=PCM<br />
0016 |# of channels 1=1 2=2 (you can figure that out right?!)<br />
0018 |Sample Rate!<br />
001C |Byte Rate<br />
0020 |Block Align<br />
0022 |Bits/Sample<br />
0024 |data (in plain ASCII text start of data subchunk)<br />
0028 |Subchunk2Size<br />
002C |First Sample (Left if 0016 = 2)<br />
002E |Second Sample (Right if 0016 = 2)<br />
REST OF DATA</p>
<p><strong>Tools of the Trade:</strong><br />
Now that we have the road map we will need a few other tools to get us started please download and install the following:<br />
<a href="http://frhed.sourceforge.net/en/">Download Frhed</a><br />
<a href="http://audacity.sourceforge.net/">Download Audacity</a><br />
<a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/hextest.wav">Download testhex.wav</a></p>
<p><strong>Step 1:</strong><br />
Open up testhex.wav with Frhed hex editor<br />
<a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/waveaudiohex.png"><img class="aligncenter size-large wp-image-826" title="waveaudiohex" src="http://www.lukechalaudio.com/wp-content/uploads/2012/04/waveaudiohex-1024x100.png" alt="waveaudiohex" width="640" height="62" /></a> Notice how I have marked all these addresses out for you in RED!</p>
<p><strong>Step 2:</strong><br />
Change the value of the first sample in the mono file to [6A 06]<br />
<a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/waveaudiohex2.png"><img class="aligncenter size-large wp-image-827" title="waveaudiohex2" src="http://www.lukechalaudio.com/wp-content/uploads/2012/04/waveaudiohex2-1024x75.png" alt="waveaudiohex2" width="640" height="46" /></a><br />
Then save as testhex2.wav. In theory we have made the first sample equal to the second lets prove this now.</p>
<p><strong>Step 3:</strong><br />
Open up Audacity and compare your testhex.wav to testhex2.wav and notice the following differences.<br />
<a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/firstsamplehex.png"><img class="aligncenter size-full wp-image-829" title="firstsamplehex" src="http://www.lukechalaudio.com/wp-content/uploads/2012/04/firstsamplehex.png" alt="firstsamplehex" width="318" height="273" /></a><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/firstequalssecondhex.png"><img class="aligncenter size-full wp-image-830" title="firstequalssecondhex" src="http://www.lukechalaudio.com/wp-content/uploads/2012/04/firstequalssecondhex.png" alt="firstequalssecondhex" width="263" height="217" /></a>This should be a simple proof of concept that the theory presented to you in the beginning of this tutorial is correct.</p>
<p><strong>Final Remarks:</strong><br />
To finally answer the question as posed in the first paragraph this will be useful for writing your own audio programs to edit waveforms but for the average audio geek this is great knowledge to help recover corrupt header files. If a header file is corrupt the audio program will not know how to read the data chunks and subchunks of the WAV file. With all this new knowledge you now have it&#8217;s possible to write the data in manually to fix corruptions (this can take days even months but I didn&#8217;t say it would be easy). I will be highlighting the different aspects of WAV headers and their functions in a future post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/04/25/how-to-hex-edit-audio-wav-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<enclosure url="http://www.lukechalaudio.com/wp-content/uploads/2012/04/hextest.wav" length="1323044" type="audio/wav" />
	</item>
		<item>
		<title>Psychoacoustic and Visual Illusions Video</title>
		<link>http://www.lukechalaudio.com/2012/04/21/psychoacoustic-and-visual-illusions-video/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=psychoacoustic-and-visual-illusions-video</link>
		<comments>http://www.lukechalaudio.com/2012/04/21/psychoacoustic-and-visual-illusions-video/#comments</comments>
		<pubDate>Sat, 21 Apr 2012 02:36:35 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Music Composition]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[audio video drug]]></category>
		<category><![CDATA[binaural beats]]></category>
		<category><![CDATA[getting high]]></category>
		<category><![CDATA[high]]></category>
		<category><![CDATA[i doser]]></category>
		<category><![CDATA[idoser]]></category>
		<category><![CDATA[illusion]]></category>
		<category><![CDATA[legal high]]></category>
		<category><![CDATA[psychoacoustic]]></category>
		<category><![CDATA[psychoactive]]></category>
		<category><![CDATA[psychotropic]]></category>
		<category><![CDATA[s drugs]]></category>
		<category><![CDATA[stoned]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=816</guid>
		<description><![CDATA[WEAR HEADPHONES OR THIS WILL NOT WORK!!! DIM THE LIGHTS AND MAKE IT FULL SCREEN! This is actually not a moving image it&#8217;s all processed in the brain and has to do with peripheral vision notice that objects that are &#8230; <a href="http://www.lukechalaudio.com/2012/04/21/psychoacoustic-and-visual-illusions-video/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><br />
WEAR HEADPHONES OR THIS WILL NOT WORK!!!<br />
DIM THE LIGHTS AND MAKE IT FULL SCREEN!<br />
This is actually not a moving image it&#8217;s all processed in the brain and has to do with peripheral vision notice that objects that are turning objects are in peripheral vision and non-moving objects not in peripheral vision. The audio is 440hz on the left and 440.5, 444, 448, and 454 on the right. This will access Delta, Theta, Alpha, and Beta respectively. Delta is deep sleep, Theta is Drowsiness, Alpha is Relaxed but alert, Beta is Highly alert and focused. The human brain locates sounds by the use of loudness of sounds in each ear. To demonstrate how the binaural beats affect this look to the left, right, up, and down without moving your head and notice the sound morphing. If you still don&#8217;t believe this close your eyes and try again. Since the brain cannot locate the beat frequencies changing where your looking does affect the sound. There is a point in which the brain processes the visual and audio data and I hope this video will enlighten some of these psychoacoustic properties.<br />
Audio Only:</p>
<p><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/BinauralBeats.mp3">Download MP3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/04/21/psychoacoustic-and-visual-illusions-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<enclosure url="http://www.lukechalaudio.com/wp-content/uploads/2012/04/BinauralBeats.mp3" length="9601114" type="audio/mpeg" />
	</item>
		<item>
		<title>Dubstep Bass Slide Massive VST Pre-set</title>
		<link>http://www.lukechalaudio.com/2012/04/20/dubstep-bass-slide-massive-vst-pre-set/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dubstep-bass-slide-massive-vst-pre-set</link>
		<comments>http://www.lukechalaudio.com/2012/04/20/dubstep-bass-slide-massive-vst-pre-set/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 01:41:18 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Music Composition]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=808</guid>
		<description><![CDATA[Pre-set Download Sample Audio: Here is another massive vst pre-set you can download. This particular example uses an envelope to create a pitch slide on the oscillators. The choice of settings is closely related to the previous blog post called &#8230; <a href="http://www.lukechalaudio.com/2012/04/20/dubstep-bass-slide-massive-vst-pre-set/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/Bass_Slide.jpg"><img class="aligncenter size-full wp-image-809" title="Bass_Slide" src="http://www.lukechalaudio.com/wp-content/uploads/2012/04/Bass_Slide.jpg" alt="Bass_Slide" width="959" height="719" /></a> <a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/BassSlide.zip">Pre-set Download</a><br />
Sample Audio:</p>
<p>Here is another massive vst pre-set you can download. This particular example uses an envelope to create a pitch slide on the oscillators. The choice of settings is closely related to the previous blog post called <a href="http://www.lukechalaudio.com/2012/04/18/dirty-dubstep-bass-massive-vst-pre-set-download/">Dirty Dubstep Bass Massive VST Pre-set Download</a>. I hope you will find this useful in your own mixes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/04/20/dubstep-bass-slide-massive-vst-pre-set/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<enclosure url="http://www.lukechalaudio.com/wp-content/uploads/2012/04/Dubstep_BassSlide.mp3" length="105038" type="audio/mpeg" />
	</item>
		<item>
		<title>Dirty Dubstep Bass Massive VST Pre-set Download</title>
		<link>http://www.lukechalaudio.com/2012/04/18/dirty-dubstep-bass-massive-vst-pre-set-download/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dirty-dubstep-bass-massive-vst-pre-set-download</link>
		<comments>http://www.lukechalaudio.com/2012/04/18/dirty-dubstep-bass-massive-vst-pre-set-download/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 01:16:53 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Music Composition]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[au]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[bass]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[dubstep]]></category>
		<category><![CDATA[ksd patch]]></category>
		<category><![CDATA[Luke Chalupowski]]></category>
		<category><![CDATA[massive]]></category>
		<category><![CDATA[massive tutorial]]></category>
		<category><![CDATA[mix]]></category>
		<category><![CDATA[modern talking]]></category>
		<category><![CDATA[pre-set]]></category>
		<category><![CDATA[rtas]]></category>
		<category><![CDATA[sample audio]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vst]]></category>
		<category><![CDATA[wobble]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=803</guid>
		<description><![CDATA[Sample Audio: Pre-set Download This particular example makes use &#8220;Modern Talking&#8221;, &#8220;Deep Throat&#8221;, and &#8220;Screamer&#8221; oscillator pre-sets. These all being oscillators 1, 2, and 3 respectively. This choice of oscillators was selected to get a vocal sound out of the &#8230; <a href="http://www.lukechalaudio.com/2012/04/18/dirty-dubstep-bass-massive-vst-pre-set-download/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/dubstep_example.jpg"><img class="aligncenter size-full wp-image-804" title="dubstep_example" src="http://www.lukechalaudio.com/wp-content/uploads/2012/04/dubstep_example.jpg" alt="dubstep_example" width="955" height="716" /></a><br />
Sample Audio:</p>
<p><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/DirtyWobbleBass.zip">Pre-set Download</a></p>
<p>This particular example makes use &#8220;Modern Talking&#8221;, &#8220;Deep Throat&#8221;, and &#8220;Screamer&#8221; oscillator pre-sets. These all being oscillators 1, 2, and 3 respectively. This choice of oscillators was selected to get a vocal sound out of the synth. The resonant wt-positions were set so the sound hit different natural harmonics giving it a throat singing feel. In routing I changed the way in which the feedback loop is set up because I found the default settings to be a bit too aggressive not allowing for harmonics to show. The audio does max-out causing the tops of the waves to look like a square-waves but it clips rather nicely. All the other settings are self-explanatory once the pre-set is downloaded.</p>
<p>Hope you can enjoy some of this in your own mix!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/04/18/dirty-dubstep-bass-massive-vst-pre-set-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<enclosure url="http://www.lukechalaudio.com/wp-content/uploads/2012/04/dubstep_bass.mp3" length="193242" type="audio/mpeg" />
	</item>
		<item>
		<title>First Podcast and Updates</title>
		<link>http://www.lukechalaudio.com/2012/04/16/first-podcast-and-updates/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=first-podcast-and-updates</link>
		<comments>http://www.lukechalaudio.com/2012/04/16/first-podcast-and-updates/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 03:02:35 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Podcast]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=798</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/04/16/first-podcast-and-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<enclosure url="http://www.lukechalaudio.com/wp-content/uploads/2012/04/podcast_1.mp3" length="2600714" type="audio/mpeg" />
		<itunes:duration>0:02:43</itunes:duration>
		<itunes:subtitle>First Podcast and Updates</itunes:subtitle>
		<itunes:keywords>Podcast</itunes:keywords>
		<itunes:author>Luke Chalupowski</itunes:author>
		<itunes:explicit>no</itunes:explicit>
		<itunes:block>no</itunes:block>
	</item>
		<item>
		<title>Graphical User Interface Sound Using PureData</title>
		<link>http://www.lukechalaudio.com/2012/04/14/graphical-user-interface-sound-using-puredata/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=graphical-user-interface-sound-using-puredata</link>
		<comments>http://www.lukechalaudio.com/2012/04/14/graphical-user-interface-sound-using-puredata/#comments</comments>
		<pubDate>Sat, 14 Apr 2012 17:48:49 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Music Composition]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[graphical user interface]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[line~]]></category>
		<category><![CDATA[metro]]></category>
		<category><![CDATA[osc]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[puredata]]></category>
		<category><![CDATA[Sound Design]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[writesf~]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=783</guid>
		<description><![CDATA[Puredata has always been useful for sound design given the level of control one has over signal path. This particular patch makes use of 4 osc~ objects to create 4 major triads played as many milliseconds apart as you specify by the &#8230; <a href="http://www.lukechalaudio.com/2012/04/14/graphical-user-interface-sound-using-puredata/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/GUI_Sound.jpg"><img class="alignright size-full wp-image-784" title="GUI_Sound" src="http://www.lukechalaudio.com/wp-content/uploads/2012/04/GUI_Sound.jpg" alt="" width="947" height="811" /></a>Puredata has always been useful for sound design given the level of control one has over signal path. This particular patch makes use of 4 osc~ objects to create 4 major triads played as many milliseconds apart as you specify by the metro object. The line~ object is used as a ramp to prevent audio clicks and jumps. The note numbers are specified as message objects. This is a very simple application for GUI sounds.</p>
<p>You can download the patch and files <a href="http://www.lukechalaudio.com/wp-content/uploads/2012/04/ui_sound.zip">here</a>.</p>
<p>If you wish to record the audio created use the writesf~ object by clicking on &#8220;open temp.wav&#8221;  then &#8220;start&#8221;. To stop the recording to disc click &#8220;stop&#8221;.</p>
<p>I will have the podcast up and running soon. If you wish to test the podcast click on the podcast image in the side bar to bring up the feed page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/04/14/graphical-user-interface-sound-using-puredata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Podcast Test</title>
		<link>http://www.lukechalaudio.com/2012/04/12/podcast-test/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=podcast-test</link>
		<comments>http://www.lukechalaudio.com/2012/04/12/podcast-test/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 02:46:08 +0000</pubDate>
		<dc:creator>Luke Chalupowski</dc:creator>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[placeholder]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.lukechalaudio.com/?p=760</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lukechalaudio.com/2012/04/12/podcast-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<enclosure url="http://www.lukechalaudio.com/wp-content/uploads/2012/04/Trailer_Audio_New.mp3" length="1" type="audio/mpeg" />
		<itunes:duration>0:02:13</itunes:duration>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary></itunes:summary>
		<itunes:keywords>Podcast</itunes:keywords>
		<itunes:author>Luke Chalupowski</itunes:author>
		<itunes:explicit>no</itunes:explicit>
		<itunes:block>no</itunes:block>
	</item>
	</channel>
</rss>

<!-- Dynamic page generated in 5.203 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-19 18:27:28 -->

