From ced4a2b7b972fc69059005409c0d7f79e00f42ce Mon Sep 17 00:00:00 2001 From: Dominik Ries Date: Fri, 16 Mar 2018 19:18:41 +0100 Subject: [PATCH] fixed bug in distortion when using stereo and sample&hold. --- 4klang_VSTi/4klang.dll | Bin 1191424 -> 1191424 bytes 4klang_VSTi/8klang.dll | Bin 1191936 -> 1191936 bytes 4klang_source/4klang.asm | 14 +++++++------- 4klang_source/Go4kVSTi/win/4klang.asm | 14 +++++++------- 4klang_source/Go4kVSTi/win/Go4kVSTi.sln | 4 ++-- README.md | 3 +++ 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/4klang_VSTi/4klang.dll b/4klang_VSTi/4klang.dll index 5b7e68faf853823ca8f0200ce4bb0669cf6bc6b7..b875bca4126766260b4b625abea37e7419041f0b 100644 GIT binary patch delta 3884 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 diff --git a/4klang_VSTi/8klang.dll b/4klang_VSTi/8klang.dll index ff9cd9ec0179efde5acd1a2a63228543a453cc6e..1df7e27ee064cdd6744f17e9b32fe3a278e1a106 100644 GIT binary patch delta 3887 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 RH@^nk)0VH4tV%k;{TocOa3uf$ delta 3867 zcmeH}|5F_09mn_C+b>4~VGoXkm{UkNQb?G%d*3;Z10q!Nt)3Pm6O$AyX`+%yC|V|i za>iKEq?s6^5AB%otk&X`T2#!QFemP+q&F zKYIFT{|2E|sWbH-@8=^W#^@L0lau{-Dl_iKS6uGcXOYh$NHg@8DE%eevHOhC5kx8y z4{e-y{N#ga{n3*}E^_?T+5Y3l?&G6L&8uhSlfE~e zn&l#o9iFWpo=sA|B!#s18?u#DQ2)1NKMCp|eM_7M64K?1L}1Eh(@e+ZLB zH!xF5UuDKfCz**p5$NUhK(FE64AQC}zGz4wq?>jR8#+l;fAV{SOCUzQbJUPbNS59= zW>{_@rTV-HgPoxJs!7A`q)9(GX^8Tu{xvV$oJ@M@p%fv&pHI<^bA{g(5tY7pmv9>i z(2I8o6{Loil?yA0qCa0Q^d(`7b@vM>Zr3+#6W-)WIZfU!cu6Y#$#!7{si!U5h2_Mf zpWH6|Q{ZEB_17N~?v_ZeKIdWK#st!$=R75NjU=pZ-Y;BY2lumQgim;syIWvm^K|96 z!pjMyP}g4;4$UDI`nETPFJ#>5+uspxNy8m}=9G{x;*NiOMo37;T{$x>OpWBJpHz$6*@LoTn;6fd&Dt9A&+(`e9u{vW z=(F|_FPOPrYdSKo*sc|kQEv9otC8J~>q&K#dS7A|G}D)`}j)HWiHkPe!CNnG5R zJ_mY6_V{Ga^cC)&4aIa-*}W!uw*J$x$?!`|AI-X!IaLs@XZo3|dRU2v|Is!7Kmz=u z*Zd(Ce{I@d-_sKwVhvunnh6krW;On1dHn8`L-y{dEMe9x z{r#AjM;ZsyWUd#m>lce39tYKa9}7?=1zkXpcU)`kANz$5~yG<5Woei%zXtu z1>IozP3Q*>BNm3=3asfeSC}q0a%C9QfW06DI=}~D5R3uyLKFi(xC7h+wt*mc4s?Jn z&6&oS=1QLr zZC-C*rqO?$m$LQ5@1)}-yABlol!g0YatF8OFbwyDThMbj> zi&FBMtm{K%Qz3j$uBDf)yRs=2TEK)B^;cTgvlcU-=w+LjhEFxEM9b_f3)YYDvU{(j z+F7a(+5i?mtvQ%xp$9KY$M8d4IV@!m4>R*<=#rF0(?=vhWGy07Vjw2P(XWT44~6IO zazDKg-<#<)E6a5V4!qOTvOsG_q|&$`6m}!J=+O}=Bee!Do0DBQAda151vDBOmeAvp zq^2l%?-z;9^I26o#w*~*&rSyfH@!$DEe*brv76^588wFC+*F4-TtNhJA1L?F2`oa zR>w}qpBz6p49**z>CS+YI@_F|J13p+=?S1Kv9C5$`GQAbmJHDYG$@*Ouq;75l1v4Zc=iyRXj|^;z-@^H=AW^1g! z9P=*w9(%~%X&~Z%X8~ rk%hUjT(dXT>+zO*>%A@Bus7n3c~kQ|dF6R^dG&c5rx!0xIwJfVz;;)E diff --git a/4klang_source/4klang.asm b/4klang_source/4klang.asm index 3b72ebf..a3c896d 100644 --- a/4klang_source/4klang.asm +++ b/4klang_source/4klang.asm @@ -763,9 +763,10 @@ go4kDST_func_do: fst dword [WRK+go4kDST_wrk.snhphase] fldz ; // 0 snh' in (inr) fucomip st1 ; // snh' in (inr) + fstp dword [esp-4] ; // in (inr) jc short go4kDST_func_hold - fld1 ; // 1 snh' in (inr) - faddp st1, st0 ; // 1+snh' in (inr) + fld1 ; // 1 in (inr) + fadd dword [esp-4] ; // 1+snh' in (inr) fstp dword [WRK+go4kDST_wrk.snhphase]; // in (inr) %endif ; // calc pregain and postgain @@ -793,14 +794,13 @@ go4kDST_func_mono: fst dword [WRK+go4kDST_wrk.out] ; // out' (outr) %endif ret ; // out' (outr) -%ifdef GO4K_USE_DST_SH -go4kDST_func_hold: ; // snh' in (inr) - fstp st0 ; // in (inr) +%ifdef GO4K_USE_DST_SH +go4kDST_func_hold: ; // in (inr) fstp st0 ; // (inr) %ifdef GO4K_USE_DST_STEREO - fstp st0 test al, byte STEREO - jz short go4kDST_func_monohold + jz short go4kDST_func_monohold ; // (inr) + fstp st0 ; // fld dword [WRK+go4kDST_wrk.out2] ; // outr go4kDST_func_monohold: %endif diff --git a/4klang_source/Go4kVSTi/win/4klang.asm b/4klang_source/Go4kVSTi/win/4klang.asm index 3b72ebf..a3c896d 100644 --- a/4klang_source/Go4kVSTi/win/4klang.asm +++ b/4klang_source/Go4kVSTi/win/4klang.asm @@ -763,9 +763,10 @@ go4kDST_func_do: fst dword [WRK+go4kDST_wrk.snhphase] fldz ; // 0 snh' in (inr) fucomip st1 ; // snh' in (inr) + fstp dword [esp-4] ; // in (inr) jc short go4kDST_func_hold - fld1 ; // 1 snh' in (inr) - faddp st1, st0 ; // 1+snh' in (inr) + fld1 ; // 1 in (inr) + fadd dword [esp-4] ; // 1+snh' in (inr) fstp dword [WRK+go4kDST_wrk.snhphase]; // in (inr) %endif ; // calc pregain and postgain @@ -793,14 +794,13 @@ go4kDST_func_mono: fst dword [WRK+go4kDST_wrk.out] ; // out' (outr) %endif ret ; // out' (outr) -%ifdef GO4K_USE_DST_SH -go4kDST_func_hold: ; // snh' in (inr) - fstp st0 ; // in (inr) +%ifdef GO4K_USE_DST_SH +go4kDST_func_hold: ; // in (inr) fstp st0 ; // (inr) %ifdef GO4K_USE_DST_STEREO - fstp st0 test al, byte STEREO - jz short go4kDST_func_monohold + jz short go4kDST_func_monohold ; // (inr) + fstp st0 ; // fld dword [WRK+go4kDST_wrk.out2] ; // outr go4kDST_func_monohold: %endif diff --git a/4klang_source/Go4kVSTi/win/Go4kVSTi.sln b/4klang_source/Go4kVSTi/win/Go4kVSTi.sln index 07b77f6..b2034b1 100644 --- a/4klang_source/Go4kVSTi/win/Go4kVSTi.sln +++ b/4klang_source/Go4kVSTi/win/Go4kVSTi.sln @@ -1,5 +1,5 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "4klang", "Go4kVSTi.vcxproj", "{107757EA-2FE1-4C5E-964F-DE7E482E253F}" EndProject Project("{D3783134-2AE6-4F36-A599-989377222068}") = "4klang2", "Go4kVSTi2.vcxproj", "{FA790F08-0B8E-43D9-A4B4-519AB01B820C}" diff --git a/README.md b/README.md index b690a1f..cfbda6b 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ The repository contains the folders: - 4klang_source (the VSTi source as well as the needed 4klang.asm file for compilation in your exe) The plugin project here is based on Visual Studio 2015, so that and above should compile out of the box. +The only additional thing you need for compilation is YASM/vsyasm, so download and follow the instructions here to get it running: + +https://github.com/ShiftMediaProject/VSYASM Examples --------