From a0ac5848e378e82cdce51af6f0b3c06c09a6c040 Mon Sep 17 00:00:00 2001 From: Bliblank Date: Sat, 7 Feb 2026 19:52:59 -0600 Subject: [PATCH] add some default wavetables --- config/wavetables/saw.wt | Bin 0 -> 8192 bytes config/wavetables/sharkFin.wt | Bin 0 -> 8192 bytes config/wavetables/square.wt | Bin 0 -> 8192 bytes config/wavetables/triangle.wt | Bin 0 -> 8192 bytes scripts/example_wavetable.py | 11 ++++++++--- 5 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 config/wavetables/saw.wt create mode 100644 config/wavetables/sharkFin.wt create mode 100644 config/wavetables/square.wt create mode 100644 config/wavetables/triangle.wt diff --git a/config/wavetables/saw.wt b/config/wavetables/saw.wt new file mode 100644 index 0000000000000000000000000000000000000000..16eb6cecb5525b7ed55a929a386749e141265572 GIT binary patch literal 8192 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 G{q;Z0kSx3a literal 0 HcmV?d00001 diff --git a/config/wavetables/sharkFin.wt b/config/wavetables/sharkFin.wt new file mode 100644 index 0000000000000000000000000000000000000000..733864b53223e13324e17b4835a9ef9726825c50 GIT binary patch literal 8192 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 zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>Bh5v>B zh5v>Bx&A$b|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB z|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|AqgB|Aqfq z^Txve!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm z!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm!vDhm!v6vO5Ac70{{#FV;Qs*s2lzk0{{j9F z@PB~+1Nn^0sas0e}Ml3{2$=|0RIR0KfwP1{txhffd2#hAK?E0{|ER# z!2bdM5Ac70{{#FV;Qs*s2lzk0{{j9F@PB~+1N@(b|FiIa7XHt||5^Ay3;$=~|1A8U zh5wu3|7Q5VDgIxJ{|oVdA^tDI|3&z}2>%!1|04Wfg#U~1e~kZQ{2$~082`ukKgRzt z{*Up0jQ?Z&ALIWR|Ht@0#{V(?kMVzu|6}|g;`$K3`Y4@8l^wGpjOVpL(8asBHbXk!M#{ zj$OQg=bI|GjeC!Gd{UXvWjpWLQQ3BEvts`Eos0el?N;!;#c{jsU3~M<4~wOr?N_jd z;*NI@F4|muSh4%6BMR12)K!lz?mPLo;;hNPELdCd_hF|MGxlj)bbY)iSZ8tAy}v28 zetd3G-gsfbnv3f$zN|QQ@s-8b?XD?UfAP#QHx{>zySX^+z}pJ;Qmo&#Q!$~-e-`)r z>%M}075l!^rPy}tqs3JpbY)%Liq;)^u(qDX7wdYlzTU;63;MFge#MXl{aNS0;^sDk zSnJ^8q-jH0@35kI>*1_|;vN zv~?=oPYT%?5nn8TTxwz@8E$qLkII+{)oWVOq zv-jWS9NsHdUiUs{@nJD~?MIx)Cq>8eKjloe7L|r=oXhrN&(lBSY(6ixO#PDc*-=bt z^?#hvH$~@>|K^;U#e_X}imN`@DfV2{Jh;cW=h0oFb%$MJOWW@ScN%AYxm$d(Zugip zV~^l|W8aS7k3|>k8J&;bE4b@;=e@mS$bx<1+_66h?mebmyKmgw=0|bh0s93Sh)34! zA16)waeVOP0f8RkqVo=l=B-=C%ex#LXd@1te@Ltzb!hZ>@F#&z;?q-q8e{i6JTBjU zc%Ye>H|1y1sn3z|v)fw*`iVYAwvK3iRBV6ys6b0`&4^=S@6N}@f-8R!=qirh_xNbq zdVCCAenOzJ_^Q{5@!~DNia(rnQlPhZ{kxOn!KPEdi z@%%r>;YW20yc19Sy;D>g{u0|p-yQfUuDa%)*z@#zWB&g41)hr5tM893Q~w(M`~EHP zSA22K12L)9gVABH-t;gd1 zle(d=Zt=_yyQ8u0@!PH4(OHk!X?YK{_IS*m^f-F!8MpW9iROC7A-D8GcfDfOnNOg- zC!+h|z0qIqIQ_fcXs}QG^Q}JUuy2fcwJ%zHGA1bcFOMIE zu1Ce>Jx8PM(Q(7aqtW-6_)+5+G(I*KKQ|VgkBbMojYI3>;`kfKqxbRgZt*Ode>R35 zG6CIBi1WUlfcBq@Z#O=N{_A4;>^eN~eEez9^Y~z59CY_Yyf87AUGxHecp)DB#Uwm2 zDNb%N8DC6}4?mcUH(rbpi(bSZQ{v)hr{IyPv2)j{_+)C#>F^R>c`5E}Hx0i`i=VWd zj%TLFnlGp0n;G%=`Wbj#~#Pb!B2Cd zy4zelH8=k9kGc5jl{j+YD|qYG*fjQ4{8b-)AFjt^_3`WL=Hat>@vk;jyjG3p4=C|l z8P|SZ;<=1{)+WB29}B0=$9oNNf4>I&*AU0twEzz;i2pioAwFCfPqlsxFTNJP*>w?q zTogOrU4$nW$CUYt@#X7r5};6{!8)d(s*zC zQvA9shOJtLXP3tXQq;^PtP@b&r_)p%QH;=iqsGE}oC)-kPmg7GxetK)So(3kLpr=s#EoQnuyZ}qP}*3bG{f9rGouJ84~bHI7vTyQ=(C!80~ z4d;h*#ChUealSZboHx!L=Z|y9dE{JjJ~^kHSI#ZxmvhW{=3H~WIp>^r&OPU!bI^I{ zTy#DlCRnS17+IcOf5i{_&_X!Xt2t}ln!Dz&Icy%A%jUB=ZC;z(=C?U+ zo}26DyE$*(oBQU!93T(K1@eKMATP)b@`D^9PskPWg`6R8$Q|;B93qd%CGv@!BCp6T z@{1fJ&&W0MjhrLz$UX9p93&6PMe>oHBrnNL@{=4TPsvsCm7FDS$zAf7943#+W%8Mv zCa=kD@|zqd&&hT2ot!7{$$j#l94HUUh4P`CC@;#5@}nFnPs)|@rJN~m%ANA394e2> zrShqqDzD0|@~a#x&&sv(t(+_G%DwWh94rsZ#qzP7EHBH=^0OQ*Ps`QvwVW+)%iZ#~ z94?Q`jm}$dxCwz-e7;QN7yIq74{2z zhJAxsTI(P75c`O|#C~E=v9H)$>@W5h`;5KDeq+zE@7R0nKlUK|kiE!$WKXg$*_-T7 z_9*+5y$ZkAdX|05-ev!?huO#MW%e_BntjdQW`DEC+2`za_B(r?eb3%!|FZ|$2knLS zLwllq(cWl(v`5+}?UnXRd!~KU-f91|huTN&rS?;Ms(sbo%Kg@QtbNvAYrnPU+IQ`} z_FvAt!a3J^vHh4cto3Eis@9)5lUko<@3nr-9&3G@z3}|?JbQ7ikF&N~KW7bmu7zE? z*57$&t+5kAKhObMv^Dc|6DOP4jpUe``_Yy;VL_ z<$J1}OO@}f^7$(3sB+F#)>Y-%D(mF4!>X*C&(~Gi2hYr^vM-)%sG=dBU0G${Jl|C1 z9C*hkRnCR??5J{1CFfP*g_7?rImeRoEIHSbHI$rl$$6KYd&zoA?xEy9O75j(Z6)_q za$hC)Rnm#n`;2PJwa(M8E#N_0}9mlEBS?5jjaC3-5+ z73=C&qBGXkvqX2SuXl+KS!2JF>|vb)OLWRw2bbuU^$si1F>4-CqHESYrbOqgeSC@T zS$|!L57@&CCB9%EQ%ZcoUZ$1!hW*Sc@ezBPQ{pT3RbS#W_Ewhoj{P;1_>es=D)A-z zY%K99dtFxITlTxM#K-J;ZHceh_l6RNWAB?we9!)yO6CA(@J`8G;2hp7nG>AFhb41^ z^Z2A>j&LShOXdpavb|)^a5kTp%pJ~WN68%GjJ_$EOPo`)WKJdXDw$i!JtlK3nP119fb34&VGRKp7p3L<`Gs&D!=6y2v6a6GPkmNy<3yGGJoJjH_$&Ex; zNsc6WlH^LFu_R}byh(B=(OZ&3NggG+lxQ!>sU)wG+)8wq#HUbCSbJ9w)h+XgkU2B(Ia) zPIR8+c#`Kyt|yvLaz4rXB=-~jCmfLQK*9xy7ZOfLcp>42#1{!iBs`IDMdFc!GZNlN zxFhjP!XXKdBwUhsC*hQYR}yYXe3WoZ!ZQiiB%Vq*C*hrhdlG*o9F*`-!bOSK5>85Z zDdDEXcL_(KsjdlEp{uS5XQ8df67E7@-4YH%W8D)jLuWk_PD5*tC)|eKdL|r)=6WVv zhwgeMoQL+FNVpIE^-eet4faX65FPeSI1w#AnQ$X|?3ZvPn(UWwCA#dNa3pZ z9GGw@8ht9^Qgk{fi;08K>fnT1(d*!ZW6|u8glp05(1df*?$ZhPqTgW&2czL<5-vu^ z!xK(M%OetQM$aP>jz-fX6Rt+rqY}*Eq`NAKek zjz{y)CR~s1CnTJY_Mc0*AN|)QJpd0ppY#HJFfr)~cwu7F8}P#mNsqu2lagM6FD55F z18=;T^bY(nCFvn}WNOk&@X6Gqr{I;BlHP(}rX@WF&rDBx4ZfL?^c=i1GwD6}XI9dK z@X)NJ7vZDXNl(H{FDJbTKg~&c6rP%!^eTMyO476N)~iYH!e8}C55r^iNiV}^^OBy1 z*Q!Zx!*6BMSfvkHnLU zlU|80Ur%}_-fT>IC;n_qdMF-!Bk861bV<@v@#@l~x8m1jNsq;|%adMhyejF%_;_{FlkxJJq&MT|wMmc0)9aF6jjz`yJsWSYPkJ~0-jMWgJiamM z<@kJ4($n$!n@MlS@0*hzkLR}}y&m6hNqRose=F(#_`j+4)8GBO|L^DgywCZ(@9}-U z*Z2E9exKj#_qz_)vX-Y+x5E-_v60YpZj#b?%Vx)4xWeS;`w+^o|ot5`FW0> zr|0VVdd{A==kED?58j9O;{A9}-k100{dtexr}ygpde7ds_wN0x1NERT)Q37zFX~49 zs3Y~HuGE)0Q*Y`{{i#Fss4mr~I#sXgR{g4D^{lSdw>nqv>R$cp1O1>c^oKstFZxFR z=p+54uk@Eb({K7t|LH^hs4w-WKGm=KR{!c_{j9I`w?5bJ`d4a1?Piv!g=A` zaDF&PoF~o|=Zka3dE?x1{y2x6N6sbZlXJ>><=k?9Imeu5&Nb(obIy6^+;jdp2c3t` zMdzb)(s}9JbbdNVou|%K=c{wpdF$MD{yK-9$IfNvvvb;c?c8>LJI9^p&UNRzbKZIH z+;{$)1LlFbU_O`==7qUoewZWXiMe9Fm^0>$xnusAL*|jWWImZw=9Rf+ewkzDnYm`Z znRDiyxo7^FgXW>RXg->g=B2r5eww4^skv&tnzQDuxoiHK!{)KMY(AUQ=C!$Pew*Xw zxw&q>oAc(qxo`f<0rG%cARovH@`BtTKgbdCgj^wC$Qkm6+#!F+A@Yb^BA>`9@`~Id zzsNE2j9eq%$T{+k+#~Ve*(?igV`-;8A{$h`@&)941H})L+j=jhJV-K5#vya)!>}U2g`wU63M?Wgus`>MT_`>pj@`>egzerwOQ@7jCq zznpoMbFTGb`!Q!&>&u)~tv_=nwLZ<>YyFx%*7`Pk;rZ)%_TpL}XKl59&Kme!3%hi! Wzw^#opXaP<{hl@ZcRK&|_5TmQ8!;>Z literal 0 HcmV?d00001 diff --git a/scripts/example_wavetable.py b/scripts/example_wavetable.py index f6ebdad..f08838b 100644 --- a/scripts/example_wavetable.py +++ b/scripts/example_wavetable.py @@ -1,7 +1,7 @@ import math -WAVETABLE_FILE_NAME = "triangle" +WAVETABLE_FILE_NAME = "sharkFin" def sine(phase): return math.sin(phase) @@ -26,7 +26,12 @@ def triangle(phase): return sample def sharkFin(phase): - return 1 + k = 10.0 + if(phase <= math.pi): + sample = 2 * (phase/math.pi) ** k - 1.0 + else: + sample = -2 * (phase/math.pi - 1.0) ** k + 1.0 + return sample def sphere(phase): return 1 @@ -35,4 +40,4 @@ def sphere(phase): # it calculates a single sample at a specified phase # normalization is handled by generate_wavetable.py def process(phase): - return triangle(phase) + return sharkFin(phase)