From bea6a1e0beb4882fd45935c52c121c248c6d2fe4 Mon Sep 17 00:00:00 2001 From: Eugene Lozovoy Date: Sat, 27 May 2023 15:47:24 +0300 Subject: [PATCH] update readme --- README.md | 11 +++++++---- screenshot.png | Bin 13800 -> 14763 bytes 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0075112..669e11f 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,20 @@ -# WORK IN PROGRESS +# ZX MIDI player MIDI Player for ZX Spectrum. [![screenshot](screenshot.png)](screenshot.png?raw=true) -* Support for any ZX Spectrum-compatible computer with 128 RAM, e.g.: + +Quick demo video: https://www.youtube.com/watch?v=X_hX_dGmGeg + +* Support for any ZX Spectrum-compatible computer with 128Kb RAM, e.g.: - ZX Spectrum 128/+2/+3 with [MAYK](https://github.com/konkotgit/MAYK) addon; - [Sizif-512](https://github.com/UzixLS/zx-sizif-512) with [extension board](https://github.com/UzixLS/zx-sizif-512-ext); - [ZX-Uno.1010](https://github.com/UzixLS/zxuno1010-board) or [ZX-Uno](https://zxuno.speccy.org/index_e.shtml) with MIDI addon; - [ZX Evolution](http://nedopc.com/zxevo/zxevo.php) with [Multisound](https://github.com/UzixLS/zx-multisound) addon. -* Support for MIDI type 0, type 1 and RMI file formats; +* Support for MID(SMF) type 0, type 1 and RMI file formats; * Support files up to 64Kb; * Support for up to 60 tracks in file (for heavier files, turbo CPU frequency is desirable); * Support for various CPU frequencies - 3.5MHz, 3.54MHz, 7MHz, 14MHz, 28MHz (no-waitstates required for turbo modes); * Support for BetaDisk/TR-DOS floppy interface (compatible with [ESXDOS](http://www.esxdos.org/index.html)); -* External MIDI synthesizer required. +* Hardware MIDI synthesizer required. ## MIDI synthesizer wiring MIDI synthesizer data input should be connected to AY port A2. diff --git a/screenshot.png b/screenshot.png index 51d04329e4aee755973db3d41b0604b247351633..c58492236edc447137b77e656f45a03dadfe7b2b 100644 GIT binary patch literal 14763 zcmeHtc~sNa_AitwtyZjBR6s~8P8SqKCJm6>Rs|dp1tMcq6p$I2AtY$814EKhOHmMF zi3$=RXe1zzgjPueAu(u}0t5{Z2!s#` zZkYi7`84d?li%v;J;kn8U09)~chKkP;cvZDgGGbil1J$AYp&S=9lAU_P{ty?<)WoMw!=6~EzFtq4a%1v!vl#|gOG9br!Q(G) z@zO8n_N*%qn?H@#AdDfXy{t5ZCaj&sDc~HmQ#dnbHf&*JXby-iPz#Aa8p+?46ZejA zV^Na@dxG7)sVT3>3aO7=MR5^G6u7@YVK84o$B1~#OV7A1Vg((a9w3 z0dXhM43GoK1c&lPT5MJJMAEVCmg*ryP~@0aeV;PN)J(tedFUI!H@=tskuhriJtZbs zJLYipdCDbDXuukaww?^{9egM;oS82j8-=>>g^L@;tES=Ns$CmMP~7;5ez^wM6Q$t} zt>uTJY)A@us@c=m>Pc6jAabEo>)6%vc}z=!!%yW&eIBaMGLxWMkC?QMQcCEy&_H{x z@I)wFRuO+kJjfc8VcJoFKV|pfJY^C;l5~o-6MMge)+Oh9z$ql!o60@#fHYs9dy*pi z@`57P&PuVj1u2YZl5Mi7GdXGp6+_OK^mH=tDaY+0r3y#BUuR89_mtvZXBby5M9>8| zV@k{=N0h@=*ZUjhEa$C9b-8_TbxoX< z63YF8A9jA*t$4?Pxg4ckHu8*PDbCQi)m;IVZb@gWkceaoDHH}Sec`8;7IlUtYy8-g zZlO}Abl-Z)9jPKoocb__9yYW#)^08d$nsdu>EIh_5M=UA4+!fuA*%R-i&pY_onvu| z_YQ8ib1BEeXo!rbch;mMmh=|CFkzvRAS5Zvzl3IjDo{&f-&`8mC6>zfG7{O&%BK2= z*H)HFQ%*YAf^(BCuZo_3Ky8HQ#&Eyz0{#Wku?*oh_P#0)+RoT)hGmkVRyo))C$`lr zZWc*`j!Nd4?RK_}DO|-C7AjdYzS9^T`vx^2lwOf6aKz}3mR_Zr3Wz@k#*2F@~#BSRpjQrBYy~*?G*{fwDAmwf|@ulSxByUT`MOH(f4M5#;z# zyEZ8Z3T3;vcS5a;{EqZh_H}g1y)3Qk@N`SgYcJt(VnOwD>QEn#;&UkN#^vYCXY%IR zoCQp;BZ|5TM=KP#K(tjAcQ%*57!`D8M5{`rKL?a(8^S|J;jN&8uxBxpjRzqyp;923 zs>-4`QDdR1iu{6pFMhri)XKkA;Lg^k^#-oFVN53shxNnbWnGyRm@@4frv;=u^Tb{t zL6zyFH#kdgec3Y3pWc4)Z(?V!h|9ngN?xvox{#6c?>wP{)EKk+XyaA`y$3ca2Aa`A zxJ3YMak@zy1FuJO$vGeO^-gaRW!0fLm}G>C0YWurs<}K(va&L2;9_2kfnMB|dI+b! z(uvPUzB9bT4n=QG-57ASx=o8kUZnx>~`Sw?W`Z{VD!ZeOAIRmu&5tWCRpw=(641y4_} zsNpw`a>QvEI_OH(*RziY-X6i}1N^Zt|MHg7=@b<}jwsGY*#TkQY+4z`(Sj}CwV#DR zXxe8JGOEI;8ylN`vm4IUY@93ijD^$I_~OJR4$c8}a#u`xHKH_}h<3M!r&OU2`Ro(T<31`c$NgPFqq9=ztQ83wkGF1TiC+7e7ZQ80vC6c2`5pD0 zVr&lbjF%Ck)MxHH!-1iv<}>6~naw%%9(Ln&Wt4u6M#Yv4>ml>34Y~BXHyiFRN z(dp4~pkz-A_nx_j)+SY^}F&qe<6Q3C^sN*%2e+MFdtcKoh{M&1}D%3@w zHt(JC-&#bX{(N~qwQN@?E7)$m-Knr#ase8vZGP`DrkGrm^vPaMsSXeb>f_f7EA~|X zxZl?k?LFO?;&}rS&RX_ltvfaG)$(OOV)P$V$C*jP#fvpM`zI9Q_uPNMoyl(^$*nmE{oOK+1sgyRY zk@R6q!bXW4K{C64Ke0+Z=I2Z z6s(*}V%H~o$6JdmLaozB;nu?AySu3V9Ug{u5SmH0%r?Shh%QUnr%1DyAVdY&^+Xqc z1CCv;ERL|rT_>7dHlV7oxDseiy<}W4j&0{(o3;rGz`zE$R_Tw34nz8RJsL}(=1^46*hDS+t#x>F=YZUsNCIHEpI3%8n-GD zZlR9BYhSp! z{l(+s16g$ybDkGfq>b8FJ=nY97VW*(GvfQN8)e^*eyKJ)!wS=mP7CL2?xMJ!?=bDe zwVGpPgc(+r!=0qCXH*H!176smuN3aDJa^K&eo>CtBG^blH7AJ;-+Z$OE5xxhqDszW zkgb-CdpyPuo8g1kM_ZfGcAy-Yf)S_laOjvZAzRp;zp5wjMGU2=`4n7zsuosm0BN7{ zw4;@dz6kFnmYn83bza6KRA{goZ0#**#WVa#l6 zL#^&d*3U@Lx9PF-V`x!bv{}!(J6QgzsdBA+$G-I;DkTG36*pOm8~Cd-Ns;fWibB3J zQye{FiyR1M)1$fc=xzOEj}SgAR4^jxJX*2@#W|%_c`otno%U8BhVfzXR)_T=h!OeI z3>PgbA!YtpeJ5?_j`Sm!GaR~Nt+iG#K1-;$uUdH@>L>Bsg!o|Mn$XUOU%_rVj()Wn z{ajX%X?`#niv{th{UokHMO@o=OmycWT>aXDtx}@Sc;%@d+DlbA>!PhoL`81Mt%E>T ztz0lmOF`2N9JV4*7la7}eoMyn)RnmCOsL zEhc1&4#E^q84D*&uW&=>n_$kvf@Zu*hzW|dM?s{T&8~N>zyy*cqXW4rl<(eAlQOci zYw$WKX*!E!Y zn4C|Ih9Xz@Pi1FA_AU;+OK>)$-Risocdyw@l2}HOJ)U>v<2+J!()3xrRcWnGX0dc^ zSLNAy3L^HB-JcLcHn?zl<130A~sAAFWGw>p*idpvOLfqh$$VjR ztFI4}345RT_Vbzu@O$>X^Y8Xs3eJ%uzVtv+Yz zg@CZgFk6L}>61{qgAoXa%)xLj31~UO&@lE>_j#X+^DNJIw6)TdiKymwS*7G)XO!wd z@t*aRc4LUMVaaf1)vS;2ipc8nGXD-()eci9MKJ5*N#y&eBL|DMQ}T$#Mm9MNI@;F{ zSA^hGyk9Xu)+i_xN0D_`_jfm?Ydq%O^~iqF?4F8}>!x@nA1B3?s;a(&u#pFJcqUgsAbx);F52JcitD2!+-!lr_u8?f zk5R@Gldmd5?*na6>YR`*ccd;Z*t5c&pY5b$-NlavgqS_)JE1uBr!ZnltBQ*(O8$xB zIX6h)>H-XX!-^IEpfYCgIa7k3cN8uJo*DFUrHf7F`%uP7YR@})v>nKK`iNrc7ou?| zG0lye?`mtw_+$ZMYbh@4lly^D+uC=oAH73t9kK4G4N+}gj1!Z-pkj*APHZpBq>I5Y zH{;9pkYZXV;Aw}fwr9U3(0YpcDn*3L7NejNkQsK&Fb`Fp28NgsXYqNhyHG!|+(#u5 zBhpEMY}UAhb0oIKtF;hzK~s@m8Lip{|J<$a!&F1xoi=b0#{?~f-PO0fzK)&Hg^ZW30ev+}}y$n*M{;6qSg4?K--td>&1^I?AwK5b> zB|ssiJgr*3@!u@|^;#SdO8JIf(Jc_NAyYk3j+^3|nc0G4%H%Fxu>?uH)=F>Y#6VX3 zT{u!Px-j1)rjlY~qh5_SWPg-;(5mSSH9@b%F5ZByUxtway@0BR+~(|^tJO6GASD_z zNoIy{P5E#qQ$xK6j{?FJ#If0m=tum<>cqhM0?eeNo(m6Tf%?Q5V9s9M^XM3gxKrCi zT9^AY-ptl<~1hlcT`L^9A~3w#<0nb+dhs6`C{ddE)(Q@~mws&#YCzr?U*E)=^@wedcuj#BDG; zAJZKxkSxFIe-dugf?S;bBxOJ~%E*SZqERZd(v)f<8Z9z8U_vP}g)BiT^bSnv= zU8n}BH<>vtu|3-5JFy#G?N|#E@9OwSd|>V>u&3s z%^S+X2;CQj()X_1b~@UvXcq(|19Y>?4fKrS2$Jd!!x?7;cwcT<%iWf37MM5r1@(Bd>t1g~Lw4|^y`@+6*FnthCb7+GA(d>N|8vQ>Q>YIl zrVKW5ob|b0E1<$A9jJ+pY^%PI#7*}TWjhS9?xfH&z4!*ez?L5Zsv|~)!(Ui=MDhA2I`=6HXu z2dDQzl(==Z;CVN6$5Qq#g4jo(TXHz=rIO9Z8ofpxV}1aKx2|c0`tl( zg_-D}u2q4(rcH^4QDqcMJ{bFyqEP)==4H?jH7oa53!o`hi+5Uco%dTLH3A~v8Gccf zK=ou~ehdG#^*lB=xuxeY@aT|Xo*y7eyb@&SGE4iF4t;PV!TBABu35!Wui!Z?_N0*u zb0;klTQ)tbF-XR}+gmZaNz!5(*4TfTLbPFCY-pJN)=)L0QFD9Nf~I+&?xyErOtILl z9J!YlB(bFh945>XA6MkfQ~UJ;@<5CO;Ne@IxFIUCxO8oqUJ zC4{cHUuS?x56nD;$T>o50mvooWRa|--`)Sx&;;hyq&0>m?i>s0PHLIGvSwoEPhs=} zI8t(p;`;8{uX2&sJ{(7Srk$+J3>(r97->q8#crYXV8dAvT*#2DijHNCg^XuiOJcJ1 zl{^%4(R~C)BJWm>DtpW% z&0R2=<^JbXHvIqEu`v4;)Ljw3ieRAX4lo`u)&{M zNOxC*QZ&u<#j_g=fs#~u^C#x}LW2}mo041H>ZQSs{RAmt*Zv|N7Z6QsVSQ^jz`h3_ zR>^Sl6U1K(hQ_*_&ezpMx@;)bH^{e3YT;9eK&Gs5x_>Jvh=1>I4v;-FPknJ9R+PuihToN42sy^o9`&8IKynyfT20hBxRH%G}xlDts z1O#|${phA|3TyTb|5)33#QD7Fq=?`{>@VmiFI4RS^;n&&$IFAqvv8N@6%$C!agC|W z&-r{);)~V2-v`l6gFB8jj3VqPeWWO)|HLMhQ{J@(qm55;T zo7>jTLgmFxl-CM>2VtN)umd0{Nn{N5940(AfNVC8!x*KSG@b6-ZY9n$t8OH^A0%HxxtWLBFd)qo*G`dEewX$d03k0iDj z;tha|-)q;UEE-$A=L3L&`4;cTUr&*X&}om=L}g{iwMC|6qG9jF&kC=pfil-(;#)K( zFA6)?Z7E?rR77oHzNHuhs{`st(szK#V>GRF-XBPhpvF?9zVkQWVMBA1K1aukZWssf zOFM-s?1o(;YNbmYyKkOXz+|%Qh6CGFG88rVxQ!Q_ot!=Dt@*+H>&m0mAdZE%yBise zzMCI{X3m^QZ21O!9&40(hG*1kbLwjLs=h~)M>f@N04vrsWSmT|x?#RAE-e#kK1U^9 zWgE$h#;h8r&(FNn)`5)pb_k>ol=-IWI^Ul zq!BI#kk2UMNFTt2^UXUlQN$#>^Xa@*x_A(e zLI)#-vG1f8Y=`7tX(JJ8IwX0(1G!WW0D zx7PNIXa3T!!1?Ug+L-U7#F`gCFB!g$?9#Qa{(_>EmW@x;lO8FAghi85tkHqzU>rwq z%cwUaT{G`IoIlhfYf5aH1R7zNE`4lb1yUT9;=G>J|C`a~hUP^aCVvR_u09nqJ=r{W zv$j;DJnN=4u8cOXU7+#@MFap3zUU}37z&?PJW1BTv~MmFq`Ze$4PAzm!qE@Z2i%-# z-uY{P$IP>n$1M5km{Fqx09al?<4W5MgOpLK2!hlv6IofJo%>E(E7^x;G_9kr9awb19%t>SvgP@rgwJ5!B9oD-2-a>wD@zE`?nr`&WrwL>AKR0|8#}zIc@*%Y`q!Syes%;a zf`80;Sh6&x+Mw8{I)tzhO3?YDXy$EDoER!zl)Iiv{54>@4A`h5^xw{=qeUDOH!|x3 z!uk`;8Ns`F&k?({GZ5rjo3(tKc!O@iv+lt~e~w$3QLmdDaE{Q?D8j9Q;zFCyHRE<1 zaIGH)OpcI{8iB~lCsG?Tw&JpX%qi7i0?bbuKL!6{ml6omV`synRzEk)Lh)K-8krHw~hJmu2uJMuGD>_n(>q$ z0r>SHf~V`F9YwqG@>S-weeVn>b0BB`$;-dtFy&1eWN+p2M^HlH?k|?+LO);a^M0ZzoGAW&HDK|07AWd) zUobk4OhJeVQ!K0dzx3O^_T!ZL`R3v{nVOSAgixG~*m3NbrS#RFtCuX!4%^$$0IN1( zG_!Kyv6rASpG__lXBvZtPuF3p{Z&=d(%3WQ2ISm(nGRlO`t=3b0VA(n9=BWx9|riQ zsAQb5dn)VN8^XfG+Zy|05!>kJfYU)^4=lebiMKlNFjxiTpFxi$Jn(`?&~Carn0 zfz!IuxYnTNpFe|jN=qoh@oqWoC@%8PD6Xm4bp{P`a7H~}1s;C81gOgk#d|WVZdq-b zVbpH=PY2gL0@@0f;5*31p7*@Rf|nOvP~KlXp<|0mp#H5(U|EDSnmi_bh(X&1ZgYF+ zbYC-Dg<1uHkU2+{DyOmU!+=Gkm@!sm+@)eN&yvVDp>$G26F0%H|^+kUb zB0Ze@?i3icr$Tq0RFv3^eg3+6gLyV~L;@gmvtO@14=%B`$MwlMe^ztVFlzSw?)^C? zeUUjOSzSw+*1UrQ*)Pu8GdtL%bV}(b^^>PNoxP#c@Il!t2reASmv#NKEujE>7f0k3 zrnHcIzH-)Ia=c4FpuC~n5WV152J-@ckL5XPmz-|LVbtc8onM+ap)`@E4aSKZ)k@#c z03FA*j;P~brBn!k6CtPpY5ecFsr&LkvC(fBd;Ij?ZJPBL&1=!(hL%9)(k9ed{QN{J z=!t7hj2ZMtE(phZkb$p@-Ow$U!Bnd{lO2(DODxG@qGSrECtBH|WZT|5=j~r=?hz*@ zV!L2(ZB8qpqWyISWRdD#jo3ZYa7$8!lCQqqMPc{X17+(nQ|VB1)TlRnQ)KAg&$}mt z>!VL8{Zl87=r)wTYob^1?Wy9tkC_kCkSZ@>kGzGDs7O3l9}#+IzGS+zuXcFrAS2Z< z$}$aC$p;ua2fbz`}^GjdhQp$!j^1cr2?6a^I*;)l`N-@J4vjfUaKl3G&n_E==qAszfh>@PC zJHBO^<>Hu3LzDR@Uc?tRkQ{qpFM1h%t1wFou`#iQE+b~VRmLPtnAJWjy&5D=HF7an zxz!wM-rvgnxW5+Ubl;Gt|1!hRP$kAf?X>gqgxm;o;JnaJM>a6Ss44@;Mv=mzuqFi> z({gtPuqzfuCiW!^5*9k1Eic_JwfNR-%w1&44PZsV_biGpO0~h=3m68@*nGx~z+wrP zwS^c~xq;8;zUWvH`{IqRWOo3%az4F>oTl#j$LMOTUW001&i zn)*CZG(6jk#$u{NQKdn?t6bnjPljvX-pxmOn9=>UJYe-ucc3fZhYx`Lc}Lv`<1Qhgw(b^ZNg?vz)f)mE0L|%jl+xCeCkUCqgxRuWyPX** zunLMVoQe=g|FRfpXknI(Sm$_1al>&5))htX!7%L>dsC-=eQVK8nM**Xkq+Axgw}WZ zYb$vA+{?Qg?q=?Qe`-GC1(d|oXYN24zn7FolY#CdxwUBxUreREFp{@#Ol}$VC;M^6 zh#R3wsJo8{0Xd{5pp$AWXOHx{1p3PG2Gk!4%;V~A{Y?mEq?RCkXG|OO)9WvZPa75Lmf`^HC19}w@M@D3qr|ic??i}J= zo)gmhE0fMD)l-t93g8-oPGqi|4G+E(VR(hx?<`DyA1U-oyA{C|4-L}dAxMN0=$1lJ zz%I(u2q|Djw@^_Jc#2hRe6D6}QJ}iMHAMWhgx2+*Qftx z^)35fI1<1K6tLO|0$$l0-daDcsmW1Z=q}pZm8EKn%x3^vQ_p6&UfYEtM(FVQaqGxnbz6x21{M}8xP!aqm)H^jc<$2x`-!ulvk~RiD zRBje$MIR1vfm(FNB3P!KQHf$QVgYY3RN1e1^1D&OtO8U!VLZL(#oU^6N{_w5-IQh` zdfY4RVIPi#1PbbZ$j-;hYo4hzR=xl(f?YWsCVwRDd_ghL`&6i zD3EFS<$+wyn-J%SZAb(X?ae1XyQtwPu&mhbR;3E=Ov3_a5+sR>0ev@s!RJ>XH5sM- zpXO=Z#$R`YA~Y4|!2Ky>DUpdnAW1eu0&Tw{vpE~nzY+S(ttHNY{W9j-u0}nbJ76 zVIDY~555w^_Avfa9e%{JVJ2?TWg(WiNgx8C z@vz`Va=n^yeTOArTFyt#Yv6JngTeKflg=twbTh5clo;u4DFL?TurcCnn5n@Cut)Cy z-b8NnSNFMHyzPe>MQVu~c2)u|D@%<9?xHwif#bMPmI^rCNCjP)P1XAIC6&Laj`2@^ z_4#37Y!Oji7qVIG@e|ZB2L!5Lhi;Ry*SU6!2OYI!sU3uhLUNf>8DmVs2W}naKBZWX z!7@Ig%~$B{jhp-&*|Sle|2ko-+T+r;E{1&FC~#sByNxdQfd2S~uMUQmss8jkOBsrC z*_Ugy`If}>TAQF#xq${ zD(**jrVFqKcYe!>;+y&97pZNVQNqw!7!aFYFOq_oi|ZWNQjBG7W1S3hw4MbrYzGUq zE$qBmOv{103$|XdztEj))#gJU5IUx)6BVS28XN0HAa*}&A{#iCUxTm34=-h7wM(>W)&l(r1zSYQzRo5GOb^G6U&hE6o2lNY3%-x6>^=RPa; zTWg(1g8B!9D}RguLZS<#E>u1INxZAE?;ml!U7v3U2rlT5(`H$0+4+$Z{X}=1ZSRK9 z%-fcux-CeiR2yA{Cn%DI9xD%^~L-{^8erK{jf$yS1$2Uk< zDkMF6g_9Y8%l`t+oMoZ__Ax;e^7UdgK#c#wjlyM!2U2ak&UiqVrT>-PK;M`-*S{*p zG1%wzpSg0Gn3f4g7w;b5I2{rH&ZPgKEg$s~Q|O}4j?GaA(K5KnV83|cWR9G)nSJ?P_Liml&t6cg#VAyiTF63aq#={H74zA*+2vm= z1pxXgU^;nMfFPI;)jF^O$N`63oOn7<03qcco+iCgQLj5YY5^<;P`_RAzfi7{vH*U{ z)T(9JY6s(ir+|!(E_|6#9Xbc9Q_T+ES3~FfmZTJ}>{R z%)nQW`+qj{WBmg_@j-14KpHOu4DRcD&uRKg^*2DK%Ovq)@eev_HxB%RPK5uhFrGD| u()PRkA-zO!`v2~&x&MpusXT;Kt3U94=02NMBb~a5jvhI6xaPa_*Z&7z+}+Fo literal 13800 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