From 5814cd455d3804c5d910a1d3bc479445b6c40c42 Mon Sep 17 00:00:00 2001 From: Derek Date: Tue, 26 Aug 2014 17:16:31 -0700 Subject: [PATCH 1/2] errno needs to be initialized I guess, because it was failing every time on OSX 10.9.4 --- generator.c | 1 + 1 file changed, 1 insertion(+) diff --git a/generator.c b/generator.c index ee66a7f..84f8aa2 100644 --- a/generator.c +++ b/generator.c @@ -31,6 +31,7 @@ void usage() { } int main(int argc, char* argv[]) { + errno = 0; /* This will hold our data */ SDL_AudioSpec spec; /* This will hold the requested frequency */ From 87c00f8989e1484e9a28e3de632b53d7ac668393 Mon Sep 17 00:00:00 2001 From: Derek Date: Tue, 26 Aug 2014 17:38:18 -0700 Subject: [PATCH 2/2] Added rough cpp equivalent --- cpp/Makefile | 12 +++++ cpp/generator | Bin 0 -> 44232 bytes cpp/main.cpp | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++ generator | Bin 0 -> 16632 bytes 4 files changed, 140 insertions(+) create mode 100644 cpp/Makefile create mode 100755 cpp/generator create mode 100644 cpp/main.cpp create mode 100755 generator diff --git a/cpp/Makefile b/cpp/Makefile new file mode 100644 index 0000000..0ad0c17 --- /dev/null +++ b/cpp/Makefile @@ -0,0 +1,12 @@ +.PHONY: clean bundle + +CC=g++ +generator: main.cpp + $(CC) -o generator `sdl-config --cflags --libs` main.cpp + +bundle: generator + sh makeAppBundle + +clean: + $(RM) generator + diff --git a/cpp/generator b/cpp/generator new file mode 100755 index 0000000000000000000000000000000000000000..c2315d263aa5068e4f095dcdd22beb3fe857688c GIT binary patch literal 44232 zcmeHw3w&KwneRS*NO+W_NHIDh2Lx>eN>W-(DV39^fgMO7^Z`+UlQcbTGNj2dkCLL5 z6WYyWv)Pz&I9jjs(>OCaxucHpjz^d%$?uw-rN1l-rxEj>s#M?e|xR9PrmV+e}3r<%Ze)k{)Wrx{ z)@yOwxa0BK@*6APQMu(-Qs-Zh`REBT>KQ^J@%XmNx^44CBz|f>%`!M_vzFpM+py#D z&O~>oK>+ggjl3S20lnhwDnoq9oH&tGE*g(_baw6N2ub<+mh4r1x0_4`co3n$=zEnR zsJ?hpq9vJV2Q6RUo%gD~2aG=AEcftQVBhY>#(1K;F_G+ycQ)+E*EiX%`bLZr;`8){ ziZu|AH@3BQ%oSk1zW#TsKDGm1#8GW0z2fn<9e>yuZ)|Dk=xA-&lgQUMWb~~x8i?m! z`L-H;dlH>ZRJWk~CXK!wL4IGkzRrEgh59zVSM&QeV-)e+YoUFO9i8pXt-Fm-etuI% z-))9ZJoj3tudDUm=GL9@=GI+p5X{&2O{4EAqlEaWu6R7r6yMd(qLV9M-{Ae4-&&)D z_^Ilb{k9GrC?4NjzOCFuB1owotH{uR%Vlu(Tk2h=RK#y>iFfSVv!ksgp6qNtslGrR z_2=5f{WdkD#Fv=xi9nEFj(gOYZ{LW~S7ss;&$SQa6WO=3p|e3^ zF44e!47qz%~z1iGn0hZ#v2KULX>5o`e_X(Kif)>RM zSIWAotE2s@mgXH-?cCS06F9Fwz+H^{!Pq0qKhs@y|NCD3$-jKV`q)n{1+56TbtY2B z{gwbH4Hxp5V!Veg5;S};ofvNNm`7^~Dd(89+Zr2M!~$5cb#wKVrK{JhE?Et8ns-nZ z7p3cPhw&}eWW>5^>%NZ8#Gb3Fn|HJ~wC}s>22L&awzc2WaaBcIV_U;&nQKV6>h?r? zM>G2WRprV;eAQb5IH$K881x2Z0uvf9zkGG6v4(b(<;X`OpI(wLuO_YDl$!y@Ys!gd zEx!Y`{()25-=4Ukt*aG%4rZS$Be^orpKqUKJp=0e{Lmv>U7l;*3CefHuaK`RPi0?u zGI?`z=ZWm9xJr4(o_YDU>QMc$Q|YZ}Yfs$R-jHl+ZtOUbc2?h<1k&KeeAnX+>v35W z_FoY>Mf*5)*;ZUN$A{iG;byz<{eZUPRR$je&g*jA}44m%w)0{U`gt@#y1~*>h}ve>S@n8-MnJ zW6`^gl2v|3`R!Znp5xf2v#Py~s~at=$~(h$D<=>UtxN3&M|R=JOt&Q`n6 zXWuHsqqd)({O#vBDI&ZPvr9Xr~waZ-E?)UA{!?U=u|4;{k#-(2c&$lDxpNqK59z)n}{EF?Z_>{!B z?uhLz{TPX(OUBrqeqI1I*-s;8dEw`ey|esI&7;(Yx9&z5UikSHO^7hN;z)yKJ-+l# zgd@lkp||mFJhKg0BSqQofReCSwxeKBohxhHzpr-pj8wT#RJ)0xD)&j--9KLKZ~PiG zSGzCGt~e%TgF?7#tlIshkUlG<%E5B?N0qC7S{@m_*}v}k?A1_T<^DaA{^Cy9?_IbC z_Shb@xj!rYN{u@``|T?CDch?YbdN&lQ3&1aZ|kDSNa(BXs#W8*`%OD?w94Oh7pv+n(M_d4nf*5K?SgN-Tg?4gwfiEd?oqWg`-wYXfjfa# zx{@V#*Ie1Lxt5zUD6Vp!cYk}}w~OBM+A8n81-8F#{BFzo(h`(@whkIlrEhaDJRghL zenrG?oUsr8baD1#QN8r}U0C)0it~f+8%w|S^Rw((R^QX0Re5Vsl55A;f4lR_pJ)G$ z3u@V4+)itj9u@Yvwp(D2#tK-+qf7q=G`9WEMtYZh7-2LqmJdu}{$^L)D!E*jM6W{U z`d*xhM$2cvi~co+LZ}BFQJNt|qQ8GU`voMn%NgmaB=*>1=>F1mczp2+Jj#a_FNZyk z7?DdP!ovnTANq<^-)kl9dzhNHv|2zhk~xdU`0M@_LbEF}BD(HLbR1)nx9)p_{K$5X zz?y8OWP3FGR=~>Ae`XJP9ism!Bl;_RX-lKCD;@^U=Hsv1f)FZjc10CMkcW$5(q#;L z8$SWSEPCr+Pl6PJG`fwQ#C?&QU2%~}uWOSqA_H09aq+PAVrUoQ)TUiN86Np@6^f45r|%D-p7&^Dlh0(yoxW%hrW4q@^R$ zit|+9Y!!ID3K*`p?tGHn(Jyf&SQ1&WNacSZ-D=tI0AOZl;}b&OxF6Bf=mRRCwE!D` zqGj^1kZEJJzx0<%>y^06K07alx3QEa`0Ks}^6U!LzwR=Mx}(+Z)9kb3P*dd|L)I^p zxIe9SpQC2)$_wwJc|W(k4PX|4sYd;xK8P+jnH3U~(U8_&K~VVrGP~jrRi*9z5aY(| zigyA<3!weBf8j;~_lL79)(XDjpM<+^uj+>~sppNYDpuwGx~>znER|MZwpdN8pY^Sv@$VUxB(W zARsodXcmbsQ#2SC7u`t%nDuG&DeCvuJ*iz9#VYs)7!2wJsHQ~GApHyLBqe0}R#hoQ z12jguw{ahVzwQ!%*%hxB+PaOZSaNZ+%G(dQb>%{1&J3Xp1d%{KpPyavEAqYl81I2R z1Eh2WLuhf%5Zc$*Co|B2<3+Z+e+I%cS#In>tmv+zg%@qsnFjtqbP=fTaO@>c@H6&- zkpkOwY{8sb1$7GQ6?7{|DHtH|{XxO}5rR=?2!NOEDaG~2l`%HQP)YP6VC835jIaDEcQ(Q&~9p}2lGu~8=}WML>Ju++rw(*y*#eyv2hu~^b@U$hS#j>2hLNvfMJQ;j8| zMy0rETN$xAhEh-?ER-OAuOyWg;HIODST@EibZroo#8j>bv2eAJ1;w9TKwv^eTqieORdapz5d5#TEUEzJDOJ^;qrdAY{1(@lfr#t>8c*9B zmZ*Oc2&%LcWc-G6nJ6;IPGpSbfsz+^%VN`*GXrnzr4p zNpJgcxAF;h{6k*N6ED2zR>ITjngL@Rof9_&p2~iZaSt4e-F5Vp_1^=>Q3dGV?*7T_ z^)*2Ty~;^@DSHmg%^m|8DoZrKmD6qwOoD*)^wI3cgIFfF`=_%$%JeB?U5_qsV z_D1cVXIT_@`B-8{AUVu&VzZ}Xke3l`@ht_LU0*uBD}7`H{R2MZ z_7U`vN$oo|>^}%sqN34n-0fKu!1QLX03f@0LqVa>(GAE13b2fsk+Gh&tT+mkWUs*W zs|n?Kxv|5c9bRq0s;|1W1wk27tk8c@)Jk(~n~xo8va{-Nxzs@OpGqi$-3?4HBg9%|V4rlA7E zSl4v65{YLgDR|&mEmA(g_yGBF$W!OY-|=Wk_F>3p|Adje%8@WPsB_jQ>QL&jl69U9 zy8@D|L`y)6@Ob0((cS+O6$z1+>j;FwL_x}zpcv|0j&PSZl z%HvWhk1?i|dUuQimhDRecPk$S)|>s*3sNnWlU^4Fko~>cPhz;8qC5&^AbTNF3$fA4 zL#*9w8CC{#Zs<9d0>O+y{cg>lN~B`&C6dPU_V;HitHQzOV0I}-F-d{DKZV?qLQQc^19 ztYmSPkm`v@*bqD$T4T_9*gpK?V*Buq3+$dL7B*%@MuNNoUlQ}P4YtQjm5sPkk>{ryL0B*4B zj0-`5QR_@7O@Ql6Dki{nMu@q?StSbS>5g*I0Mr<$g%AAV3>KL)BqBa(Xd{>;ex_2a zDSuj-3eb4GGeOLa;rcTwqTn{<=tu!e%=L?(qY3FE0#7kdF*r=hTd6$3;9v?7Dp0#r z3cvYZ2%J6w&k>9b&UN~Qk`~Z&q*xM64=7Q9n;uk5z=pFBrwlp^oy%SY<1qh-)pmi6 z>FU957Ry|7|Dt%jQtfG#YlltO+N)l&55Ke+U8Yx5E9iM#Tf0*tCQsWRvR`-+sj19d zI$kY0N)md8Mey=r5x~-r9eD{k9ivJ&Jt818BncRzKdzVpBa*g$%`!1SBeqZ`C)Y)4KkI@>E25UPg#msKiPq^1M>A_au^JD0>H9*-(r|sfzv> zc^O0HNtwCj$ge2{R%u4Ez3Oo;ecF-dZ1=W;sYl_=p#>(H72i+N2tVB|wq#UECMMY& z7SJ=Q6+LV#Q2@Lc#S~m$?Y*jc)u?@V7K71GBWUcR4{uOVt2LEwVg%Q(mw3KlURp5M zPYEyGtvtaz#a!o*#_Lm&UJ-Ew^H3JP5H>^#54>8Mjw3oSJfXOz&Q+3X7ZM7G9L$wy zEGgz0WA)*wMJQm+db;mlK|FAz7|r4kgKoN?z|Yts4F@h$ES2&&dzpm33NskWuG}=g zmHX+KL`si~CVz~;Ggx|3i4#gx>@1r-4R4JaZ%{=BR7A1#h!TgCs2Jj9BrP-)M)ihi zWcH8CgSP?S5&Q94%>u-G9b@~M5&^^Y0M*((t6e8aqU$sX(I-}oS7OBoYP>T+&^W$G zxqh#*3CQ-+j8@}f1Q<>s1cMZyrAU-2cYRgQh>lsKcF!n7NIFJYOp6-DV76ikt_NGJ z_EZW}u(B0EzbL74%TQCb!ZP3*7$J(?x1zM9x_chSz>lUt3pA7|Vib3{Kw~PFDOOCu zHBf9RL8Q=26;r@uG}>FyLZZSl;5?+OQ80%E4K6D!IwPRxaqVlFX(bB40Hc@yOiF?c z3kW;sgc1d~!;^{$a5IC%+~ENs8Z0xUm;z==8itnh70rzm_au#2WXcA;c7rdi6Wpn~}>99pf)Osk9l zq^HeCKse)C&(prN05@Hrm;$sg%U*Rve9iUWEIe?4j!me$NJJe0aI^&T1%w40RiXg+ zl8PxnNyLf*ms3lw@ZcET8Iu4O`Xmp28KaFlB>>{pU~&>gX;RRFY6YZif>9?1Al2ac zLOJ~7B{KOrSr+ak@JTUE4QlBK@Pvcf7*lm41fDM#{cWr?3T0TpTo+N|ghU#iR7}8z z*C5U$QVSgwA{dHa)=^QpJV#|nRA&T)j>-fzV&lv>Dk|fI>C8DQB6#_*2!xKxj2NAs z7LdtG0=^P`3-4sez5*kXE)k*u8Uf>!5EZz7lo*!w1Z0YY=L-f8oml9o6ev$cl!t+g z#L!V0m+U>s*$tuWU*lskGz+6tMFU4g@~n=EmV!7clI;^ZD*a3d6Bje>rw1hO8C8-= zieg>l<|&5OsPRTr zWJp9D!NgG!LXM*%IuHxR6*wxYT}UWAa@0{7WS&DuMYEnBnE_E9l`#h0^f-Z^=@w}^ zDkD-UbX0~UL`Q|8?EUMddPEajxt~r-q_p)SHTg5tgb_xtbdeGZ2=Fc;Sm3DCX}n3X zz@N}~ilwKOm{p=;bW|iQtiUmaSqp72k5>`e5r(01hj*3*$2^^Ieqrg?tn2Kd=#T0N>FHwR> zxtTh}6fhZ$Mn|PqSO(Bh(I^+7#>D~*6dGAT=%_@MC;$VDVgg*p5^PvN*f|T7D8L;q zQcQrGnUtIM6r!I}UbpfD!<(iMbC*D7gyKw#m?M}j zfmpwxU1w6Cg_E257w7j%L#ri!BdZZ*6uzg4D_kD|*^3(MKGJOJuM*uJ- z({Oke<0Qg46QWNHp2dV>1nOC69ABhdKdWp4^(+`oJ&Q?%I5i2NXTc~Z@hti&b>wMivly7PU$gfB{A^0j^Ub*sy@GbCxMl z09M--6X0fwh+$Pnhz83PE2e;1vXmfFaAp)!z$~c}dKOV(89>iMqljm5)#_Z&;t*P~ z>p#l2><_d3WedqSo&~vqXYpst=IB~3POlCI0z%KCPl*DsR@hnn8Nh`?642IP^ z65VuCK&D9}2^M-5^=SE_XF-HrS_J7?2thoHIO9ZahAvHhD`PuUGvD;(vKBj(N3^o0b%9VDNz9YYQ+>>Z+q9+t6s=id=~Aa4%0Ft zZ#N^jep2H3f?Qa0Tt<2kwYTl2qq)15OPLd6U$~1nZ;+-?vR86 zQc!}BX5ASSm3Rf?G;KBsU1x~Y10z_3c19#=XN&;8Da*}0oP7)j8=z!FP-lWn%rpS% zrzypCrj?Nm7^BW4gW{w)q}qokvDh-2{WA4o`IUwnHp3v55%^9$Q}TUDA4`|QOA8U+ zE%(`7r=Gxb1XE`zDU^(WuwQp8QGlCCDJEb8`j1lr)rHPSaIglth`bVKN#*jKr8-qD zAas^iisj)ljLOWVGv_Rc;N`<25IReTsM1aM3CQ$H0=^Rce#I0Rk@UC_4bTW!TNR=L zcmu@nhAtp8C_G;<_y)v6XK6rrDxy3rzLFR^OHs+*ljyJvW#5e7%Rn(2r79XYOHyX) zEY*o(ah4?8^PQz-x?dEN^HqL~vN#qaQ8KC|Q$!vHNP@7-7AsMJtH-lE0~R_?#f(SgNK6j#t? zRlAT-c;u+FRLeYv&XQ(5UC$k8b(WfBdpezzJ?XS*lTq~AVu_e3q9zwk6TKxO*%z?Q z9rQPqm&KSOk>B2ry>V<@6K)?wcmQF*z(JZ}|8=*gFs^k=k_>L|gJ3TN0qGHmDlaXv zYDo4y`H7<6GrsSuo#xCyT8QR=qIVvOyF@cqMxckLY|zcwC~V7Pu|`?7DyZ@qmA^pF zn)&IdB4r+Sq8M^bde;m2m_Kx=rIITlFF+(7rS}dqYsS8 zUYe#jsSRR68-!v`RxqYGu5@9;<2H0GelP@;zDi(BRY8?ct9+OuhHkRW&@EA&F#&p> z6-6Z0qz8nU9#oN(V%-FuqnOhx7;Q@`UD#OeGIYEUF(kH$1h(u|Q03DqzX*%z+5d5w zX=qc}fYHsF0vO`@OK6U17+rx7Y#`TDF1Bcu>YZC*T;X^EItkf|pIFIqr)Qb1-xMC7og9eOG=zs&Jeh#++pq^BYT@l>Y4%Jo!^ z1J8c{2b2#+{CS?rKZHdS=GSwUAPoI10$5jvY0!1HaWeFViDY{(#Sm*I=3oP4KhC=F zz8~sGvBHIz&Lr)`JA{DYaRSd#fbvKyefv0i?-MPADA* zJ(nQe>}&9tYQ|AEZbvy{oKNGjGj9y)dkMHmN!<;c7UPLA?&IKmx8%YAbN0iW2HH?w zPdwke!uEB*q~wxXpAWG zR0u&W~aO;QI-tAng1}B?`dg zq?iCqC&XMorbL6)DyD!L6yvb`r^5BhR=^BuG-j|)SOzeI8U>{-zH;_sQFH`3SZ4@* zB%ozmGTZA=)^m&p!0y5)CDMnWwg7!2cj$P6L&rzI3)3+)vfsdG?uRCG9ua2^_V=OB zW76G^SsJI=fSdZ^{}gz2!VSyCR3mu3r1_FADSk z&#zE4Nr|Jt-Hy(TljYufi|h^WEhsO1bOaK0kl5Vo+yU^AJO?6$4jgJz5JSv8FXYpP z%oMsYO3oa?MhN~x&yV?*fP;lNvyAaakM?0KVA{TXcQKB#W5BMsbzEL@1h)}u;!tIexD5b8Nv9e--fs0-JE_yp|e-d zk%<$b?->0eoE8wa*a0O9z?n3~1Z+5~@W3EE%#$2E6UD|E_cB9_7{0iSh? z3XDj)R)_{@1UF*~Q2{!iC`*?K$dm{#@UVp!zH+Qoo&xp0aSW3-ull++Nt`J&bp0N~ zON$0CBXPnPlOoAIUrZRvKBDI$OwwBF-wIENF-&#*1|K`(Gp5;AYbiY-O| zKyS>#&-Ashc$ya-Eoku^2XO0$G?=Q>7L~Y1AkR?t5&XcS?aS*`pu)rZo}6mO2L~Pw zEz8F_{8)e=>hQohJ1qQXXQkMq>B{j64rtp4AT$V}0Vo*(J_MYDzz`$hoj@X`B`(hX z(1s%2q&QR0)ll7M1}tMx(G~l4Q*{2E(Dq zX9Ua*he{kFz;LLT0JtxLDG0rS0VN8+NeaaTU>S%QTm>Z>tXDAw%%B+Osg(J=51aHN z#j4k6tolBo8NdvRVwScxMGwcxrtr37j;Wy);+PuSqT$~|KG@dO*ZE)wJyn~jGcAqQ z7Z7G{Mu`H@EYxxZnDly%%&`95bXLR+$n+7@PszZW5G*sUngpAB<-xmt;lWGP4tbe} zUnzpDSzQT`n&p~6&aBdNSQEwsgAd*?iqOd!EVmppl*~4F-oejP>i^7k= zC<4!dpBeEJB=cG>S>V1)H({6cvS&bE&mHV{%g+UFFcMUE=n=K3%-~9V4=+0 z^S+nF??3R3*d3mc;ah<_tiG*TT89InpXOnj60a5;BkJv{kE>eg#szqq(1DlV?5B{;*qgL}bd$1N8Si+@P+~IefOdTomMF}gjZWr95{n>Ey zOTGq%_oTnNVSCr->``+g$K|HZeyoHb%+(OD>kw3r$a|FAh4(6aU5sV>i?E4I#|_oP zAMA()^%+IvJ|xdaikJht& z`;`;be&tZL?+>8`R^#`~q;(EY2*`{JNRJ87pDYPpjJ|5#v#Z^-w2e_|(MS^ZXM}=Z zjZiJpX@Z`V5o{DbE|T{$nx4Ey@q;RjJ|gk9%g>mIoQqoIYc;D6pR%KdQI1_`4*Yq6 z?IYFlV^aL!7>iCI1x<{RyFAN5{?qOa)##LdQ^)&et&fN9fF>m*l-nYBus5hGE5XGM}Uzq4`}ThVCb zv9nP+ILwWNr;;>cZh;ctebAhj`xO;@=ExMxUZwfC8mq*TtbA4qb62W}D1@smm?Vlh zfoY>vz%UC0y7L&U#^`&0@cJM8cuKJ(xd{E4 z%`vAx_Z+u${4Jscw$Vj!CKzzdNE>{AESBRHPctC7@^pt3OG=_Z0e*o-KCR}*)2y#M zqW0mR0iN?s3HLm$E4)u*g%@*&>FONMWQgOqhR@g8W@PsX)|h@5tZcJq4}m%&JzRPt zQb#QyjT@u(Qe+9$iqJ-jJ3%_16h80`ZDwkzuAj)xHU~nQiT8Z2mTC9UpWuxFvqiewdtn0LX!e(SidniHj*@6;D8K|33>Ug2WPWc$e^LUfZ86?y5@5bmSIm63 z?m|Vd(`@65?J2D_29Gg_SK;9O8LdS}{_J8}wD9+qw7&nl=i6>AdmXCGn*J-FZ!y9C z2j|+PR>U-WSuof7YKzchNW+wIvbh$;`G0nv{Q{REf_e4?zt=HWpKX-PtIyou*V_Iv z{2yZ}9@jmG*`_WTz>rYK&KTAn3_`M1A4(uvuqYnmy+N_Qx2D1_Lr^8!Gz> z4?du!DsziWzVa(2D@A<`dMa+t&2(&noh0tZAR)7%#AzQJH=~u~rq@kk(wV?yG!8lj z0WLDr*WtJ@n!R6aga-3NLzRc7w64YMEdNy@ij}#W|9fNO+Wuwc^~?l3EYl;tPGBnu z20Ll0_}-7S`RkV0EmC410gfIjHZGX(vdvs)aGgQnm_eeAhXz}HE@%s6KJ z!O;tCx;j~#GNKcL$&o)p#0ud=$qn;IkEEW9^rqhjZ4WtohTCpOSpL2m0&idJ34XMN zHR`8?+n*5+;hw-;xQfB z(pkbo6jJuG&|B!>vs=`?Ibbq3LLw6WFcjMb`U3TjYMB;!Wk1a5M{hOlY5?c}EE)tH zL~fc?SimR}kR(i0G&Y`T!UhjV`&Ig@DEL-GqX^i@8N2Yo;~GyZR9AV$|Dcb*1%>9+ zNims?F8!H0TAdE)I*`k-j)P^uv_<>1Ql%MT;0q`f(_vqJo(LUKy%?PY;GrDi1cqP2 zkOa*Oky-l3CQA6z8#*PM>0Uhyd@7^*%LJGsROT(o9GAjRGCZZ(HwnxL<}1iADO*Ja z9KePU4sU@{co5$!g|E1ViQi#x%E)wBQNjDKBr+O{rbxrvV3;$|q=fK`NoXQD{)vun zsAcSJ#H{9&VZX=ug1(4Yw7<3LnLhxBa~sKT@&Y%>5{c zha5h`?jhUrb55Ujx~WUWH0rd_W_tBkQgWOY^nsvvN+*cva zo;&5aOP)>g{6l%R$g@?RNqM%*vs0dX<=HLI`{el^dA?VkDS191&x7)OP@cW=d`O-T z%kvR=_Q~`8@_baDAHWko@8Dnfad<=JTW2pz1NJqMIQ1-ALK9oS)Kd)MY$BFx7~;qH zQ)3KOGxQik4Gevbp?ewnD~29ssGp%fXXpbAAz)2C9EKiX=x<5mINro_UQ?|M{WC*5 z8Cr}cKlKiVUdIr}h^DI^u`82SW5 zf6CA?hThN6lMMATbOu(7rrwJXTJ?uNld=}Sc?`TOkoQGghhC1yIe=FKMlQtTO+e&= zMYv`^{AFwLT1uRWdkslg?YHn5gI*N?s80(&$81Gz#v_Vbt{{HZ;&S5EO4R`NkE{nt zXv9rhrg6C#pn-2c1CO5oafA<~2^4bH z!@{MVMBt#wm0G5pMVu%f1`@_u4hrKu4Y>3|Jci-N$n||>oSZw0@pu+U7>7HC%nGT#cB0qX-G-I1nm$9+bt;;1R}Ida-hz1w3Op9-odt zj@M&U2{;C5eb*otqxzPvc_XG!5N`&w%JKN0ixA-Tv&&SQh&>PFCZ+Qk*&o5p(Cmjz zojns6%K+_5vHYfid^FJbK2XTHAEg`lFpysZkxT6ib$vh3#Q`Rct}e&u+DBb~ z3}i+%0h2)Sm7BNy_Tn>RL{h!~B+#n+K@9)J5&r|QrMXf5d7%ZgrlGmj+LB1NG&Cl* zcJ0`z|E0Jy(Y~j-wV^X{t+jpI4P}Pfk?8D7-hqGGh<{|fxw$>j*xA;;?^>&2PUE$0 z$wcc7%`J$RL*3lG^M>Zu=8mT7hOXAeCd9thYDu*2?rgGlCps&d8rmBgkz&WS?G3HF z5mo;K=^f3TO*uS`5HL6GQ=6e{i$uB?(nz$WrLECITAfx0)FyW3<`(8Nw>62@E~rU# zZcel$c1s@HyIQSwU=1A!iOi(8HFq)__QjKxac|S9|k)pi%#v2yDkcg1q*g z#JY)ObY>^A&gvFxmu;wHY*;0C>|IAvM<$M8uIVz~KF-FXq8MkM|d^+7~B ze;>kESk^Yc>8tS1&;gToV5E9C;>AG+WEVdN|19-R{(lHu81I&T1}Yyx!uZX$#YGs_ zN(!t<>TKvZ+ltg<9EcWKkx2}*)^cl6bUFC1wj#;(Nb_1N65E81zR8LdnPKXibxR}5 z&t4K~h;YW1|H{f_BKK{vBHcxiqI1qD;MB{X)Z~>QY$$E`>>yJ@vA931h8>Zy<}C^!_G= zmchrH6(8TFa5{jfF45PbaPmrpB_^F(1N#lV$lzZ#c0O+4xPjj{@EHStVc?8`i_m14 z-Z=(dU|`h1w-~tAz_%G_8@R>5I}O}rVA8<*3_NJyBL*Ha@XrkVl!2c&aKyl`8u%Rp zqmJ5J_JG2s0}7D^xr*^*ekRex2{*l0A-fInAwx${uHgTB2Y5b2E0=D_u9$m`=IP1h zohVGZ*yWx#@oJ1+KQMMJdym>zXXtG>cS(ESXy`#cZh`kfdJ%5)P`LrZE3j+OluyVw zNgyb%cbjx}ne-nt>3kzEpLSk(=d1m>kq`1&W%S-{;71Jna|1I59x?D62L8anpBea) zftSGRVg4^S@T~^M46HS<*}y+C@UIR0vVlho{GNd?7#Oshb4@wC#lUL}%+K#8V^=^w zl!t#i4}bkh^aSw(7_{>Mf2FX=)O+xM*H0QRuO9jHV7we-A3VBwSHOSR@Y(iquYjL6 zeAZF!74ScJlKcn!Lobv5M-6{zu5yHf_#c0n^#9WEF{{nHg7|-9_$SNXmtQ9RBQKNw zF~g@7MxRF06ea;?8|7J3;Q+5#NCYv_!j=nlMpj zBYi7k@mn|DR1vSJF5kK}eks zcC5!$v@~>dY)R}&v?p2{6ILoVa&~dw1uzk-U5)X?o+L8R*wEMn)&$O$s;bXXRgS>k z&W0T=lrRFb5lV=_o{rsHvGQl7_@l=fJC7CL)!f~cv{K^*BZ~|AUK2y+u;>P5_)Wwx zLSF83mg%h2z>@ynrBIqD!$mt*$O*`@T$n28d+h>lc^6g_b-}c@t*s?DOAA%i<}3lG zq6_(EbvebOyqc5#u|<8-7*T#FYCcwb$?{kntJm?0mbQ*WdDqV7HmlESFEdoE>^AHp zA!Z0wToDFt8@#%$@t!bNts&luwbzhXXNa{8T{#KV2h^^Prpmoo=%vyoL)_kq#pgM- zeT$^^Z|z(kuBPv$_<+#kjol6L9f{q|t!Ou$jZNeX&T-Hd=IBFn^!7w&Q+wOJlpa~c zF0#G#Ui5?bmPAJvR#ibB6LL<^+11e8LdJN&Xm4puqO~^NL+S*njZHh7+lfsQOLS{t zWr^%+Pl(!SB71aw9fC80Cid)U+bitUVzAp2A-|V+2euX<+b7}9b}Wn&J!H_<#yv^m z{fp7Q(3rV&kJb2^#2)M_)Hdu+bdWos+|89)WMjX%O zLN(X8H#f^}KtsDUzll5vZa=6B#-CK~7PIjHN>(Y*UxBjhOfX6AQgmVjs&44OvOl&& z+V&*dT20fN4kI9a?z?Q=*MT*D?2WW1Iv^92fE9^bORYt5YXv(Ew;`-=N32DAno!w^ z#;(ppyeZMZ(e%o9Sfz{D^%mW7&89>Gg=lRrUE9D8hW6OfvIFCB?cUm^X6yYCYe|K5 z-)8HBkR&p(7=dUsIvp7_>n*?e z;W=2!hzuda+)fQHE}v|}&5}sr=F;I`;O1KW6Sx@%z``<3giDj$g`+%{Eh4?pN!}H> zDa555>M3k&+q1fX+a#+i+8Wy$K(ZDa*-H`5l`Uv#-qCpZ<*Q3`WSCB_%-N99+Frd0 ztWek5Jh|fBblcHG&^feO%*DyqeI|5sT3TIB&2w`3c`BOIjj85l3>$N@`F30|CtHDD zdSiP-vZ=YTW1jvJV7Ylbe=g2^yIG*;LNZua<|aGwU_BR2OYmSF7uyAb2kW;VHh8ek z`Xul-ApS!asR2(3p0a{<{)@qTLnLL5n05d41`qZJ-feJh_aJB;GkCCXu>=M)ey~rm z)!@N?#D@$X>{m<~JlLPO94(OXgMErU1`qZ%E=0>DKiJo3G2~F*qC$$?th+chS zWyHT^aBi6q|C+(Mbw+&B;M_tZ{x5;N!C!?Q_y(Mg3D#Ys1`pP8uK|887Td=j)cBPK z|BAtRAcFjHgV!5;!r;4s7b0P9>oNUz89aubL;N9wM^`ES$w2;c#sALW^(Owe3_gCT z@}D+1w-KrDIfM5Z{fi1TeQqz3f1cn)2r2$1;Gm;c^xBw**X7}DdH8*K_+RAV{D+Rv zkEdSGN+*;!fbc7WZ|y--^2o_j=rPDtJ2WYTTTp z*Wtbf_b%MHVjJ+-j{6SW^|=3k$a~bf@}2TN9UP5X2|qdK?Rix+e22UCF35sQUp|U+ zJSR92l`BDy&m6a!I~;WqffJmQqU0@G^$mGt{xPjp(GGKN=tPI1?y}U;$1C(LTRX3g z$4l3}t1Ho!s46X?XMd}#jNGy{zHVm%^s23;cnOQImp3>$D+EF%ug&z)u@=+Vf`eA_ z5)cmy1N2b2s>xHnK;QZ#UY+B7ji}smGm`lIHI%N8$8ow!bikZsLnBs?#Kgdq(lzn8 zSOb}k1^HcI($#p`o*#cLR-RC8o$(!AyRhU_ReOqDtzjvZmPodC@t_v-wI(-TrKeQ4 zC9l*)Uqxx!b+oT3jmMii;yBcIFIE)iB5Z^BI-K6? zN>uKxT-&)XnW)@a5y#(u&fbbO3u@AIxKp$#>3QpuZAmP@utmM{GCNUY`n{^{gbL=@ z+JA5u$y4&mhKoGgUt!VZH?!YwJowMWUe}0or0w&o?DtE5oh%DN!;KXcSf6Q3Bs=4> za$LHAa?JutX~{y;nuVmb3rW{l3m3@EJZCt;vUy0|jbpu7HPU0fR(y8_W)C@Y%gM2& zxitY=dHZfOUxG$UmTYD931h&Cmz6j;n3bm!FDvB;tPK{3a%pC%D2If>R6CH-i!M12 z58IgGoBCh4ICheyz>vIf4KSC*GBJyPAa60Neh9w8)jHp)*Fnie?7Rg~Qu9|n zPqG?ob{qgsyc(Oog^=SvM9)C}z_^$tTPLn%hkfbZ#F((3~9v#lyV=L34Kv@|W|`i05w~fFQeRfZRueSN1X+ zRrK5PHX00RZim4Tf~^IhC)k<;b#60GwiM=3bbC%nbK48^HotUtY#zz%hnejM-FMIp phhV26zQ=4a%- +#include +#include +#include + +const int AMPLITUDE = 28000; +const int FREQUENCY = 44100; + +struct BeepObject +{ + double freq; + int samplesLeft; +}; + +class Beeper +{ +private: + double v; + std::queue beeps; +public: + Beeper(); + ~Beeper(); + void beep(double freq, int duration); + void generateSamples(Sint16 *stream, int length); + void wait(); +}; + +void audio_callback(void*, Uint8*, int); + +Beeper::Beeper() +{ + SDL_AudioSpec desiredSpec; + + desiredSpec.freq = FREQUENCY; + desiredSpec.format = AUDIO_S16SYS; + desiredSpec.channels = 1; + desiredSpec.samples = 2048; + desiredSpec.callback = audio_callback; + desiredSpec.userdata = this; + + SDL_AudioSpec obtainedSpec; + + // you might want to look for errors here + SDL_OpenAudio(&desiredSpec, &obtainedSpec); + + // start play audio + SDL_PauseAudio(0); +} + +Beeper::~Beeper() +{ + SDL_CloseAudio(); +} + +void Beeper::generateSamples(Sint16 *stream, int length) +{ + int i = 0; + while (i < length) { + + if (beeps.empty()) { + while (i < length) { + stream[i] = 0; + i++; + } + return; + } + BeepObject& bo = beeps.front(); + + int samplesToDo = std::min(i + bo.samplesLeft, length); + bo.samplesLeft -= samplesToDo - i; + + while (i < samplesToDo) { + stream[i] = AMPLITUDE * std::sin(v * 2 * M_PI / FREQUENCY); + i++; + v += bo.freq; + } + + if (bo.samplesLeft == 0) { + beeps.pop(); + } + } +} + +void Beeper::beep(double freq, int duration) +{ + BeepObject bo; + bo.freq = freq; + bo.samplesLeft = duration * FREQUENCY / 1000; + + SDL_LockAudio(); + beeps.push(bo); + SDL_UnlockAudio(); +} + +void Beeper::wait() +{ + int size; + do { + SDL_Delay(20); + SDL_LockAudio(); + size = beeps.size(); + SDL_UnlockAudio(); + } while (size > 0); + +} + +void audio_callback(void *_beeper, Uint8 *_stream, int _length) +{ + Sint16 *stream = (Sint16*) _stream; + int length = _length / 2; + Beeper* beeper = (Beeper*) _beeper; + + beeper->generateSamples(stream, length); +} + +int main(int argc, char* argv[]) +{ + SDL_Init(SDL_INIT_AUDIO); + + int duration = 1000; + double Hz = 440; + + Beeper b; + b.beep(Hz, duration); + b.wait(); + + return 0; +} diff --git a/generator b/generator new file mode 100755 index 0000000000000000000000000000000000000000..2fb532eaec8ccc0b9ace94e4f2281b33d21a1724 GIT binary patch literal 16632 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