{"author_name": "Gemberkoekje", "cat": "LD #23", "comments": [], "epoch": 1334913000, "likes": 0, "metadata": {"p_key": "58930", "p_author": "Gemberkoekje", "p_authorkey": "5952", "p_urlkey": "94679", "p_title": "Music + Sound C++ Code Cheat Sheet", "p_cat": "LD #23", "p_event": "LD23", "p_time": "1334913000", "p_likes": "0", "p_comments": "0", "p_status": "UPD5", "us_key": "5952", "us_name": "Gemberkoekje", "us_username": "/author/gemberkoekje/", "event_start": "1334880000", "event_key": "10", "event_name": "LD23"}, "text": "<p>Ok, I&#8217;m quite confident I can turn Cinder to my whims when it&#8217;s about Graphics and Input.</p>\n <p>But I also know the sound system Cinder uses is utterly&#8230; well, it doesn&#8217;t work very well.</p>\n <p>So, from today onward, I&#8217;m using Bass (http://www.un4seen.com/) and this post will present anyone with a little cheat sheet on how to use it.</p>\n <p><span id=\"more-117007\"></span></p>\n <p>[stextbox id=&#8221;grey&#8221; caption=&#8221;Bass Cheat Sheet&#8221;]</p>\n <p><code>//INIT<br />\n HSTREAM str;</code></p>\n <p>// check the correct BASS was loaded<br />\n if (HIWORD(BASS_GetVersion())!=BASSVERSION) {<br />\n //MessageBox(0,&#8221;An incorrect version of BASS.DLL was loaded&#8221;,0,MB_ICONERROR);<br />\n }<br />\n if (!BASS_Init(-1,44100,BASS_DEVICE_3D,win,NULL)) {<br />\n EndDialog(win,0);<br />\n }</p>\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p>//LOAD SOUND EFFECTS:<br />\n {<br />\n char file[MAX_PATH]=&#8221;C:\\\\WAVEFILE.wav&#8221;;<br />\n HSAMPLE sam;<br />\n if (sam=BASS_SampleLoad(FALSE,file,0,0,3,BASS_SAMPLE_OVER_POS)) {<br />\n samc++;<br />\n sams=(HSAMPLE*)realloc((void*)sams,samc*sizeof(*sams));<br />\n sams[samc-1]=sam;<br />\n SLM(LB_ADDSTRING,0,strrchr(file,&#8217;\\\\&#8217;)+1);<br />\n }<br />\n }</p>\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p>//PLAY SOUND EFFECTS:<br />\n int s=GETSAM();<br />\n if (s!=LB_ERR) {<br />\n // play the sample (at default rate, volume=50%, random pan position)<br />\n HCHANNEL ch=BASS_SampleGetChannel(sams[s],FALSE);<br />\n BASS_ChannelSetAttribute(ch,BASS_ATTRIB_VOL,0.5f);<br />\n BASS_ChannelSetAttribute(ch,BASS_ATTRIB_PAN,((rand()%201)-100)/100.f);<br />\n if (!BASS_ChannelPlay(ch,FALSE))<br />\n {<br />\n //Error(&#8220;Can&#8217;t play sample&#8221;);<br />\n }<br />\n }</p>\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p>//LOAD MUSIC:<br />\n {<br />\n char file[MAX_PATH]=&#8221;C:\\\\MP3FILE.mp3&#8243;;<br />\n if (str=BASS_StreamCreateFile(FALSE,file,0,0,0)) {<br />\n strc++;<br />\n strs=(HSTREAM*)realloc((void*)strs,strc*sizeof(*strs));<br />\n strs[strc-1]=str;<br />\n STLM(LB_ADDSTRING,0,strrchr(file,&#8217;\\\\&#8217;)+1);<br />\n }<br />\n }</p>\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p>//PLAY MUSIC:<br />\n s=GETSTR();<br />\n if (s!=LB_ERR)<br />\n if (!BASS_ChannelPlay(strs[s],FALSE)){ // play the stream (continue from current position)<br />\n int nauw = 1;<br />\n int bla = nauw;<br />\n int t = bla + 2;<br />\n // Error(&#8220;Can&#8217;t play stream&#8221;);<br />\n }</p>\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p>//MEMORY MANAGEMENT/DELETION:</p>\n <p>// BASS_SampleFree(c-&gt;channel);<br />\n // BASS_MusicFree(c-&gt;channel);<br />\n // BASS_StreamFree(c-&gt;channel);</p>\n <p>&nbsp;</p>\n <hr />\n <p>&nbsp;</p>\n <p>//3D:<br />\n /*<br />\n // INIT:</p>\n <p>// Initialize the default output device with 3D support<br />\n if (!BASS_Init(-1,44100,BASS_DEVICE_3D,win,NULL)) {<br />\n Error(&#8220;Can&#8217;t initialize output device&#8221;);<br />\n EndDialog(win,0);<br />\n return 0;<br />\n }</p>\n <p>// Use meters as distance unit, real world rolloff, real doppler effect<br />\n BASS_Set3DFactors(1,1,1);</p>\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p>//LOAD:<br />\n BASS_SampleLoad(FALSE,file,0,0,1,BASS_SAMPLE_LOOP|BASS_SAMPLE_3D|BASS_SAMPLE_MONO)</p>\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p>//USE:<br />\n BASS_ChannelSet3DPosition(channel,position,orientation,velocity);<br />\n BASS_Apply3D();<br />\n */</p>\n <p>[/stextbox]</p>\n <p>&nbsp;</p>", "time": "April 20th, 2012 4:10 am", "title": "Music + Sound C++ Code Cheat Sheet"}