From f8f41212f3c4b28c22e1c08420b7e654fcc9ad9d Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Tue, 13 Jan 2026 20:06:28 +1100 Subject: [PATCH] we have audio rendering working! :D --- requirements.txt | 4 ++ src/cool sample 2.mp3 | Bin 0 -> 42460 bytes src/cool sample.mp3 | Bin 0 -> 33694 bytes src/ui/app.py | 4 ++ src/ui/widgets/chunk_types/audio.py | 67 ++++++++++++++++++++++++++++ src/ui/widgets/chunk_types/chunk.py | 19 ++++++++ src/ui/widgets/timeline.py | 14 +++--- 7 files changed, 102 insertions(+), 6 deletions(-) create mode 100644 requirements.txt create mode 100644 src/cool sample 2.mp3 create mode 100644 src/cool sample.mp3 create mode 100644 src/ui/widgets/chunk_types/audio.py create mode 100644 src/ui/widgets/chunk_types/chunk.py diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..7ebe0f2 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +pymp3 +textual +textual-slider +numpy \ No newline at end of file diff --git a/src/cool sample 2.mp3 b/src/cool sample 2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a1bc81615d351c409d863d3385effe7092b0285c GIT binary patch literal 42460 zcmd?Qg;$%w+btSGfZ)M{l;SSIy~To4+@-j?OQFG?;tmCh1$Qki?(SNg;qP>Dl?k<+Y8i-TkkpmsdBx?(QERpZ?xUT}4V2&d0?A zgMm8!XGtV948RmA0Lu2ibwqV_HvP|q|G)H4_dS0f5VkCeVlx21{-TQctw1OkobKtN zYLaq69Si`f-A5q+2KLddOgcfz;u!x~RAm}K7m?{*6AtKo_K4fH|ltO(} zkPIx$(1VSNZ?y+piDd}GjE&~8(eV_)0;frqB9xB#<#H(zxopXS(n%@``$S~E=J*Rb z*|N}+WfdrO)2F-{oMKKuf1;(kjxdRNL8fXEt5u~?r~KWd0Cs$m)AxapXRL3M%dGxL z&U<-69`-}oh1X;**3X~Wx~|#wdyogY_)<~XUn~vhJn3Q!ovnX3y#KRx`TG9v@BB|2 zf17Av-MzS^6Y~1$oKw`$+gfQjQ`SfN6@XQ#6h35;=)P0N5H?W|Z$6?fxLfGVhUOTB zM$dCj2QvE#r>g08ZsirCUd1$eTay?p!$-QB`Pf9MTl;kBn$0mieauBCTS+@>c4|Hb z$O5_$DiABhkyfYKQ(Ox1YnarYMoWJX%s4#WWw%~idO3lf33f4ZjuZG${GqioG_o;s zhYy79*|pd2+edwwfd&^PTbAqOfSTJ+xDW9ACsmJ-4}mth+pUH6n)etp55kVGyp(_{)UvU z7aar!6jGgZ@u*?VP>G(JuD2G&_S~;~EGDuON4I7eP;KlEvkL@?QsIb48gZshPp*0Y z@elM#pgm0uR>UvRATA)4mlaJ1q7VSYjn>97;Qc!QISaz?l_^$SDJF(gVA#3Z)9L{v z(#0@D?U@?_fQs0Bx;Gn`0${H6!~cWGoE09`QYP&&ZX$cBdrkaKn=F;1 zQ6TA)&+{;IDVCaTk5Kx^GM7B|IbRdXw1D6FEPc|;GAL$yww~Us?sp%JDR5|<;W@z2 z?;wC5Nndk*4+LnsD=kgNoup6fAqUQNK}eq<T>M=4G5>1TT4zpsG_sNyYL=rNe=n;jxLxJjg!_{X&GOC|o zCpvg({NrL{y=>8x|3ElH;2cfAJd@xs-+9m6U54e=|4U6dl$e`rDV;Ot zWB1gv+$OXzp6AjnL*Eq;04j_U03V(585&*jj?=Oqarh`CIa#20yu67-$AY+&fg`*= zg!b%ciOHu-f5uGch5JWFzBu?gWt&+3HUs_eWW{ZFjEM^slaKVF4VRAMkd+c~44*y) zqwd6?m=>ymRNa~i;}v43`N?N{f!~Y`1|RWJOEz0*Xjq7`)cLw45#ql905jbXSt!Us zI1K&G-D@ZTlR|GO7#ORb#)UX0fRO-DP*`wtL&wQW(Pm)z{IBF`ya-u(!$cs}n3igL zC_=i_-BFQTN6~^$_ih8%2#EN&NDa@Gh2e8s`-~UX;xoX#OeBSM;r2?n>Ka>G&+_=m z?CSc=vL&vvFcX#qZg$?}a{5dBD(E|n2B<)?07j#$h^Op0cprS(HNBzh;K4p@J`?-- z1Hd3rPNZw=taea&{prcjD~+_#L_-)2hKep30s6oLS^gXU%y!aVNdcgkf+`xQufnIJ zNbxK~TOdg0Je=#%D#8p>bQLH$Ob3SpSE^lpDYE7TJ$i}&*05a2?t^mD?rvC!Y=>UJ zY+@a0U)^e|pvQ9G_mH&XccU~q#Ae6mz-l}Hd>-Olcu5k1i}N6$>GeJD@KSJBo8aiU zf{DjOq=bbeuJ=eB?|~Sc%=*0;M@WgI-5B)$g=x2EL|FP@ z#BL#iwjTk*di4*uI{?1ZI9w+RK{r@{Y!gV4N&(19BR#_r4S=#Y+%OC$Ol)nNgxM)9&Dg=kn!K-hV~lp}`m%o2)w< zLWTFFB6>rtC!SyP*3n(Ow6IXiGZdAXv+(Um#)&Dor|V?Q zGsOxY0iXWG=fT;?62n|Ed&a0^Cf;9m%60^-JB#ytfBX{Ey*}^XN^5EZz;(rWrZjWls06ieIo^%q3 z6-=Ac%JAtPF>r$*#rdl7yBY{Ieb3U?l!P{pCvN5mEYwt%2>-NWnLQJ!(TZp21u3p@ z3z<0Lz)f_j3~MHzUI5@5F~p`H#Sn={%|l;JmyUtk zUPg_b?8Z-K-%fjSx z{`mPh`7_yb@4h8N2EM|CnGpd8BNNV{zZfco4V4wZ~(6^L!DPNa@L_O^XCdVZA49xq;Wm(|nT z@$&R!Rj&RF-T6vU=^a%@wUC#hKNBBHMB3G!IW6ifQCyMb*!gLk;*`QA zy1sYA`W4Lm6SgQHs;1pC?uFzE9d3XRAa$qK_WsY0L*Ltm1ae!08yf0F*%XGnSPxcg zHUp{zyXJi>I#}bU#8GC>zXtdajyhn*WQL9(3c!ICz~-gCz2$3vpgFVzxQ9eVQh~E3 zU;w;`=w0}gi$+3{Fscl3PoJeFWrzxn1&_hPw2T%CFdm1SUSS#rV)KiSwEXnaZ5f3i z5%dd6NH+^8tejE+6j8}#mda?T5b84s_$kv^?#u&#Oc5$L2o%(p2LnzV1`0rsj9lz| zJn`~Bi@QYNLznf=BzX6<-`h=gTjh7%?ePiF>{WIORTfTIQ*_CMGOjw9dRq`s;PFW2 z@&XAa6B)$b+}AH30_DGwDsqiEgx(n5^|xOAc{~>Rcr`A5%klNgFsKuy?8=^Uv~dE#a{aa@vOz`vY0NsjqVa*EQ5Ro$9oB1)3@(CCOAgo0u`U={&oASY`#h}tfI7Di!) zD-dQ;AdVy2si6tz1_-Di6eYAM9AFQv0~akFmFID17xLQv_#L%ovt9sw6KO3o+O%iW zjY|3bqmPe!da_M4oC5RA>Z?I=oSY&TrFo%s(P}#UFhU%NF{Jt;`_C)0J)UB@!xuc+ zPM^%pcS3+=6dYMrnwCXH$!J5*!4&EW=BeB25Qr3PC8?)pduJzksEh&tKrc%t&3dy7 z34gku8MqEB!~F2V)sr!*U!rXC!oD3C3EYQ4^yfQ8VsMarFvKn%KaZ+k>I;yjnFp%M z!bS+%8}tMoKnNNREsc9fPtz_fIty_cF@N7Xl;^NQ#gHt?5I5F>YyeHnMNd40A)gw3 zgb0Z50|}xhdgu#z29hPfom2H3O9CL8FJL_c{Lz#vHQ%%%(+|#+Qbwz-G41eD6F(6Z zQ7$+562TND>wTC2P;Ej>nOGn-xOO7RhG|@EjvT0d_kX$?r4Ozf~H8(th51W_)?Y97;Xp z%fByGx4|QUr`mHdaN36Uk}z%)0I&oDzPSU;71GSI!mYM)*bF+0)WZj0Gc@j;w6I`$ z^da~a4q<q9GLqyVIgE z8)-!^G}ayn#H^~<8*ioO)rapj&A%zu{2s!K#&WqKQ__>p3P#>n92qGGf~XNWlZ!w6JMF31d+XRBeb7N+@+a2`i!Pc z9;;kcrdew&OK+nnN~dl`diWmOyOFMQf&|1Bk|gG(Kdy14%DW;txWCUlL26!hy_QDfRdD;gBU8p38h155owZk z7VJ2N9uuJ%KnR&Em~SDv^plR;5oj7uokdt943x3`x>XYlpeedmnNc);CWkId5^jU8 z!1NuC%^{6EkXme(ChD9Rj>qKS4NnJQm0}~6Os&GDyrD+tB%aEtXy(OiXE4xx+1vMe zi?kV4VzyXAgBRWDl-5d1IlKMs*LmOMrLlfk42H>q<+7EwJI%g^_N6yd@VYg+5S76e zUF!{OI6|wUNaR1Tp@m5anhJ`L=OzseMD@O^#zqlN;yXJoJIzFWWn#NPV4tNWmdE>a zUq5h<(%gG4`|6St^;*oartGD?C|5ivJ)CgHFVcXHi&8Kg`yC$XIQ=$*F#a$QMT6iP z9KMU9UnZJU{buKO!|DLHp(8r!%0cZUty9eS%@E#e^G3|%WFjKQV6^`A(mmf-_**e< z8O@(Uo4>!#8_=-x8QyZU{pK+Fov5k4L+DJf9^6?|KV zh=wUy2K#5&SYN_vun-sb?$44Tq8}aEcZIaiIJyIUpHKA3IC2Utbm|X38Z+*J3Sg26eG!DGK}A&r?X#N^|9`-XSwwOjF09hKYEIPGBAM=z7hiWAK>pYVhiv zC3$)L>lV{<@lGGq@{CWH*Od|@6l!8A9%FE&;>mM?3sz{RiAJTiTQ+`oTN=U?X zbdj!k&aws+doX_=tPvuQHHJ34I%TOU9N_*93#Rw>+O#Kf&Y=`Q3`O@)kk0@y1~xjHIaU^$Bmu~zbU}-l zn{Od>!ef#KTis;dhK~iHAPp-dO9E;cXcwBz;bw|WuEN(Aq!!!@tc5a0lF)EFaowvc z*oW?6Ung(f%wC4~{#dqN&yMMT_h~BzPW+-j-_Ch2q1WwxU2d_E+)E28X!=7;Bbple z83Z?JcfXE0RiaN^+Eu%LNPbM#nlU%kV@{K0Sn%?;_PVw9^f>X`99igGsHEuI7f96X zc)Bkf_zj>h%69(U4Fvf%alRBt0+>9A6c9!aJiL7A@;rTR?CaU&?3~tm$&`Td4`dz- zldEoNeuuI${y1Z5#{HOohqwha7QSay6q*QrTg}fXidB92jX@F>Kk^y;%jn`QR)TDf zQ#od|CIpq;&`$-<5KT3Mz=iP&It<&jbbT}@+-dYN%)X<{_#q8r%mwL zn=I!x)!FihKJzNyXDc5di1NKlXTGwEwue7-{>jvX0 z-SX+v$$7mR0n?O2eglKjsTw^dA0it)>2nVWHY8V->g#~d4nIZaJiqn7{%=((A?OPb z$8G*;>P#`DtC%H?EvEs;nwHKKoMEqT&5qx$9X~0fCaE$-fTLY+UqUQS4T9#>?Dm6; z;ox*x~}^ z=$8O=i>r}odxO;4_AR$*>Yd2@3=+@HkKP`o#vj9?8c_FG=8SJ-845^ zHbt@Lz&v?<@zAP0T4+oDHM-g#snY$*J==l*V%+pCCFNJ34Da&lQ?Aj4=@&cnnh2e8 z|NJF(G3LC^4Qs+EA5KW9?as&JQdmsTan};E4X!-;rdX{4OHY^oaXEdo^eO&J&=gO8 zfRdvR+nlXoR9f?_-I>Q*s6$3cfogb$0aBI!hBz^2kROHfGhJ5%Bc4wK(w6PFWnIlX zo|-R)=VQSq7fhg+7ecP=e>G8lxrKn|Q01jctZChiRf(kv?~y zQFLHo%cD_|W_ASh;m{(f0p*WS$x4WTBd&GQHU>_`;$hCb-h9CFM5}_$qintgaG5#4 zv3VG23)dQ)jcFn?F))ZnAKi`hX0~D<1N26IF zvQb zE!9-tvc|F=Z!U(pDp`>-aZdzs9y^bYE!ApwR3mvm2Ru0_SN+uCNtYX>@;R6x$ESa(vVRAwfOhESu!{@v+phE@#SeC+!XQjE%(n^$^rrm;2L0qvb z^xYY(I)>F8d`t5EZF&Qbq#Rhakq6qw_>2P8-AAjY7YAU(fLZDnFDlI9?zXhsR#V|X zr8PBcqj8XuQT#ks>|NI}^*d{#_zuV%Q6^m#_izmP`pL~kd(G#VF;hpE&EL=@VjFT0 zI;lwrUFd`H}G-5Q#EpE_Z+EUEjiF>bTA8d-CNPt}~(d_g-lk z^!$b~i=8`NZu}T8&94&VsQf$zglvrLugj1i504wp#81AvwV;=3cqTcO53;QHL5qb! z&laP1g&1cs%kvOhoqGSre*R-f{~0`PO1wDuv+$Ww5>x7!c#U+Cb@I)p?%LYLDmAkv zIGN~i9sz;Iw{z%kd>}QoY;wdrVXY`hKGQF&LOv@9Yde5;5KbpW15L%0*WtE5v_Wpt zfpbhDv;cLlZojO(i>Kf%Bb2-R%n8X_dQU$K)oMBk9x0d7_JxTF zn}bdx{wDo@+3o?sqD1NVdlI0c%=_2k3IWD#tT{1S{c|kgNe`}i)lsn zAd}UOgoz8Qm2J+?&4eq;t>5;4bT@#x&MMi-qwLFz7j9TNG$%F+s>TeJObly+FSOfr zK!yFdRSylc@Bh#-wN#f0WoxLDXy~D8m|N1&q|;$QoED|bb)WfG3oNVZiZl~u0(+$= z89ICn9GT~wiO`c9gxK<>Wk8&Qf=tP@eVm$}Y7(x7GGZdM6td!>1+DvxC@s{ zy5KmIGqn&Le5!&%yvb*N=;rMh6CNQuIaTsc_0K0Qkrs6vZA z{ohW-Mha9>Rs*9#+Nc~__ig}?MmnYVj zAKtODeiH(JA(!%cc4A!)VtM7@YH`8CpZc3x`+$+|sN~OT6G8C0gNa~R=VItdFvI>jUwfcDal59HVu~AWEG77{>QoU=p^Ebmsh*uQ^ zAXprBI8?l<{>A(n(WN=)+!B1=N?Sv<+Hr73kHDxLoybCOqzEaSzg6a&y!^>Ldh6j7srrfk}c4H7dqy<;~WtY6`VJ$@tY%h5+;vo zYUt{V{auwvz7NO>hY6VRmEMD)~|z=Q}ctx z#=d>roXe8s7LFp~TcN|p-l>D&;1 zS1}!vcYXgf`mYEg|6IrT5^re=E^d*uLLtoDGdf~nWde&u{??0h_F@k zZGnS_$9YkoN4YorWRJKZLu&^w_a^Z{n1Scu-^w0H!9cs2^rgHBci zg?V`zF{`A4onZYk{+zt2y^`t!VRUI?Wqf+re1!)EWH@GtXmk*S;CJj`74tl79Mk49 z7^JZY%bhl5vZR`Yg$})1hxjeoF9w<<=5*IKAxk8(5AZ6g=2c#w z?Z;L>3SDltc+~3gq`u535TU%OSd3FY#}hb{r63Ng!Cjc#3gA{cP;*|_cNFKF#aG;a$8JJvh`c% z!vNq^n#WK{(VEA#pDXgWsz!RUz#nM2#Hk3$kMY!4NSe&p%H|R$y|+j4vC8V!K^lxYv2BRji)>K?QGOFztt zL}BIZRsZy4%o~lcmm1L)0cDU$hk%($QWFGYTFdiM*@7IIEB?j_M!sv`J;O0ABg6P7 zM;ZT`Sds2ebM0^8YG!utzPYOv8hoeEU;DO>f5*d*uuFr zFHB&Er80hS^S*6Mj7amB2UW(j!sQNIS!rH}(6cVZK<ZZ_`SpGM3~Qhx4a2w(Q7R-tWZudEViEJmW_{&f0@DUsj`HMwkPCPOAmLzS9DVQde$kE zWZ_04Xi)WP!Dn_uRaJvGQbcyi{+2Ek``Vpl6=(B~ioaK@m2canX8^^x)^2ZVm5>lc(-td*+rTm?^B(>?mP&{ajCEBc8DibGXr$-=xK(?fNg^Cz8?LJrIRbvJFF z+|NJ$aXqEDpZ>(xZ7aG|6!fM2i)XI%f?YaYi|E@iDYtYTXr)7_iZ}o z5TZaA3$&Ie;fjD4x+{~K6DHc_}hG{HKaTIdlD-A?#YG zbNV^MdkIgx@JS+Ch;q4;=)S4nwR7rM{CvrN8FOhix}m(N?%|c(2F+CulPqU5A6;l9)`7-H#kXuXYV9NpR^}{yB-B?r~5PJEx;WSJZ-xD51Tw< zotV*#oc@gfT3DKp+KdrEEKrA@+YyVF#BHlJ9ndqD8Xd{dUhOP7)FwzCTW7V$w^n&3 zU?CfrsH^!Jo4G#RB0sL==o@VopF>@5{hGnohefBTbf%a2E0;J+4jn0LrIh-EBg12p zzZVTlvyoB^n;%^SINv=|D;d~IC&iUoquRq@0DuM+tqd`a2=P9C$*1bT@E#VZG1DJ@ zO)7+l(QgQ*D5Atp7@uaw7bct1##s3xNXj~JwxtTiosh$Pbxzj4JSn^u&x2!xdYCC^ zS{V6i&yb+>qcSf`dfO`vufaSQf0mz?N+LgBy@WPR1mrC86G@*K+43$rJtD7k%3k_> ztX}$T!&Dh$_cPQ}?I*W(bMT*Og%YocdJgXvY?xtDFw(-n8nU2~udGJoQvj8m#3>ziAKyd2?GadI=0wwH&|S;+7NCsD7F|jn0$ot3*GX>H_Ynfe>xE;a&d?SW z-phN1--TQHt=?$cfS*sSlCZw8)U{x(Q*#mG*2=S4EY}}SE!Om|=S-rZE$KDDpShwZz6ht|oD_a9vvO;V0cLiB3|lGUI7p07LxKpLWg z&Y<4x(cSh*AKt1EdsPZHbGedXT?(?Ym;XJz_cV2Bex?L^hpIvM zTys3y;S-@Z-B4sK=FdXkok+it70aX#^1WuIt7?6VfIMx*_nCqMEna@#obyz5BRiLf z4eCe(HRo);{E9Qu3d~^SbGEsO;|N^C{a)#E_d6;f!1ey*?z&qj$0qZ3@a8Ih>tXJR zeDY=K@!P!Dl%KfO;^#$|?A5;K*zS=HPw~CG0vK2{Xy|tlbCNpgw(7Jw&}&CoSotzp z@_Q67C=QY*=VldE@$o32f>DHiAUy9-R2day1@R_e-}z7=JgI^+(d~We6W4zFXzX|h zT=qtsRYqD!YMJz22pX(g0Aj~|htJErshzf2h79o}uIVbymA9{+L-8q;{cRebZv779 z)kIW8*bY*woG(B6thMW2MnZV01aDj?=EVi*I+Pt~t~30Gqu-4or`i0bEYiMGOUe58 zgtC*?gkhU04@Xw=dY>|8ltXj`QbwL1u;r)CFLp%4e`^W&;@vTJ-@uai(&OPEIkv6ZoIA6N z$6iNJ@Ic3+AzNEQwM!HaZ3Hlf`e+Q9OcQymPvU2!5z>*_Acqr6ZnT8pAXGauq|ZpMG!>%Z!n!6cKlXV8|2#9{0j5JQ|RtHe_W% znKi?n-jO+5I5DOy%MlUA@?%CnUdb?BeVxd0YTLL{iK$T?8)~PDuD-FR^=8Td#20qa zm3{XXnWj@^4I4QsuJ_n*-FM2~^7$*ADjn2c(?R{SH$3J;C|g$Vupyf-ge-mp&aEUw z`;h;o@qzAj^!-?kK|i{?R_4cH=ZrDc%+6|t4O}r=8x;@p#$l`u1Fj1HGUOeC9wpcL zuZRaS;^X`$snqBrIT{>FV}nl$-ise^R~oDy`8;c4j2`zajX%hpMxU7zC#ckWl*&JC z@#v(+m_nffi`|>jiPJS^GnNy;ASfsd#7j(uiZlnb#ejSjNJRncaNC=TqZL-vr?E$AI5fpI)}#gI2(x!^R+{lzS6WForMVzC zr`*e*JzV^Ca(elx$oZ1oSVexI>|C#`ZqVelo)G;(hYOX}up-YFR)GKp9f{ZM-h1+c zIX`thv;^QY2TDy8f(yD9yd@p;} zIJ->!;ii@Ot}plLCYIFHQ*>*RnOiJ>qw9)}(l~#eErZOLUc>0?34oI-D>@~HVs1iK zhu=y+CJNd{VyWb{)2|x)AdQEt8L}sD zSl>P!3fJ^ffGc^CW#L!4u#dnvc8X=Kvk^c$iO{Y~abWFgkceCo;-93li6HdOb=^z@ z0MYCJN-BwVuto?!GyZt8y=YuPa;7ia8d8pyW*T0q2vj(9QUQm(OW1A+H zTQS-N)cNz=n@5uRX5>;w5TntBU8|T*U#|V$S~^r`x(x2p^x)w(4C*>yS8Ke{SLyS9 zwrG~>cQUF;x|HoV897@RTF=|prwb|S%~=D3OlXM_a_DKoDbn#lTi&3-G?sd;+kmqP z*(N!`fD>=#O6%5r?y9hnI~s(Bicwl>w@?2_{LNsSmwv&s(+GMQP( zdDTcqNa_gbNys@}g>RYn3(&8ya!Gw=8l!j+h%fP9U{eiHJv%-7M@JqJ_}4f76Hu>M za`p@V@Put=w}xNG7PVmx@P|)|54n9NrQuK{sT7?CrVzG%<+*mpakcEAHj~0J@v0Jm zPb7wxwNiJPB;GR!J=ly3*tfTDY?fpeN)ykqCc&bvoeGW>Un6$9KD?Dl3zFILYP_NJ z;SgSzElx?)(fj^nJUr~F$8)-|SnbvlWH>aJyf|?#aN{oaGKfP}_Q?^|fvK3&%$_w% zS&?;=F;dwAO#q!~h%KCfr&U==$Ks~w2<7brbi0$OQPib4lxUux0Tz)OiGsoj#+47t zR1oIqjYJvjnZ+er2gBO?bmEo_EY8uHx}?Gruv!hIr8;!BTH61CaD^Zc$@f2Fa1FU< zz4VX7^&VVNsxfyV(H*(0T$0W^4Jnmi$BHF9w6(8mjJnCG{8$V-FXuZY_eUOD%#9f1 z@?l6@s*4E)zy8gSMikSj{qb$d+~H@Ul0X_|k}mQlWkpL&o!cz~Dc(3O*#0LA&?1Kr zTuqTW-ABiwrUU1Eo%CKr(dF!*s?}nqL(T)!1R3PO8aEevHYOlJnyS2$+34DwajKIW zrtJDgjv+%8IebTmIa@tj+82&OR3^9JWg|*z&^Tv)ww_F z*c5zI-SB7c#@nH#y4t*o0vXtxm-xA*Aro$~NbS#`zEU2^&=RN|VVJgRSXFaHGs?5D61Ryg*Px&j3-9g^{wEaDqA7w6HLqC=<2NU6}nmpYS!qxcqU zETj*Zxl>ts!Zz2ZOJF}>GEe`4UxJ60y2ix8)6SQZRn@jtY}W15&*9xtCnb%~Hy0-| z7;lyW+X|*XyR`4)w=ptL_ImK_G5=wm0TxXU z!=OvLKi1&8uAprkb{zh@%~d!s2cXv|cm7?C08-O%zpU>8Gh>^+(cKmA}ERE(8o?FyE8oj_C8 zsWzx~356KhGk$A8yWon*N-t>2Vc`g`E^Rp}%X> z%m$TVFmmfpY$o`gTIMOI6)8bq>U=JKoxlZ3d69@UVT}U>dIc?~t@|8sIG25@VJ%a^h-YC70y=4#g*-2uT>gHF3QHi_;rZZJa=q9pDuTt3~ zH}g%(_~Wsl2(fjV&^w}KkZ@y-*1Wk;0n*;L{m(sb%)0iE3uR{K@yn0+j@KLe=ZtIb zTBqaj9=plgbvZVX6OPsq54E;yTmLWT`}HW=Z}i|j^*>wCCr?gSVq3aBW5Ys7es!5r zQa+BapuuMdZH8G9+zv8ta!rlBZc^Q!x|4L){lMM)X;wjex$@Mb-Z&bu^XeHk`zz<9HPZQVJYR+TSx5R8o*lZTM@~U9`ENa6{oW*9 zImspdy6nxF<27Gqv;N98_|(a`DPh{l=&kwoZ1E$c`15RG!ei(t_Z10a3W-;Av9Ah< zPTjL29>^9+XHbR*rWiClX}nT~1B#^Aep}rx5$lxObh8%=>Nj5cc$E-h({@YwIsGx+ z`E{O>{wit7H(X=o%P>zXwd<`V(Zc52P_nP>6wJr16AzWMf6DSND&KvH?)Ow7&2>Oq zQAr(`H>s!In#41$#ENCsV)}fC*GJomG7mv(lW$cek(3dTb5PPP8(H;ePn30wa9w~RL06{p4HK^uX@5f+P|J0Z?lFWRRv;nhjxCss8HFF#`7v571X6+T870cwL?07 zo(D|Q|Ehok1Y}b=@NbdNdYV<|A4y(XSzbMRmSCFiSMyjTP^al4@3?@Lf08|Z+r0ky ztHtHx@W$`6*DcdJmOi|x)nbRuWtNFwBBx1hPz`8kAP@kI)*xv{BDPS-QYvkhh+J4* z;~15}0LP%#1GUM4*(ZbAYCjwiD^FxfXU1_}o06;=qDTKmb9616VY^R%&9T0?-Yk4~ z%grSZ?B-Tlyb8UII#A3NJZng#J;lte|1qMy__3OLe`^Nr#QPFEm$TEpTx&^3L`Xfx zUe~?J!sJ7C`C(w!4ez;9*gR4=j;$)J!uYtDSyZ8w&XDvSrn&Auer!WKPEC6srQ%`z z9?}jYn$9rvITPLH(_B7=qo@~iE zYB}+U4`XABBNw?OHZUH-WL`ySNnn+i7=cpQ6o2;hoMGiGN2a7Qd4I|1Xwo>NLUc77 zMOMaw{SOb?ejDXJ`~{pe)nNys(vuG{V{I3MU$#z9Tq33%uZa>Mo%YZbzsiUEn--d+ zVgiy;3Of3|)uYJ63(qUx;*Ck>4TJBH6e~|j4FaHUmjYnC{P`^xHT7ah>)*rTXycvy zD599E8Ca;J@9;k@4TKtJ(+SkQ*_#w78$0b_e2n4!ZNtT0#ru5_%BPTtLyk%} zg)x*2{AWEE2tqVP=LrT+EUYS5k#IbLvH{t`I2I879IX=vqx467bO8gRZ0Sn7ajC&b zXMZG-5>0f5tD<>`YRLqf?qcymYvm6A`&ntx$OaqxmSZ2i$R>q!`xn*e-Y@Xa_x2pQ zT1Q*THya$16^X_QA%)Cg^5k+du(1(u?Iktz6*+4UJBnCF4U*8wc~y=WQe)?IopGwb zH6(KmqdJ5@o`)O`p^2jDmBOgPOO*RGiXoefxS>^pdyQ5C3n}QLxY#ft^o+5;(q;Ep z85TqBjPsc?D~-6pk1KLeWWM8JRBe5~pan$Z%@o5uQiT zbYgFH1}f}330isYvczN@ zge!2SrCp-&R|oA2a^hui?+>L#{<7Zj2TR7NR(I+(N-tBboH}(O8F|Y!tAV9UwJ=5J zoQ3NvPoGn*X^&Ls^q3{T`dR5@hsxttSqp|wLC(!x%D4`*h$4xvy#)`&>>b%%x1-u- z9t~CiYu14TCnIA#BgK?KLKlhiN*y6m;O~oVQJ}iUrRCT7I48o?#WaZOtghGKbPRjL*` z%kn$YwbBr5>0a50^1{SIjUo#>ZjX@!0MzT!IGQ3kk#Yl-x5y-77+waTWy4`%hv{Rs zaQyEi^p`LCE~WuE#Q2>5O4?uq7#IqVbgIh>6`dl-rZw>>uce!z=is#z=Sl)SjYl5@QXg$ep$+><6Qsmez()xG)+B^YMaBWm>_;7=|8K* zZx6SPiyN!9$kJRWTLR8rlUF)97}eYyXnXy(_86+v+ZsQBfXafwW~pAPeV~l#{>*10 z%IBz>OJz;EM#@T$;|@bkb4y9GhiohHYAXkymM<^X!$$HR1ysciSIG5Oq7_*(w(yVY zvGdGm%^)WS@U&%J;(OC?9CwYaE^Nr; zW>Roq_=l>7%+YrRr~nUWAm+Sa%wy1{cI-aX;Z^I!8t?apswDEk5n<^S3_7 zJgie6zY~2s^(bu-0Hf~zIC9^sfnRZawY|HDkz&;f7p*GM{doyomvEb+@>`+v*{}?1jj2+3O~H+}HuB*_H{gWh_!Imp@^6NV5hRI6NYjVVJ_LqQfHQQgC^xqo0iq1vsZ`ig#=^vu%Tw zPpoc$^N0aT9ya7OUsZ}kGmXqoS1!ynhsPDX*=_z#2!F?v)6zcc6^@lJp_Y;7@q?HW*o-U?}AJb=1V{I{zN5=$aeqVN72^;Eqc8r1& zvR$AeOoItW3kUY^Iz8AGHi8eZ<4P&QWwq#wlR}4Bksc=j6p{Oi88321H&Q`1otODh z$=Ir1b&$-#g|qa)KW?&){BisVgzwq6Zk1n(-_^WPGF44~1=1V6e_!CUi%E-xo;RaJhyxU!K`gTpL9LRr!!eYyfjkSC5h0;yD*v_ne+wWX zv9@+9@x`L4z3dK8WB?3F_hj-jw9t5_K&EyUKi4n}$!c<%(@T~r3N#)lZz6Wjv_;oZ zUaAtl(v-v#&@)*y<1N=sSva%Eq+;}&o1fJ$c%Nxpvgt1#DTF&{dVFX9tlBE`fJYI{ z-$_h@8>yzOrpnde^Kcav{F*zsdf2|S{q^3SfUoO8)qGlDc3bTbBcW^dfxbsT@O!o! zml3@K1%V0MS~2zL)^Cods9oPLpC+CjR?(m`=?qqoB0wKaN{my7v8N6(znB~fffW_8 z<-uR&Dm*g0XW;`35M5M6m5-LiBRSEt{i6!;v6rBgL>j9Mo9MO77eTWn5}bcwt!duVstRd;7ug?B+Se$)PPSNteK(;XG+$lJPs$o4OER?3iywFOEP zAr|L$DZH)*IAhyO0lYER6FIsTW*TG`ke#IoRWU#Ff06Z-VNr(N)-%Jr|NH+*dNGc#GAn@UP-gBKF-@lpXnqT*`?>%d;z1P|} z8Yn|>>ZKQ5)teD}s0jk~>hff6#v#DM7Wc)*@4LJgKlqs(oZ4%8)EX_{LWWy`eY}&3 z&Ke78^5@MK4!*b1OF?^uK1$Ya@5tO&G-u6ShF{cI8hW}2-9%xVM@}aK#t4n%+d0}N zxwSQUVRX1cAh0c;pbQ2R6qKFK+MrJ#C_M%w#fk+F2Vo;7%;IF#k9ATw)9Ei9RljMn zQ@BzV#6d%}5#-IrOao;GB_*?r)kA(gN*!os_;d%#sYb)Yh6-Jf!Q zn5n$eJ-lcWCx+>?|Bb(X4`g7gw{EWjfb}1lbD=;$fFWy8jWSbu>F(XBt|bw6jHbX$ zse{J-u%luFVxgI{T1VU^or?9DX+U$=m(kE23730{5zE&psg#a2lLCKBn26u!k=yVS zr}t%50+x!>Efb(>BzR~)vLCR`MxjHcOrCrYVi@;H-(Dtq1R-2$lNh1D5GHpfNt#b< z5f3d1G8B-d84jEYk0GOfB6#dZ94un7*E>Q33(XW77JVbnFiVO%B#jand;VN@r%Q2^ z%A4dIXp_z^ebeD>?Va#`bkD&j%8rAA%GR3%grja*x>3PhkDlLsdRjSQ znKV5>ww2dc3N?r-h#Y&uI0vw^u_+(tJ69l&)(z547nS13p`(g&Ftgg@)&{FT3Wlw# zB@5wsAvAS^QhIe$B2herSB+uJ6amRv+C&`W-V-l58KB|Rx=ncv!?YL2S2wMv-6o1pcV zDk*+6O_nP*+`SllLFkOh`~V&(KI?|tnyjRa-fHzQ>-tv=^8~rVzza$85B2|moZK>QQaL()0@dxq+HOglHHqE{KpDVr6ZYyCs;DBp@03_`yOA@ z_Q11^K%o4+wz}@WD(wM4_z3;(5C9xtJ-2uoeo>8mU4{IaS5sKvyN$2En=r>*nuV_T zb~-$qH(kdw!>{psf0F!#Su~M{)41)hCp8Y}m@fl&Gn$3sg>0+5fbm-WUB7I&X$s0U z6qFv;V`LC#`XtiPa14V+w%l96BU_VPQyo?M6pi_)fw|hh{9F+X$r&^f#P**jOlX61 zmhU3UQRS@BEAe9A7ci{thn#&nk>3nxV}oakNDTVkxN3TKoUR;xYMo{;sH&IYBi)ic|vE$s7n`E z=_ewk?%=_r^}{)p9WA2pN9=RH@h_p3uF01Tg5zAb3z82tqO<#_lt@>m#vgwtX}Y@# zqQ(n;%oCh%pbTZ6*(K9_H@&9yjl$D;5-(feH=M>K^}OFtW_%zaF}jFUYJ)gP}}ctNBk;nqRuCbq}nP zD;s{_3yoPbI{%J1M`%^@f57s^g^?+n`6G1sr5Jaz(PeYeaM20sgv)-g%;-_^927fi zS>fG)!Zo8Vn#$p&>pT8FxZLM61_pER@gt94^FAI`jxyDjCb{))3wEv$gLg71 zLT2+fp+6>VXUrcAEml*O{(d2?aee>(YiG^waL?lXMMBq`4-%d?Q{Eq|-%viR>1{Ut z?w;F!wzgRmVW&OyFi35~^`rV|llj?~g#>6SX#}Gb2!P%i9Kp>HDQHeKn8p|8qn&W`*q|v9OtZ-0+)NCGedWWB@27G)MO@PsJ~YvdAZo4_aes)wi}yXr{2bh(M+R$- zmK+-^A?3M&h20tpHf1fN)CKtTnF|%yy|$QEG?1nmh;OutZC=!VJ)Mb@ z)U{BzM6ZZC5chHBNbOEbS@2`y@>Nx-(_nA64#$h!=VfNZdd%*OB(7sZWpSlfB=5QY zygZKfsyZIq)psOIUb%5Mj`@cOwc;v1Uy4#M^>__C$8eZtm}B>4{8JQ0HGlQRr(3QBDWWw? zy>euz%3Lt+pi8#X$KZ|r2G5|f5&W%faGzjMixwxJb46~=#lN>G)PKkW>J|H4H-m%t z@2hq+=VIpGP+|KN3Kmk>N4&VrO@@XdbfgR~JvLi=Ul6H=djetTtYi$dpQ)C38weVB zdcw3~$mG5MP5n5g0VdGs_1k7%I-Ehm0mVAPQ5M%x+?U)kDrP==aH3!2oWxIiOH0G+ zcdpBIB8sY-Ir)@H`7dWba>lCW|F{t-CGQ*Y5CZWp&;Q=s{Wb7qN^9bb+4+&N+YRGm z7*z8cPV|nUhRNim}4op6?}7%Mc9nt-u` znk8-hG^3u1sgC27+~=aZ8Rz)-aOj7mRojdo25h#wN%B{@BkI<;Dtd;)yd$w(N_j`k z@u~8*^n8FM*w|nn5e7Lp8^Q^2Q@tpqw+=!`^;rcR@OyuyM)0AOl)N<6)X``uz``^* zi3Z+J=cokkJDLA6Yd-+QKyTmUBG*HX`qRgX>)7uF-HVU@TT#u}7{$yI8Sz-DdVK1BJEvG_@?CJR zFVHg9Rz4njAc6AaK=2VAEL)77V4kfk4P8Bv;1HK!WB15cr?+kw=~87XqSe8stgI8R zqDR>$i~TaKa6DL7tu^h8X_0ujvryHg`^qNk>U|$Tb^-h)EuIqJ?en@aLHD91Z)(O1 zy4ZGDQ~bMPfk=OCTgftiZ8H}#afcGh{^o)jW)DvxO)A!3-&B@3vCT&n!NgH+W_n;Y zV}Lc2G=m}@_DCN#P~$L_!B(dTO<*7OI;4OxauvF}7LpYNHNS?i3({w=(n%+092FWr z<#ginsER|XyZk%23jkq|yZ14L>sKZom+lk-XSnptvcB*EyIJ;cc7jfgrq9(XjjEBC zGjL%SwGyL&&)gd|rXHFMr6!s7Dc?c|iGuLmtGZ$66qV$m)U=>{ce^|;&p4|b z6rLnYEkx+v>0<-J%^v7_E)%+U`{!L{2POWpP$#(<{l_S4jq}p5a`3ZaW=GNc{Dh*Ui|T|@qY~r z=|ALh$`?=ni=N{^A|lWK9D;6L&3!{4`ro+|n+>E3sXxWKU$EMepXRgh0@ty~0GdWL zjnyeP2V*rMG88*Oix`oDYfI!Sb-Y4c_^roJ_l^@;BP82eum!>2cyLnB^l^$vyN+l# ze~!Lttm8L_O_8ztGx&<@)+30kQ1?z!BWoK!eUW_)(6aHz>FgCCZcAM zYtS#lC+=^X^n3`isK|*_q&Uv*@rmgu9Hi1JerG$DEvm5wCumG0Jj*I?c1Mj*HIP{n z!RrpfKTS{>t+cqbbSF5ulMAd_4OGUwyqgm`|L$+T(cGvK747I{+?w_6@DuHmwLuqo zb%#sNXeC-(pO5lmv3s*58f|3OAYK3vT_m0%3?N&#nF!kW;hy`E|nXx8BuIg z2N%v6!-T;te^gD~H?%CxZY=W2hkYL`q4Ix^*^+4)rm~EUA}csp5Esl~>+g0pB`aum zESBLc3T6EY^tp?;XP>Wi)rByTJG0;IK!o5i-gQ z*mKMs5ndy9ml&=i<|+4Sv6;c^h>fyWw_Bqp{`t+8@qQI`!aK18Io`6;#YC_!QU za1aH6PGklhZ79$o=G~{MbKzOJELwh>Zr>|!iwv(cMJUZTn{6P8;xmEm$#gQZu|1oK zT)$eY-OeJnN?Q4H&LP3jC$6EycIxk4L{hPxktORynY3;UuSx5olYO%@G7R0c4@CBK zNWw>5NiZ3L*(>Jqre$!c(|AhfL6YHwp)yis^`(p>Xq=SC8swxD*;MBB?Lh!VW**+M zM+)!l;Bp|5^W*g{ay__a|5pj^D)H8v4UAZl2C9e>)51TKsF1))=;9#>7b68lQ+2Vy zzbX17^;O+t-K;T!pUW!#UiZDCum@v6sGj0df&+`!TVh5_w(_L=vB0*Z$fR)ToZw_) zJb4`JQrxH92z!oHIfj^*eNPLro3XP|`Fo08&yqmg7VD-87P2D*Wb_^=k5c2I22JaB zY!&i_naymONpSuP8SPQ~z)vo8-yf&4;@21hf=T=1<_I1Og6a2jU5H zGs07&vp)F>Y(-J9QsRASactp~lC#hl34#{6#_xOT*`?>4c-nbHhfkwq19Ha@U!RrP zD^;j{`*kl@O1Xe*Z|xAJgw(7gaR{v_mwq%#K`z9eE^we0nNSy0^?k(}6V(>ZPL=^% z|ArYJJEV_B8OKO>Yk_Y2po#83C#e}n?nYQy| zy3(w+kA@vD**R#6byv#05G$0Ie1;y(Q5fUTfi<&3zyyakk5g~fhhY1 zu=oLHq3>(I7?rKalD4j&;q zbl8%R12oeW>Sfp|gE`c`VbLMwc!YpBvpEx8ET~>klpmFd&$%M&G-)aj^o<~PaP*bG zY-mV4m;7IC*A^W|5EV=w;!~Hp1;L6-_;X+b0NPmLP}0k*7!W>oww=`0QK;bOWU^_K zc2rn)b#F_PG?j|uGq5}E%R6S2^sU0RBst54%IV9Ns(COG$1tOI*3w| zm{e+8N{Qaer^cEPpPpZC0>bc$)Dlgdl2EyfB6KSe4;*bXfk$Qr2+E)Y4vQ-v0_^s} zq$z{;>QVxLShnNA@%Xr~G%9?63CX@x9TpSd8I)0Lh(gw;R?)Ztas5c59?q5jPgU+KV+>mb9xJQ;WyzaLAhB#t0{{%lno$7}(n9 zS~x-KHjPQnot!3K6K!@*?P|jG{%I;2fKTDNI0h}Y%4=|bk+Kw;Y!7L$%L{F;9uv)P zc~>$`JwKJ-dG;gLsHSoQ7Yn*tUAJ+q#PEA<35 zyrbir=2V|s7E$U39dW!@c8q38USydk=(oCRjRqdsq-?TluTwyAVpEz8olXmgaaY8+ zx6ai6zJLdq16<_7?RKN62Nv<)mon^Dty(yy;D(#rB zQZqd$$;SvK%#ko7!8= z9pQ8pyOv2kFL_wxfMlQxNm# zHwFlO-5#$ZAq!k@rn8YBN4@E_hK0>AYSduO^VZR96aBb$YnI2ei3LAH^Yu<9a1rZl zmfBUgyZzl(#4o-(9uP~g(dJjXO^a2cpFWt#-dA*B>Dc)i?JYkEP zzp?5&qX*S;40^ z_(`+27r%{4=6>31jA=zD<7CE)>R6wRdaajt)}m(g0ssu`hq4frf~t^OdiJ>=o-G$% zl~J$E&5NyWi;asV&rZ6*DN068`AZl7R>XmmH%rP*?*9HVu4jq_=GEXU)3x*rkz_t2 zN9M3#GU~^IKaUXnZ6Dd0Jn=>Uy|)7|qh~I8GC!J4@wu?ZO)!n(#rH|;)2vpk-2=~r z9`HWxTHCP_?Vo@ro^+#yaTYv3tXo@Y-MrwO2u*7TV^x;8rP4I5dh%8mHVZkE>P-6z z5vLY?`f&Rz{+2Jq0IJTr8 z^8C;n6nMk^fQ=@t{-`DpW#rYsk}XjR9IbM0u1=fWonzB*7%p3lfOMLDCkksq9`c5M z${t(hZR^clptw^ShO__ukuC$lq8}$sG-2piuda;QYLG3e0 zv(}TypcW`tF_&~;0;jP(s4*U(2mqxG)c(~;rc8%@Q8ujh3+mP4^q=!zF=(VOV}OjX%H3OM>57|;3$UUN3Hu=E3is3{=& zcEZ^ssj)y0uonjf21qakShe`hOf);Pq)q_`z(0W&H>3sE){G>DdG%Al1OlZNYSP2t z1~PdOde%%7H>~8%*rz~Oqvp(x91P+~-Czd6-{CAN{zNrbGV1QX9VlZ;No~Gfh(_<; zy*EU`ROX*MSFerT=F|+6R0sAD#QL$gxVhN4r7?u1ZRXzIsu|!HA#_S&cO5AAZ7d~3 zIBPi?g;;kc{x-l>{gNGiKsA>UmZAO}#hO>eaMTQ?wm^%V0&~pVIMXk_sE%`=ze3_N z)a`K+JfF#*;W=r#!%;rZcB0kXp2cfT)qJXvj3gZU{P2*JU=0nWhX9C`3>PIWkoAt} z(FAXqoUyY55nbtXvFqf@?ch#&!sg(gk&4_hQ%@W4MF%a>Rm?*-%I~8ia`?)SX@p^KNQ>hx2=FvJ2ucTdfns3QE+&6va zQCQHKdnq`3TDE=h1iw5nROJPCPPu=F2Szv}1R%`?n+BQD3t`1den;ZC$zI?FaVLqp z_2JRBu}t8i5Ad~f(&A}&KqZrTSi6~(!t^XZI!S-s)5eFJ+p&~)BQpdr7p}tP(EeT( zgwy`3)9wHaz~aX`El^sN>-3>65dE#=kPg4gK5Bk~u81qMa4$UW{f595KVL(-TP?@+ zU;U2)r#i_XKT07nGL^oIa^rxe%4T&nb!junM8ot*tOTY#T!fv}JU?$9LR&Ii3SUx# zsq1{0|78kLiI_SGu*&GlsBR?V$J#_3uQ^1AAx2IlD~H$So1v5hQ;4GWDB+Wu+FqXB zo)Ug9eDqMwd~3fS-5!3KRvGuHWY+&pbUX9rHe8g+`NaRdwu+DQ8?kJ~ zXE-5QI=_@G1|PjFBEz6+srnJ~H@`F6;UBPcB17mvT0`J(Kf{;;tq|e7d{s}gw+3

+03rpBx-grWLOI54gXVsp^_Du4vZw`g;txJ__ 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 EFLn6DBLDyZ literal 0 HcmV?d00001 diff --git a/src/cool sample.mp3 b/src/cool sample.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1f0dd23ef743baa9a465713f7127f62daa637929 GIT binary patch literal 33694 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 mAe@#`h@cxD2LQzVFeG$PiZ@ ComposeResult: yield Sidebar() yield Timeline() diff --git a/src/ui/widgets/chunk_types/audio.py b/src/ui/widgets/chunk_types/audio.py new file mode 100644 index 0000000..57fec27 --- /dev/null +++ b/src/ui/widgets/chunk_types/audio.py @@ -0,0 +1,67 @@ +import librosa +import pyloudnorm as pyln +import math + +from textual.containers import Vertical +from textual.widgets import Sparkline + +from ui.widgets.chunk_types.chunk import Chunk + + + +class AudioChunk(Chunk): + DEFAULT_CSS = """ + AudioChunk { + + Sparkline { + margin: 1; + } + + } + """ + + def __init__(self, file_path: str, chunk_name: str = "Sample"): + super().__init__(chunk_name) + + self.file_path = file_path + self.audio, self.sample_rate = librosa.load(self.file_path, sr=None, mono=False) + + + self.num_channels = None + if len(self.audio.shape) == 1: + self.num_samples = self.audio.shape[0] + self.num_channels = 1 + else: + self.num_samples = self.audio.shape[1] + self.num_channels = self.audio.shape[0] + self.notify(str(self.num_samples)) + + self.meter = pyln.Meter(self.sample_rate) + self.loudness_values = [] + + self.styles.width = (self.num_samples / self.sample_rate) / self.app.zoom_level + + + def compose(self) -> ComposeResult: + + + # account for multi-track audio and mono audio + if self.num_channels > 1: + # loop over each channel in the audio and display it seperately + for channel in range(self.num_channels): + + samples = [] + + for sample in range(0, self.num_samples, int(self.sample_rate*0.1)): + samples.append(self.audio[channel, sample]) + + yield Sparkline(data=samples) + else: + # just display the one channel + samples = [] + + for sample in range(0, self.num_samples, int(self.sample_rate*0.1)): + samples.append(self.audio[sample]) + + yield Sparkline(data=samples) + \ No newline at end of file diff --git a/src/ui/widgets/chunk_types/chunk.py b/src/ui/widgets/chunk_types/chunk.py new file mode 100644 index 0000000..b5ee648 --- /dev/null +++ b/src/ui/widgets/chunk_types/chunk.py @@ -0,0 +1,19 @@ +from textual.containers import Container + + +class Chunk(Container): + """ + base class for creating draggable views in the timeline for MIDI, Audio, etc... + """ + + DEFAULT_CSS = """ + Chunk { + border: panel $secondary; + background: $surface-darken-1; + } + """ + + def __init__(self, chunk_name: str = "Chunk"): + super().__init__() + self.chunk_name = chunk_name + self.border_title = chunk_name \ No newline at end of file diff --git a/src/ui/widgets/timeline.py b/src/ui/widgets/timeline.py index 7cb47b7..17895dc 100644 --- a/src/ui/widgets/timeline.py +++ b/src/ui/widgets/timeline.py @@ -1,6 +1,9 @@ -from textual.containers import VerticalScroll, Horizontal +from textual.containers import Vertical, VerticalScroll, Horizontal, VerticalGroup +from textual.widgets import Sparkline from textual.app import ComposeResult +from ui.widgets.chunk_types.audio import AudioChunk + class TimelineRow(Horizontal): DEFAULT_CSS = """ @@ -10,9 +13,6 @@ class TimelineRow(Horizontal): margin-bottom: 1; } """ - - def compose(self) -> ComposeResult: - yield from () class Timeline(VerticalScroll): DEFAULT_CSS = """ @@ -23,5 +23,7 @@ class Timeline(VerticalScroll): """ def compose(self) -> ComposeResult: - yield TimelineRow() - yield TimelineRow() \ No newline at end of file + with TimelineRow(): + yield AudioChunk("cool sample.mp3") + with TimelineRow(): + yield AudioChunk("cool sample 2.mp3") \ No newline at end of file