QB64 Phoenix Edition
MemWave - Play WAV audio from string memory using Win API - Printable Version

+- QB64 Phoenix Edition (https://qb64phoenix.com/forum)
+-- Forum: QB64 Rising (https://qb64phoenix.com/forum/forumdisplay.php?fid=1)
+--- Forum: Prolific Programmers (https://qb64phoenix.com/forum/forumdisplay.php?fid=26)
+---- Forum: Dav (https://qb64phoenix.com/forum/forumdisplay.php?fid=34)
+---- Thread: MemWave - Play WAV audio from string memory using Win API (/showthread.php?tid=466)



MemWave - Play WAV audio from string memory using Win API - Dav - 05-22-2022

MemWave uses a Windows API call to play a WAV file loaded as a string.  This way you can include small sounds directly in BAS code and play them from string memory, not from an external file.  The example code posted will play a howling WAV sound.  I used BASFILE to convert the WAV file into string data here, but you can use whatever method you want - the main thing here is the way of calling the API.  

- Dav

 - THIS CODE IS FOR WINDOWS ONLY -
Code: (Select All)
'============
'MEMWAVE.BAS
'============
'Plays a WAV file from memory (string) using Win API call.
'Coded by Dav, MAY/2022

DECLARE DYNAMIC LIBRARY "winmm"
    FUNCTION PlaySoundA& (lpszName AS STRING, BYVAL hModule AS LONG, BYVAL dwFlags AS LONG)
END DECLARE

CONST SND_APPLICATION = 128 '  look for application specific association
CONST SND_ALIAS = 65536 '  name is a WIN.INI [sounds] entry
CONST SND_ALIAS_ID = 1114112 '  name is a WIN.INI [sounds] entry identifier
CONST SND_ASYNC = 1 '  play asynchronously
CONST SND_FILENAME = 131072 '  name is a file name
CONST SND_LOOP = 8 '  loop the sound until next PlaySound
CONST SND_MEMORY = 4 '  lpszSoundName points to a memory file
CONST SND_NODEFAULT = 2 '  silence not default, if sound not found
CONST SND_NOSTOP = 16 '  don't stop any currently playing sound
CONST SND_NOWAIT = 8192 '  don't wait if the driver is busy
CONST SND_PURGE = 64 '  purge non-static events for task
CONST SND_RESOURCE = 262148 '  name is a resource name or atom
CONST SND_SYNC = 0 '  play synchronously (default)

wav$ = Basfile$ 'load wav data string

PRINT "Playing wave file from memory."
PRINT
PRINT "Press any key to stop sound and exit...."

'Play a sound from memory data...looping it...
x& = PlaySoundA(wav$, 0, SND_MEMORY OR SND_ASYNC OR SND_LOOP)

SLEEP

x& = PlaySoundA(CHR$(0), 0, SND_MEMORY) '<<<--- stop sound



FUNCTION Basfile$ () 'Coyote howl .WAV file converted with BASFILE.BAS
    A$ = ""
    A$ = A$ + "haIYkm7JKTWUWInWSUSMhfKHPUIPMXWVIXkVdTVdQ4L2f47\g4\=FHK\>IS4"
    A$ = A$ + "FJUF9T4B89:AE5EAm;ZRZ:Z2E29T4B8QT#2;S=f6K\3fT#B8QT#29Q4BXkVd"
    A$ = A$ + "\c`d<m#?LkO];km77L7L__O[Bo`fYgM^kDCCWnE_jm[_O[gkckkkKFJVKNco"
    A$ = A$ + "n[N^cii6ognkST<k7mgL^cM^O2l?oG?oi`ok?iLoEWkOlO8ko`_6hAloon9L"
    A$ = A$ + "bO>DUTLN6_c_Q?E2mCdn9L>?biMTTUUA?3N0lKdW8;[X8SN27;;;lX1jAFAE"
    A$ = A$ + "CCEFPSUVVVQC#BAEA6T^X\VQUUY2Gfd9SW8=UPVEaRiDhIhT=;g\E=3ZP;iJ"
    A$ = A$ + ">GNC:F\E_NediXHeK\ka7]QAhKlIOd7o5c4gJ[kmX3KZBC[gmn_n]?\NlanI"
    A$ = A$ + "WkLo\[4`Lg7oh3KZc;FLWWl^gm`Ja^b?kWlCniS5:g^goNkDECD[n1_h[Oc]"
    A$ = A$ + "=GmloW?goY?jFI:_c]gOm:i;fjPWme_m^UR>aOgOm?mSVH=f2=KgXJm^koXG"
    A$ = A$ + "oE_l`2a_iWm;oUOb4NB:JV_HU>kLgWmfgnX=D3?cEnl;LUKj>LJ6YL=gkQ_j"
    A$ = A$ + "[NcSfb:[o5_e=6oJS?U;_a5ZNh;NoOhm?KgR\9S69`bghROjWMUiRWOoGnko"
    A$ = A$ + "ngoPf:4YYTdhSLc?mGngm5;`dkiOgOnK_G5Z8A9E]<i3Oc;Nn[jV\jQ?me?k"
    A$ = A$ + "PJZl2BBL4QGJjK<O8fl=Jg^A9[2ej]mjUHl=eHC\DJcV]:9ATP#Mm7m^G^Sh"
    A$ = A$ + "RGjcWH=YVmZ#_j\;6?oaOcOleMBM[aVL=aZ=dSL[[=MhR?lknc_^Nli_YKb:"
    A$ = A$ + "M;C<kWOnKTXicoSOgm=3_\?VV7\K^EnToVOah4KmEo`Gg;c2c6:oa_l1E3Na"
    A$ = A$ + "Oa_j6TmNbCgTggRn5glI_j0aIo]OdeB^n[nWNTiBGhCV<C_GmnkKjn;_h2B7"
    A$ = A$ + "lEOcA:^7kB^hjMgm=l>nHcC_mgl?o]KA>gE^fZbMfZJf5_a]2XO`KnZkE>KP"
    A$ = A$ + "ebT[M;=oSmK>o\dKm^odkjAiN6?LmN`mJVNj;LQIbfn1?mPlYmi;SejKgPem"
    A$ = A$ + "4Gg3Gg7oZSc5Lj[=OVZ7Lkf<;>aeMcfkY_maMhl=o21Id<4Bjc38g=>nX^jI"
    A$ = A$ + "S6QD_BESD;<nhcWZjmNgKfC9`Lc7BMSkNkJIVoZGM1b6gia7F8e:;iW^lf7^"
    A$ = A$ + "A^<nF92OiekF8[WIV;P#c3PmP9FMeDFkmT7]9W[?oS_hb2m^g3ge:5#\`n?n"
    A$ = A$ + "AK[^fe_hELUbXA[bJ<4TbEgih3J:5IQK=WgdB66ZRl\\BF=gHSFFL92heGXT"
    A$ = A$ + "T\R`7#::j5ZeZII=jh1l7>5]TVR0MF2JUR]F_K5ah[^TWX\VU[EBS=C:BAS2"
    A$ = A$ + "U:J8T9LP#9Id:E_NeR6:RLdTTDDd\`GPPF4e;D^LA;MINZd9BT<3UPAa:5ei"
    A$ = A$ + "Y8I4e<d1fIHHiUDeeeP?Oi8CU891SP\ZV^I>[REZEaB<CHO[^Fhd\bZ`Ga2:"
    A$ = A$ + "Fej\NW:j<YR4:JB2::b\IYhT=bG8_YV\Mb6Df1hOIXYXXHh5aI5hUd<cWg#V"
    A$ = A$ + "SRPPT5f6;0i3H5ebIUCCPV8340DE1cQUUGa8WY:b_cb:29;ThIi#FTVR8;59"
    A$ = A$ + "5[P<>O2?lO=<1Mbc#3:1RMB2P3cQBlPB2a9Z2?65#PoX\VZ4;IjDIX4ecG<_"
    A$ = A$ + "^83fb4iI#V?B=Z#b;AI8>X`CU9=1ST>H4`O<39_:\RaU=EbddBV5:TC5Y#15"
    A$ = A$ + "MMEAFb\T\BJ66J#n=8>:2I7iAaO>PXY1:N8:QT=X72DH2RZV#P6UC4L1V\YC"
    A$ = A$ + "U>;4^ed=de0_2R0BP=AC1RPV3iPPXAn5TY5U#6WdE#2UZe9o<oYc[;:iTe7R"
    A$ = A$ + "1<#2GFL6G#`X4g`?1Ho1A628<Z0BGG3ig2LXTf#83Ue6T>bL`fLFBJnni[U`"
    A$ = A$ + "TaKH#IaAB2N5`UA?G2iXXo4#52]hllh:5h:0bb`FAJlVBl^LK;AL#a2#_hG7"
    A$ = A$ + ";7T[8IG81I?fUR`Ba^`SS?kDWZOi=k#SXS[fW\C03;KWbClHODdA?HMRHS7E"
    A$ = A$ + "2c^Xg`#i`2XXMdfV3Z0HoBZX#<jc7l:BOaS[JbI7<kC^?of6oP:`3=OK]HGQ"
    A$ = A$ + "M0IW:_B3n9:N2I8egH`UY?Aik1Uf?K]oAnOi?93SnBWaok7d57J:H:3G;`L>"
    A$ = A$ + "b>#7J>6TmB=:BQ=IDeOdG=<D`WihTEhg6n0dd:?T^2BC0OK0I:ha_>\Wd<OY"
    A$ = A$ + "b5=5YB5;D`XIh#91T44TecG6:CWG8EPEF`UWX<6UZE]PV0_Jaf0HQNJQWnRO"
    A$ = A$ + "b_iBcCDJcmfZA>AN]Vgni_mUk[kmBoROj?ocMAFKgK_CCCAQL[oPgmnG^9k\"
    A$ = A$ + "OlOmOe_H<o:MfKg>5D4=JNd[NoK?b:`UoKoYolc?KL]jMKGab\#[mOb[OaAU"
    A$ = A$ + "ROSOkOk_lcV:0S9HLi;gN_7lbGodM=SN[_hglK_d]lUREF;GUe?hQ_l=?oXj"
    A$ = A$ + "\nWKRa^jTci9#\<LFM?jY_mM_h>]DB7`mLC=a4C>cB1bXgihWmfgmlKGG6bg"
    A$ = A$ + "4?TWKM];MUYmBGkhglkoM_JoR\#jidYChOQ97OJ?Y<ghQ_60KDD6]eT9Qk9_"
    A$ = A$ + "lEW9X#S3NdC^o>e=P4XTddIS]f:[j?6]FaJ=JfNm=je^THhI6kbCiS]bVk]I"
    A$ = A$ + "=EbDI4:\nnkge8a2GoJgLeTL:jVi[^nN7Ok>B1Vi6c6BZn6=UFKZaVd[bnOk"
    A$ = A$ + "ofob[J4OZ;NiKi?==lQ>WNm]fKmLTaRcDH[S?\L`;ncn_lKL9OlgoojOi9im"
    A$ = A$ + "?mD[#FXI5e<1G;:[ANEbX1RbGohGmZMIVnSniObbiNlomoegE?l4GhZ[`gHW"
    A$ = A$ + "]ZYaaKDYIIne^eeW=NYknfWe8lHOd7?Ifmn^ogo?NVYW;mKo2GI;fZZ6=1SN"
    A$ = A$ + "ef=bA6LU0D5giPf<^^hWlU;ZL_OhoiOL?f5_fEG8KieKXT`_oD:ejeaR`kRn"
    A$ = A$ + "XZ\gMfDag4GLLo5Ndgo3?>W_[Ma[7dHSmJ[4O]#d`Cg]#Ri7Oj0:KLlfjQ^e"
    A$ = A$ + "eV:Pemo^oiGg<i<S=^7f:]Qb_1R#UOc3gY<G4_nB[gLcfJaGNf529fjfgKo:"
    A$ = A$ + "La37W=GmjFdQFaG6cfk\EQD;=m]FUYm3Okcja^le7g5Ae3OdaUR=chGOQTVm"
    A$ = A$ + "^maKGAUWGBFT>nZ;hbMX\bi[e^CcZ5bYSb:cU=dRglV;6R[b^go1KWW:F2nB"
    A$ = A$ + "MkF8iDOj_n;FPKSWn^W]>OXeR[eiPmK#kj;o\;_0Aa]>l`]KE>_Y^#fh1341"
    A$ = A$ + ":J[8b#bXgL_Sg]LfU_aDN5KO`>5B_bRNYKmT_n5M9Vm:GIN01lQ]UR^jZaDJ"
    A$ = A$ + "OhMfb:S_UmVBYHA5R8QBbGJSmgZ4Y_5G>2?\UYG1V0;]H0j2MjEG;C#_nC8D"
    A$ = A$ + "ZkF[GEQ<Nh898X1Hn4Y9X5=:F_Im:Fj#iK6RH[iamZQb8T_e6Kd^ZU6:_U0I"
    A$ = A$ + "<O^M_FL6E[2i]b1HZ[D0fQhgOL6S:]KEF9Kd#ABaZU_Li26b\Ic#`X0aW^]:"
    A$ = A$ + ":4KiIWeM2eVK_M3UD13VD4]E^RDj#126;33DY2:_ZSB?0k#A5g=PBnJl49RW"
    A$ = A$ + "2PoDXH>9bT9c:HFYFI3^D134WBBGCP:MJ:iBMg\M1Q<aRV8;_X0MZHaBA[T_"
    A$ = A$ + "LUb5`0=8cT>3hKJP5S0aQ#S;Q0L1OY1`B#H8T\[09bAU=;]PJ^RUbKXP0<P`"
    A$ = A$ + "U`CC0X8#MjDZBilJ#YDX#?0F3Q0`<G>3=ETU[:aT:\OoQCc3#e:WG70M9Q#o"
    A$ = A$ + "d7^P8je[2_??EZhaRWRPR1EY7`PEX4`^02P5X>La?03Dn2FjRXe40BSUUQ4M"
    A$ = A$ + "jTY8iah^0D#0N:A4D5MD7J<h>dPg1B13QLB0I4PSA3mfIXUbE^FUl:\ICW6X"
    A$ = A$ + "S0gAc:IDXL9He1`M1h4T5I#XT81H>8iidU9^T:Z^96I:9=6J4P75nOH40XEJ"
    A$ = A$ + "B<4YBA`:KF03<3H1:7`356bBa[HJIUC7P?Pa4P#A1#G09HJQ`AIG>G`6[3Zh"
    A$ = A$ + "20O3`a2<jdNZ]RA#OLPQ084I`L:?0Z1N_XCe9WbM>o7KH\>##hiko7i]am8e"
    A$ = A$ + "7E32l9D<BAZO9LaAkee6>RPC7c31SPA60QL6K\B:8c#Ff1?b0\HPI8>0IdP:"
    A$ = A$ + "ofFV8JO>2J6o8o`ET]MFTh]mFA9<fYn5mi`=XcgW=inmckP=ZOIk1A1WXT=O"
    A$ = A$ + "S2Oa14PmQ98L2fLHL49MB\734^]B7ZYnbJ0>?KKNhC6RIaAnS04Q_?LYcZ[A"
    A$ = A$ + "A7?0mXd9\[cjkWl]565Mh90AaO6fL\bANRS6`k2]a=b=lhCDDe=#P[IA]CAB"
    A$ = A$ + "chPe4g6FnlidQVGbT:Ej<X_=#d1DB5[D]B1Mn\9S6>::_;J?=leNaZ=JeXT6"
    A$ = A$ + "MR0[hfKDX3:dJ_ZEUFK\gNm:;4cc<C>mBQcbSfC9KFKcSNlcN`FVaWO\_hRG"
    A$ = A$ + "OY8D2X?Ed[]cSNkkOmAUB=gUn\?oZck?55H^RFM>n5_oKOinFaWK\;nUC<g:"
    A$ = A$ + "QPT?\6]>hY_k[OmMJ`7deDC>e<^FNEoA8DZ_oSOckNaa]d8R\f:;=o]VJjIm"
    A$ = A$ + "T#[kMOiKOemg\\:\7Q>a:CMi;>f\ab]cCOc;_kjFRl:i:VSfgTOnWN9GI[Nd"
    A$ = A$ + "cOnMG?W0WJaJEeC]`Enl;?ObLm>HoNUeTd:f\E5ih;>i4c5R_HcjiUIX5;]a"
    A$ = A$ + "QkeDH]Y^jDNI[0UmY2i;2OcknR7_>c2SMUISKf^SEVELi9CUklfgM\EXIVJY"
    A$ = A$ + "DV=Z`_f=WdEZ:gm[nVkG<QWEBXe\CnTgl;^h\4]OjgnV]hli>RfVgk`B1^d_"
    A$ = A$ + "jgL;j=OegnT:aGLaHi?lAg>gZGlSobE<^m[NF7RUVe;o6?jAmb>mi_P;QmOk"
    A$ = A$ + "k_SlRGM2_JkodkF`gU?o4AKlRod_K?Zi^b41;LhMkTjjOj5VSKogoWOKc4c?"
    A$ = A$ + "m:2Mg_;glGhC7?LeWlkoj]IFIN_2m^cN6;OnOeiGDk^o^o`mDm>m<aZLl3jA"
    A$ = A$ + ">eWn9CVISgn7OAU8c<]G]mNd]eGhloj;7\fcoQ_oHQUVHjhe>j>=RN]?i2^4"
    A$ = A$ + "?hKnnWG9n2c5>oNgY;aeohOmeBdn5OgG]1ibc0VfC>bHYco[^PkL?lgmeK#\"
    A$ = A$ + "`D;b^m;Oe6a_j7oYc9Nk_m?L7iUWHBoi?nIk;hjBOiLL7l]oY7K^j4S]Xh>?"
    A$ = A$ + "i8EGOai_N\F_h7n^S0M>E\bk_O1oGkc_RKe3oZoYkK6HfiRGnh7]IfaoX?jB"
    A$ = A$ + "n[lho`g^7kbC>7ij?iIKBNc;lIG?Ac7mVkH6Jni3Uk`Wo`Z1_fi_TKUmOa;g"
    A$ = A$ + "Rcc=W;JQm^cfJQVO6?<]^cmjbiM>GQefj1g]FlY_bh[X\kcoZkG8bLg`EVBK"
    A$ = A$ + "]C=6o;_B<UVK_EAb#1B8GKS=ZBkNb9LUZlQ?in]H3\d:I:\eQmdR^\;_YeKd"
    A$ = A$ + "]<CXE3#F4`[fPacdC]HZ2kLdVVYlj9#F0NgVF4nG=8QN]6iY3jNeHb]_mMfd"
    A$ = A$ + ":UkIV?P#Smf_]JL_[4P#_a6[GR?IT4d:i\<48R7;SDQ6=:8V>BhT0jd^M[X#"
    A$ = A$ + "4=JBJI[2VBXSA#d\HI;IZdYb#;KJZbS>=2JaLEKF_PDfhARUQEFg4QE0Z:V["
    A$ = A$ + "#N=^<9RUTP5Z0Z;10lU<:E_Z1EXElh?970MYT639]LQJe\HR\bb[4RdXFkjF"
    A$ = A$ + "2TTlVeJFEW`[[im4S_H[^];K8;YHHI:C6M]e2VPBfZ4Ddf:OQl020jTA25:J"
    A$ = A$ + "JJAX?Z6]KEcBV1#JUUR6go5ULa>Kf[V>Mb4IH4UiB7d[_8<5jMkSf^4K\0Q9"
    A$ = A$ + "Db3Hf2i1RL6]fNkfi5bV>[PQU1G2ONl6QD[LS6U=UhhTdc3QQ\AFcGPhdb6i"
    A$ = A$ + "bIRnU3MD<lIRhO]0#7M:ViAo\\#X?4b4JE?[PPVIF\Jc>8DajRT91LA1RTT2"
    A$ = A$ + "1\ZBmV]JDY04992_bR;]J4:S6K]gf];1^[\V^2CD?^FHUH2U0?XNNE840aOQ"
    A$ = A$ + "H;=md^2aGYgf[GF12e6EJe^\#HGgh6c7P:Gmf]ZVg#7eZINEZX[^h2N2VRC_"
    A$ = A$ + "Dm6=ZE^Da2FVZ\9l]`<ci>4E^FK^cV];3He18K2I2\h\c]L`\j=gNoMkEcB5"
    A$ = A$ + "1IAP:^_UFHieB[DOk3?HS:jl0<9`dX2kNn5F=Q4dkdF=<5IiDbG]NAQ8;<=0"
    A$ = A$ + "gW]#[eQe<55cbX5?A`fVLVEB8T_FmJU;FZF[>][G#8nbC=neWcG:ibMgJ[N]"
    A$ = A$ + "ZG]Je:5eb^j=^dG<nR9ekL`Akg[F1;X[_ZjILOm;?fdNcJeNkMfXEeB517AG"
    A$ = A$ + "P8TkiWOYeB`XG^ej[g^N9;30c6GfXNGJA?1C;FXE_e[WGGEc\#YRjD1VOZYF"
    A$ = A$ + "0<^fmjD[#>;dVU:ZYlLc9_UKLCge[D\#i6Mke]N>VPc=nHC^DL`[gOW^E<ed"
    A$ = A$ + "cG]AESd;=nU^flATZ]i^Ke^JA0\JYLBYmiJ6GNSSPiG1R`UZDYD>5NHQfWWE"
    A$ = A$ + "G;:YBYFMJFD7260DHC^8;>eD^2cIE[I3Xe2ESRPJ=iC7bcB;_JXD\Z5JdMSN"
    A$ = A$ + "=;IX2eCe49l?oDgLADG;k_g6=:JZ3kkPHobX5:2UR=kd^IebX5E=AZ4nM_TK"
    A$ = A$ + "8HHD]C_>#\8W90<U>^_5G`M`dlj#L\NU2`FC0f90??`b^FdG2FcZ]k21^li;"
    A$ = A$ + "EdBU;ChEMkNe0a9U\ZgMc=keZ\1jh<YB^f2c<kbQX;\a]_cQ`F3M0\X89dKg"
    A$ = A$ + "dck;U4dldfKd^Fi2idTH9R^Z[iFHeHd6=fnf7]Gg:iTQ698B6ao:[h;<doDk"
    A$ = A$ + "M>Lo=ZK9ACT9;5IbP[jaK82EHgenmZJRBC`cC5gkB;1=K9E\mFK313C51<jh"
    A$ = A$ + "d[]T[UmWB^fF7N`F=\TH1TnB\am<k=WeC<QZkLlMf[C9M9NNAA^<1#ka3CW["
    A$ = A$ + "cN7MhVe1[PVVUQ<^g5L]T_4REgnhk^O;;A:2B>9IVX^WK^U33]YN_kM#klB<"
    A$ = A$ + "#_#:b\#?];h9<YI[MACGa0<>D[^TAl\`BNSaELS3?JgFi11c0TICh5g0\NCd"
    A$ = A$ + "XH:YRDWX\#f#^M]Xg4BEf4EeG50;c;[Yb6cclck>4Y>jcmF5D18m0X8AVT[i"
    A$ = A$ + "f=:WCm=gMkf5]iFE4Ta2;]6b]gOg>5E]?fH5b#;kJYeBRJMM[^Ec1HgA7N9O"
    A$ = A$ + "j0^GNe`IE[\n>KgYR9di50QGR918IOaH<Z_a>KRE87PhGV>2TPIehXnSQ_]E"
    A$ = A$ + "iaM>Y;THUiVMiPPe1Y7JF#C2O`RLPTGLieB`V[iVk\A3;INl9>bUfoB;h>4Q"
    A$ = A$ + "Bi^K_cjEd5#`jU152kkPH7hQ7\KW2bh8Z64XGIQ5m6W?Ok]gMSJVBXn?UUQd"
    A$ = A$ + "O[jIe`4#VP]g^K53Xi7`I`TGI]HDJEj^e6=;Z9RKb0b81KU2TTeXFgNM#KI#"
    A$ = A$ + "=YX8#5ckbN2TR?G]>MKEb#B0gQ47A4O[h=D6al=F_G[BjRhSdDV=E`EaWYDU"
    A$ = A$ + ">mPPW<jLkTUh9C4dgJQQ>f;18#[0=iSa[cAU:B`##jM8;Jcj5=D#1491FB0g"
    A$ = A$ + "J4X;K]2E[E]4T55gS3dBKdPQRQh^AkVXS?0eWT83DS`[oX4#ibF0I8[4Z_7F"
    A$ = A$ + "bDA2h?DLXEnb=Je\FACEla?W=Ml`137WP7B^gYEUL`70XcTU>Cd0[1#C5]Ze"
    A$ = A$ + "^5H9bH0j8Q4<#hT#Ia:=JF_D>=L7ELd4a37:LR\8EfYIIC5AlI`cT6c=]JYV"
    A$ = A$ + "MkD_X>j4nQ6kY#EV0OG_2TAXFN=9L[1\IS72ZGUNXQ`S`l3L7J=8BaIF[cj]"
    A$ = A$ + "`e7AC>0FK#1`<28W\1\8h\nB6?8HfI40c6YAdGXbZbL4AmkcO<BLN\ZFZP?2"
    A$ = A$ + "MA83IQ`eHe:S]JIT<D6LR2L6UKfZ>DQD4MD[Z#eo`n34U#8G]fPESZI1UWd4"
    A$ = A$ + "9S5H]0a8U;PG30\jB#3^:P63h?HL:ilePh44#`b#V==FSDZ5a[_8cCYoIHPV"
    A$ = A$ + ";Eaj=PJg#C]8^1bA240]91Uj67W#bF6h>04X0k[NmbiDU#74\Q^4ERPn36S#"
    A$ = A$ + "`\BmJUbY:S6=Q^Z04F34>19j49Z2;jbBhY3a3T32;Th3ZXPQ2JL>Hc>F#P<]"
    A$ = A$ + "Bn:E;3k:]931ZHQ2618KE^J9;dWYhQo`V9:\nVRA=OU:XmC8ZX:19aKRIEcG"
    A$ = A$ + "^LaLJ:X1hX[:B1XW2WPP3O8EVJ::hIM;BW2]gV0fKKCFFaF8YR42fbSV07#f"
    A$ = A$ + "fK<d`29B2BPLiBiAU^0Z6ZfN3#F7Z^TgD3#IX[[9cR<K7bU`Ta3=RafK0b56"
    A$ = A$ + "Q\8RLXXY#PX:KC6M#52dYS5>Ldd<BV8^cQ6mT6Vkh0iDDRPUD^X5Jh#X_cH9"
    A$ = A$ + "B49LD\\;G1TR^=g8bHkfN2S6JfZT5mM3n3K4<C<g`V4AFWnDiPFlLl7T\i8C"
    A$ = A$ + "69LhhIHaTk;49^\X0KL<gHQ0^n0ba`Lk8KdD0#29TS#0T]i<<#3f2n`1]<47"
    A$ = A$ + "P#S>^]RFV>TQD<Q1Q`8I0Q`2fTEUi]3:99i1dg8#1j8U:;015lZ62NJ1K^A="
    A$ = A$ + "ZcPlN#WX3E3MlUfBA2kVQS1hYeb10\]0#^8bLTYR5>B\d8P[8YP`o2TiYB7?"
    A$ = A$ + "Jdh8b8QW7Ag0\#j<90bYXh?3iH0Idi[Q5NOb49R69JB26A]n\SV\2=1:3K<K"
    A$ = A$ + "YD\HATAR>QQ\Pk7:Jb\XIf281kCV<Ml8X58T3E\42[K>3``YbP4N2T`cQ9W7"
    A$ = A$ + "4^4XcTaR41Ki#<70^1^Z^2:SLl8P>9iE<QM5Ua\[>Dh\XH^3I7MJ;L#WPD6`"
    A$ = A$ + "=FWI#FN1\`cQ?J4\>SU:[m9MF^HN\5BCT:^So3OC0h7;HQ8c#V9I\X8YP>^E"
    A$ = A$ + "0M<Jo_\0;DM075cRfK1UN0PGjXSnTR0MHZPDT<0b8lHPoP;VT8F\hXC<=OiJ"
    A$ = A$ + "eZD4I:L\dTXeRHP79W[4Z06BWl0IT=RFAQ_QZF_6Zm49dlLQBB8G:;TYX2J>"
    A$ = A$ + "mi`3<fVm8`^85XhCSJU\#V2;3=VmHY#WiJm6e;3I5`WUWcRAF<NDPMD]:N`H"
    A$ = A$ + "bRRj>BY9`>HRl3H7n`5JM\9T4fdA:X=6X?GD1Hi=ZQ]5KY43]a0BF0Xi[F2C"
    A$ = A$ + "6\5`C7DY^NM\7Ic>lmBX8>\S\5d1PbQU>FYj5a\3V^]=RfZW0maHI\dea\cJ"
    A$ = A$ + "7fQhUNQ:XX>TF4OlYXhK<XYCIXm?Xc6TdaTa\3[6Z#JkZ33<IcT<Nl4#od6#"
    A$ = A$ + ">Zbh59NLl=ERh9P_H#I6#k0DAWI;VNBd5M0J;]<TW7=U2\H#lW8EFF#[U]cA"
    A$ = A$ + "S538nDhk>1jTg[0[eh[JP=mDY9IQmSUa69Ni`Fl8fE]IgIi0IUYBV:;B[hDS"
    A$ = A$ + "ff>=Xed9CJ;6h;<lF3di3BSIWP6MaX6b>3J59MZ<TX_OQlGf^:WM#8]mh1`Y"
    A$ = A$ + "BA1BdPXI0aWVP6UF3Hgd1N37Vm<f\Sj74O;3h`QHPMd9_3I76A:D0IdUd0UG"
    A$ = A$ + "3jHJ4fcT9;=?:UTUmR:_SaTQ0Mg8#7P?T>bV>bW#\;XHHQ>FCEkS67K<I`g?"
    A$ = A$ + "RLiQVoejOCbL^Z2RZVf\[hLY1PNR8#:E;W5:Od9HWT1TN>ll16Q\mH3#7l0F"
    A$ = A$ + "Yh11P]Ad5Q0M[<6856\D`BgNV<fgk08>R\AJ>9ESL>\KOBoTP]h85Tdk;6T="
    A$ = A$ + "R^n48YP53VNOfAG>5TD>1kIA\KP;IH?d0\WRRSSJS>BY_aH>T<Go`^8VM\Dj"
    A$ = A$ + "[DLP1L9C7URYK[D^Q:efW#cNQT6JWAgV<Nh4XQMP>LJ6kkMS3M4k3U>^8h8B"
    A$ = A$ + "93FjhcfFcQ>BY8K4e:W^3IiQ635Ze:mQ\?#jlf3gaFYf63ff5aGS5ME7[Q7O"
    A$ = A$ + "2jDfgY6Snl317TaS_l#XA3R8[<dWX0YS#F>PM\aCTU4C73gANHTl4dE6\\J7"
    A$ = A$ + "b68Nd;8LBa[Y>Rhk?c`ndE`c[Q1MiQ`3DB73LbnnSP6cT3ME]QT5\WO8869<"
    A$ = A$ + "^c1FS3M>7j:SHm8[QC4OoS\Sl>kQQHS=MEWUK7jhkQdXR__Ja\ggJTkkEhkh"
    A$ = A$ + "ST]EZ<HY2=VaA\Bl=AbfL`3k3?U\nT79hdOjI>gEXQFYj8gW9Knk;NKWZo>4"
    A$ = A$ + "Z1FY3M97jDXK<VLoHSLo]g3]NenTQe#deHc98hH=H_eAlH[di6=9i\Tk#7_8"
    A$ = A$ + "i<Y9kPf`;0EoK_3\oVJ#X__d?imUBen2C=REfG[8jbHiQYSMZn\gO2Pfg6[n"
    A$ = A$ + "c#\oM6J#`ai2m>:MD\DdFK37T8JL_XIH?:kfdY]795V^Tc5Q2CWQ[?mnF9V^"
    A$ = A$ + "chGMXKgO??GokAEOaH?8DDiA4MW1c9eo6?Q5_=MWIAJKm3X?H6UmYS^dJ3hO"
    A$ = A$ + "#`L`lAabOhUHVcI0\>;ZfF_\mmEK4jmigNlc3_bc>SEeNHc\S<bdnS7]ohon"
    A$ = A$ + "0da:##LDcdNlf\lS#_ON4fCa^b9\OWaL:;gOLc>fo9XK?ELkk\]cCTMT_ClY"
    A$ = A$ + "omlFJ`W:hh9k9Y;i`_3M7c\_mHkH>cLFI`]aSUm\dafIOiHCFeI<jl37LZmH"
    A$ = A$ + "dEM>f8k5NWa[K?<MW;H8WSmKoIhPT9>gBm1?h4d7HomcI8HOSnhLV_lYYk<g"
    A$ = A$ + "Lini<\ELo;?Pl9Ygofago1>9m6\TeoCGk;n87[S1=be04SIb9b=Ri?d1j_7e"
    A$ = A$ + "A<BBWTn0mn1Y?`c>QL>9MF7mNB1i\WFjd6DomjW`3`X4?SP47AaWA1h#g8d?"
    A$ = A$ + "m;8MjUPA4TdYhOd7<`B?a;<d3h7nidXd7m_Z3S#GL`=\HXY>l1LWV^STh6\i"
    A$ = A$ + "J4;EH`M6iTFj`]SRWHgk7dD57n2Wf56i_77WbW?]YN29=Z;LJ9=jgISn2W98"
    A$ = A$ + "=b;8n1XO2KEDLdPaIl]oMe`Il=79m1YcOJ5LB1mSXiQGWTQoMZY_6>U;`oQL"
    A$ = A$ + "Q?XV7ABoHV:oI<engXVcZiANQ?\YNb[43F>OPGHT7l1d#oK2cIl1nC8XCm2W"
    A$ = A$ + "T^S6n`V:o7dD7AcSN5NnaY?j3T>[T>]Y:nO0mCKAWBcRo8J^oO7\>;m1o>ee"
    A$ = A$ + ";JD1eo2BM21MZGh4^V`O92j7CcO0j2WVn?j;LR[D^d8?h4dU>aKLjk]e09mQ"
    A$ = A$ + "\dODGh3nPoSNQcXJQ1Jn3l2oXVjI^jISBo3:Xc8Y1G`\o_dTngEeo5JBooV?"
    A$ = A$ + "l1N`O1do;k5na=Yo?HD2%%h1"

    btemp$ = ""
    FOR i& = 1 TO LEN(A$) STEP 4: B$ = MID$(A$, i&, 4)
        IF INSTR(1, B$, "%") THEN
            FOR C% = 1 TO LEN(B$): F$ = MID$(B$, C%, 1)
                IF F$ <> "%" THEN C$ = C$ + F$
            NEXT: B$ = C$: END IF: FOR j = 1 TO LEN(B$)
            IF MID$(B$, j, 1) = "#" THEN
        MID$(B$, j) = "@": END IF: NEXT
        FOR t% = LEN(B$) TO 1 STEP -1
            B& = B& * 64 + ASC(MID$(B$, t%)) - 48
            NEXT: X$ = "": FOR t% = 1 TO LEN(B$) - 1
            X$ = X$ + CHR$(B& AND 255): B& = B& \ 256
    NEXT: btemp$ = btemp$ + X$: NEXT
    Basfile$ = _INFLATE$(btemp$): btemp$ = ""
END FUNCTION



RE: MemWave - Play WAV audio from string memory using Win API - James D Jarvis - 05-22-2022

Well that certainly works, my cat is not a fan of the sound.