From c44757430dfd23f41f5533cd5f28b9eaf6936e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maksymilian=20Wilczy=C5=84ski?= Date: Sat, 10 May 2025 21:31:35 +0200 Subject: [PATCH] progress --- Ona_mowi_POL_07998.mid | Bin 0 -> 49441 bytes main.cpp | 27 ++++++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 Ona_mowi_POL_07998.mid diff --git a/Ona_mowi_POL_07998.mid b/Ona_mowi_POL_07998.mid new file mode 100644 index 0000000000000000000000000000000000000000..ae328495e85d4a2fc4ee1f861ea1e826f70547c6 GIT binary patch literal 49441 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

BlIl$}+UH@nYwxq|Dr;rW2c zvx-&@-rhcK`m{|q1)?2qvr@y)<5q5|UWo$RO|LRCJubD^8WxC8>fakqYTIU`R&j5j=1e`9X3F#JsOQh15hDXn6b`b%AK!8B6 zW>NygLWpCNP}>lv)N!&LoyklJDhfzY(fN#G;%81ATfY>PA5+AAOWF6zN{X#NNM_ZR zMBnp)!DDuo3cd)0@-fB*lG(5#d4~yvCs5=V8xJbh zlp~&u+sto`QJy&Qh$Y+ZJByAdspDT%We8k^oGzVFwuxdyaX_lF+(bbNnPklq#fThN zQ76+Ku~|m;9QEm%FEKiR1b>;w2tzD{v@N7gmkJy}09@U}GQo`?S?%bt>DinG0W5{$ zw1R0LiT2@>htpt~1 z#EDZb%6>QFWhDuuo9~k#MLA34lo8|P2!AKW@X8v3CIwf8B79XXx5BYJq+q@rC}nme z+1iay`NB?7DkGIwUZRXEiJVIGi%`X7O;@;tPT=ME7dwh}wSt+TGj$0r4v=8)pj?rY z9U{uwAZ&k`QhE?hq*~G~rPCHx>NQpo5{Ay+kCb4EekvXmHA!^fAkIvQ6CXMzwPDsU zailt5)Nf7n%gt3q-f`cKS?9B*1Oaf?4lO)raf2QiIeD~NlIWO`791>~oki9erKH%>@3^5F=*He@wj}2s z>QXRE;ejj{vG(;K(&N zb2N+BlBJF~Es|=pX_8H(0l7J7VL(TJJpG8%15X>)K3_Ny8nox3@l}8BB zKamX@MnA-mBga1Am!FF#a;6V@Me>FET`L2X>n zMU!elJ0<6DDngouOZD(~irEAbb+)Ckwaz!lvSkz;m7UcConOI>2f0uU=$DMy)3~?X zUt-MOC(6B&n5}DlcMjSKhorHVFdAr23;0IKsXiT@xZv;PX5Ad!rj=)D!JtgrSV z)GaGp#H0#3h84bVDOOu500`q9!CgkZNW5Qb2ThOmOPteIY!aP2@OW6p78fzC`v zMMzs>liyYx&u$z~M2KexQN6mhq)T7ke!?c*0F|0G)g6`^BlQu?@)CZO;sG#9OF%lG zo9@n;?(pnXdEEYT*d3udziwJUqK@mBhpwCMUS|%o+9U_6&Oa@W>`LL&JbZe(`)MBD zKURfw?;opTBH+rv{pk(nBsEUIvAV&ott$hkIY$O;eDSB>w4#|d_m5RASHR5_S7utw z=J^*pZAW}=pa&K6_i(H#b$rC0Qv?XYy7yC6Y-D`vr>bHZnG}TYRn)()hpJ+-#+3Hl z!=b8B)&K$2y`QO4SrZ5=>ct7GQYYk|WB@-0yUf=>Cx^ceae=@%D({^mj&UBmMXFNL9>BqmUI5Id(pY5S~0O zY|s0|j#PzS`Ys|e>$kF$T>YH0dTEyQzs(a>H6t>Z$!b0;?0?P&s$^1lrxQf7-b!Rk zW?xGqvMhHp5tC!i0Ii6O?AJ-693FEHWqlVBS%ar6GFCfCrLwLuZmo!%#MmQO`yf>; zBFhBw8#zZMv+uM!OEupVr3f-XWd908XjRZ@B(g`kO( zRnl)&1PEJv6k%*SG1O>$I&`2WFq_BE3H}cd!Bk3)IC>= z)(v8l_8@F^QKyi#8Nb7J_>$ z7(Eu%#@=ng=rBckVjmCxe^)TdcC%kwUA|y+YV;lpMknPCDa|idZhXGZVPfROimE8Z z=o1?xviBy{;;bjK(_o2Z?X+sKHVvKf*Nxp{!D#x(#I0ew&wMw&#&6M_U=QP-Yews$ zk{nwK7pqH$R97)tclsXcMeE1ihJ}PHUjr&-+LZ;JteLtJ?Rd-YW3?#f8e*lQsS|Pq z808|hLz0wHuOuY-fTrqf4?kS_2C75-GJY+KU>i@C$cdb_^u%r=y1P*0bYh4RvU*IS zs`b0l(7Lg2vo3VXXC6KZ*~{zdOC#}01JJDqy1Kv5F5XJ3LhHv*Rz{(Uve5eB85?Tu zSB2u2+4VxXT>YXPDXDg5!SCOX7bfnlDzstpM9J6UR0g3xOrQ*q1|%h85?cl^upz)#6?S+?q6JJZy%Dv5ppqm6z=}T zh4(Kmj9q$ouNN0e9gm;q-uoWgMB)A(TkI|+U-hrMnr)uPmyAaen)0;TQ|>)dKb1ZM}Kd{THzH7O}(Lur3wK5hJ3Km_PRoIF9+qH4Mvb zzzM0kbEan=a8YXC>Xn6lZL-gYNdZA(Y+qr?tytjS2g)`r7xhgcI%lOXP7i)&S2(fxq z8w*^#+{D6q-QO0-0YtrJGrX0`WhwSnDz`_+bxxcK(z7vK(O2d6KgnM04OD-r*ZyrR zHF9yXJqT&uv)`8ee`D;Dzed|ZZurxB1Apw(`alm39!a_r2ab!RWP*Y1kN&b7>F;mz zbk}YAZUUqhgyv zIW)!TM~Voxgg3rQ&|}hZ*pdLmJFCG*g{r&IE{9~@5jQt$p5y=cTA~_9zbaPyy zA#0BM7Q*($PG3k;&kGX=7CVi+T2)?GxXAf6+K-&dFK*-gUEHl9KXR6rS<;b-(XssE z&gf^(tm`h*$^7Cj`|IK!4_GgH8(7?9Ayb64IG~VEj^q~yXw1Ii;y!;DU-~G;Yr&qy zeI`Hu7zE-0^^)qf{9Vh<6kXxf7+vNOxxr2jKFghaj$95ti&oe_pmgO+E+ez_KE^4u zro{ttO`t0%X*j{*Xb`V^xEEr~0aFh0@~*Y~ZYi}b2Lq-20Pp_WZl)LeO8Gv1(Pw40 z-#jZ;ahJ--Y+#vzj2656wRQEUzX*C4yPzY04h}BMX;v0t$W!z_u~1M*N%r2HppX*( zg2xku5?8%wxkV@{S9DX)H9UI|mAq9j7mBKWb^@U|Ss^HY+sEvg0jLYbYDINwv=A4S zujaAL-(w+1qB;WLNK}q{tGI!Uo!{P2Rw5(hr82Yc1Z@e$HFXT(n{_=i5r%ZG7F$Q!k$L+(n8CA7RI39gjp`tr;OD z4kIcCTs0}?-YAli6jG$6PQ*$~%&R>Vl~Xb&D*J~4dQQW3e87t zN(~||De*0?cqM&&Wb$+%rG0|0e~IEELK7ze$BvBXO-+r?&g_dtG03q}8k5WK;oW!K z@DPfwo)h$5cJ3vJCkkooEsuqXq{PZZY6$P*T5jUup8Zg0j$9`+Z&SQw`HWl_*Lquwx>!dGdqd6}>xnmaO{piv8gN>M7FHKaw6J3p+#Wn-;lm+{>z;aszg&SVxgV!GK?U(NZQm<@U0U#>E%u zZ#xwI?1LJGykg^`oP;vSIroBj0Uf&xxps@#(Rh+*1owcWhbOiEI z7L0h%$)!{l1h7I6rG08-g2L3zTuuQVa%qdo9Q^d9DlmAPk?Tc8yC?xw7Igv3=Mzry z*gWn=G|Ia_mWZc(b#PJQ`g&jk2k_(1dK*W52*5ZhTYLFqm@Qxd};zE0DzVty=rs$no&T zln^qES9tIc%@CLoR!=(3K*cshiP;zdRw&vaN}w0P0f6fgB|}r}((_NE93087?rH?R zrApgyoOjiSWLGgNz0d(=3@suw%<8^It<7g|=^nULs$f)VNduy$! zm-spAmpB`}Jy5g?h{{^d0E=2#|Dc{TcJd=4$)|7i!^b$YL;p3XgmNnK6?gPD&Tu7H zusT)S+2Clz;c(^Rot=$Mxlnm|$MISpt3l3PJ>)E^iqGLTq!suZr>4n*rckAItzKF zVM}!nqvuBwDOKFV*hvz$H1db_)X>*ogRE2eCyH0L=jYrq?Ks6R^PS@RQyKS!oLAP8Lp&tnc9` zEDV6@#2pxR<)auLM|If9z&^3;L0fs*g{0qLDo{Yf;-hpfkwl1)B$iToA10QQa~>TL z1GndTsysR{=7=86kdd+rzm}TYg? zrf1(}A}4pe$eI9?DJ+?!8nLl(ii z@$K6D&8HI2PS`J_!d*D*>G;_Ejp<)bjc zywzg{90XYhWjGqy;|y_*Sk?_VcxPYnU1(o{o328CONhm;^;ix$uE5j#l09ZkStutrWa_51J_PT1c zRYx>+ztd(I#R(_7!pZ%QAX#3GG1RiG><6MvIpEcx;jc~bVk17Auem{nK%lD4+&zHKNH*Y>{+pR8+ z9hoRRZKt2~tIJ5Ee^HdF%RlSZORK%&Bya9Ri`)?^d6ll7q)NSjk5g6Ba$2@Y2h5<; zDY;Qw>P$#s_5EpbM@UpZE~O?lt^ou}p8zVaws!#1DZVsRQ*eQwn#$!cNjozW?xtkPIL~>H* z%ZLdXsl3bg&yszEXUVLaak7HN`FpsoQR2}zdzMV%>O2W=#qCg}m-bDP(ZQ^4VlL5` z7k!at+5|o)J;RE9`vQBp;u8-m7NtP&M`2)gOxUaL;Cp&uV?x}R6BXtCcu*VbGxL%Y zW14b56nktHW$Cz}P4WAoB5?x+SoeNqql&x6z@Y=}7px-(Dku{XR(xfniaShpoXi#G z{W}|-hfTWbnh{k)QpU$_$%5@mX*A5OG@@!CkZQ&>6A@-AWRVrK5s8ZxK|)6k6+&Zk zq!7t0z@wMU2L3D}DjRtrcF`d!=bc!`WN|IrFN{Z2T(ojG5>tQ;u=wLnW;td7Qe2(A z^suU!th;yjAJe?X{l|F{AMAtySWK!dCdjEavK13JSBNQza}`E>PfwG{8c7(GR&b2W zdhF;d(b5=wSEtA#r)||}MRzLW0$8Z2af72eZHTIf(IkTME=$RJ8A*d`6r*D($JtRC zqZ7x-WTwJ2CE`RBsKL*#ZwY$^6AMbx$&S+KJ2X{t56k>ONMW%l(NHEh;uIX#sQa22 z;?b#ZL0my-&0y7mR6vL2txfZy;~P!JuADXf{?W9)qktu%1w7b0dxlK^klDvxJZ8$$ z)<(J4Uay8>1T6~Xete)1;TBwYlgYUBJ#X8}+Ajx=mbBXBTD9p-`Mkoo`+OVC2$NNT z*=8hfwpqoPI-cIZ-<{~~2hp4Q>nCLgU|q!^tS~Fatl2q?OH{6Sj5k0RTOjk&N`Qr} zs9KbT5@{zW$J)6zl*IfOPho5=JXGzVj zeprj(S$`DY%IoqjZk!e^Cue%|$9mF%mC>#I+%{c)tPS~ZHEG+b{1{>-GfgAAi!IaB z@&c%fHdyiIZ8)TJY_n;|TzHli?SR#pE}B@Lz1U9QXHCX}dh=HnRJIl}iPj%&M7qI&6=+4U}t0N&$Ff@JJ_CW-PCBF$qsJFwzf5z^}6APQ0Uc~ zae_&I-uiT-$z=!EWLtlhHBU7TKACNOB5Q)i!RD-Eu=%|8r|Apr$Y#xS=5zCSP~v>S-(`8tY5D%Mtt44SXpoE921 zUt3B`4LYW1v}h+9R#7ws6&ZAOQ2+RV1_`xk?cgjUvT1&eAxMazjxDljeHz)cf>@bN z)3gOZ-lmgq?PgJA(>z`4_z<({xA*ZzQE%4@&tc#F_C7P+KfNck?&M%^Gb_8WmEU57 zu@Lwt{~_9rMcx0&C@PJBGfzhI*XUsYG0?Lxdky=pKdbE z#3mV?X}^uY(kh}*cb22pHcrd-79@e2W)&_DLwOj+-Q$o_qBp2lKGt->_x6tkxJK}l zqzOXC29qN@;Kx|7*6K(JI6iT(eO%Judd>Bfm{dBw6RL1&;C-pjpN41#sVN3z9XpvW z{0*TlZ+o)oCx^K+bA9FqkhqFLC4gt=_5qx$p8X4}Y#37O-fD*C_Oa>e(Kfjg+HZv-x z=K5)1-6(FA1~HYE@hp0lFG^Io16J;FLSr|?sX;`BSLUXW1mWO)MOLqHUy)@3B8p|x zKRuVY#`OAR4~34UTFHd3GT9Tw_i3D0e3$gS9{nzDmQU||YA1FQ;^FM%3!`bC+DX=D zci79H#7;CRsqOGJNm<6>^W5f(%R79UNz$mADNgT>4qwL=hqYpdubAA~;Va;ntBE;$ z9<`P3;P7c9$9q=l@D=3Oarla6`RhA;`nQC5-r3^aNe<%&$XJqXaxjmE!z}VX67HWoJ>-5X(Oa+=4@1cq?pz zW##c043brnijb`#7#0)ALsue|wpe#fd231~#;c{BR=_LC?IZb<*Vh~=Mj#bJ-(II` zQh}Wtih7XV;~FxRg$%c0y}I5r=XgMI7G)~{ASFfu(pF~X}C>YczSt!R9I zrer>tnKmEJOqeTtuJZjFpX+>X@cYe~A#-b{&V0o8kNJEuQ#7CQ_cQ+9o+ #include #include +#include +#include void WriteWAVHeader(std::ofstream &file, DWORD length) { DWORD dataChunkSize = length; @@ -34,7 +36,13 @@ void WriteWAVHeader(std::ofstream &file, DWORD length) { file.write(reinterpret_cast(&dataChunkSize), 4); } -int main() { +int main(int argc, char** argv) { + std::cout << "Program start\n"; + if (argc != 2) { + std::cerr << "Wrong arguments!\n"; + return -1; + } + // 1) Initialize BASS: default device, 44100 Hz, no flags if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { std::cerr << "BASS_Init error: " << BASS_ErrorGetCode() << std::endl; @@ -50,7 +58,7 @@ int main() { } // Create decoding stream (no playback) - HSTREAM midiStream = BASS_MIDI_StreamCreateFile(FALSE, "Rapapara_POL_07753.mid", 0, 0, + HSTREAM midiStream = BASS_MIDI_StreamCreateFile(FALSE, argv[1], 0, 0, BASS_STREAM_DECODE | BASS_SAMPLE_FLOAT, 44100); if (!midiStream) { std::cerr << "BASS_MIDI_StreamCreateFile error: " << BASS_ErrorGetCode() << std::endl; @@ -81,11 +89,16 @@ int main() { const int bufferSize = 44100 * 2 * sizeof(float); // 1 second float stereo float buffer[44100 * 2]; + std::cout << "Synthesis start\n"; + + QWORD totalRead = 0; + QWORD totalStreamLength = BASS_ChannelGetLength(midiStream, BASS_POS_BYTE); + auto lastUpdate = std::chrono::steady_clock::now(); + while (true) { int bytes = BASS_ChannelGetData(midiStream, buffer, bufferSize); if (bytes <= 0) break; - // Convert float samples to 16-bit PCM short pcm[44100 * 2]; for (int i = 0; i < bytes / 4; ++i) { float sample = buffer[i] * 32767.0f; @@ -94,14 +107,18 @@ int main() { pcm[i] = static_cast(sample); } - wav.write(reinterpret_cast(pcm), bytes / 2); // float->16bit halves size - totalBytes += bytes / 2; + wav.write(reinterpret_cast(pcm), bytes / 2); + totalRead += bytes; + + float percent = (totalStreamLength > 0) ? (100.0f * totalRead / totalStreamLength) : 0.0f; + printf("\rProgress: %.2f%%", percent); } wav.seekp(0); WriteWAVHeader(wav, totalBytes); wav.close(); + std::cout << "\nSynthesis end\n"; std::cout << "Exported to output.wav" << std::endl; // 6) Clean up