RuudErmers / DelphiASIOVST-64-bit-Examples-2018

Some 64 bit VSTs (Crumar DS2, Modular, Syntorchestra, Mellotron) using DelphiASIOVST and Delphi Community Edition
15 stars 10 forks source link

How to close ASIO Driver Control Panel ? #1

Open SkybuckFlying opened 5 years ago

SkybuckFlying commented 5 years ago

Hello,

Maybe you can help, the problem is as follows:

Let's suppose the sequence of events happens as follows:

ASIOHost.ControlPanel;

ASIOHost.Active := True; // start audio

Now the problem is the user can change the ASIO buffers.

This can cause problems, the delphi ASIO code will cause access violation because it does not expect buffers to change in size.

What I would like to do is as follows:

ButtonControlPanelClick: ASIOHost.ControlPanel;

   ...  

Start: ASIOHost.CloseControlPanel; ButtonControlPanel.Enabled := False; ASIOHost.Active := True; // start audio

However I do not see a way to close the ASIOHost driver/control panel ?

Is there any way to close this panel as to prevent the user with messing with buffer sizes while the program is running and producing/playing audio buffers ?

(It could also be that it's just some bug in my program, not sure yet ;) but you could try it out in a test program and see if it bombs out... so far it seems to be a bit shady.. sometimes changing buffer size works sometimes not... even when program was stopped it would bomb out... might dive into this deeper later on kinda busy now, also I have creative labs software/dll so this is driver specific ;))

RuudErmers commented 5 years ago

Interesting question, I’d like to help, but can you send me a minimal example where this goes wrong?

I don’t think you can close the ASIO panel, but maybe we coulddive into to the Delphi code and see where things go wrong…

Bye, Ruud

From: Skybuck Flying [mailto:notifications@github.com] Sent: zaterdag 18 augustus 2018 20:24 To: RuudErmers/DelphiASIOVST-64-bit-Examples-2018 Cc: Subscribed Subject: [RuudErmers/DelphiASIOVST-64-bit-Examples-2018] How to close ASIO Driver Control Panel ? (#1)

Hello,

Maybe you can help, the problem is as follows:

Let's suppose the sequence of events happens as follows:

ASIOHost.ControlPanel;

ASIOHost.Active := True; // start audio

Now the problem is the user can change the ASIO buffers.

This can cause problems, the delphi ASIO code will cause access violation because it does not expect buffers to change in size.

What I would like to do is as follows:

ButtonControlPanelClick: ASIOHost.ControlPanel;

...

Start: ASIOHost.CloseControlPanel; ButtonControlPanel.Enabled := False; ASIOHost.Active := True; // start audio

However I do not see a way to close the ASIOHost driver/control panel ?

Is there any way to close this panel as to prevent the user with messing with buffer sizes while the program is running and producing/playing audio buffers ?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/RuudErmers/DelphiASIOVST-64-bit-Examples-2018/issues/1 , or mute the thread https://github.com/notifications/unsubscribe-auth/ADAZ1zt8Y7ZGIT7n4wwfRcuWIBJTcD7_ks5uSFu1gaJpZM4WCq4x . https://github.com/notifications/beacon/ADAZ12W_vlo5Iqig7DCyk0gzNdmBoADvks5uSFu1gaJpZM4WCq4x.gif

RuudErmers commented 5 years ago

Just tried an example of mine.

Added OnReset event in Asio component. No crash here!

procedure TViewASIOForm.ASIOHostAudioDataReset(Sender: TObject);

begin

ASIOHostAudioData.Active := False; // Stop Audio

ASIOHostAudioData.Active := True; // Start Audio

end;

From: Skybuck Flying [mailto:notifications@github.com] Sent: zaterdag 18 augustus 2018 20:24 To: RuudErmers/DelphiASIOVST-64-bit-Examples-2018 Cc: Subscribed Subject: [RuudErmers/DelphiASIOVST-64-bit-Examples-2018] How to close ASIO Driver Control Panel ? (#1)

Hello,

Maybe you can help, the problem is as follows:

Let's suppose the sequence of events happens as follows:

ASIOHost.ControlPanel;

ASIOHost.Active := True; // start audio

Now the problem is the user can change the ASIO buffers.

This can cause problems, the delphi ASIO code will cause access violation because it does not expect buffers to change in size.

What I would like to do is as follows:

ButtonControlPanelClick: ASIOHost.ControlPanel;

...

Start: ASIOHost.CloseControlPanel; ButtonControlPanel.Enabled := False; ASIOHost.Active := True; // start audio

However I do not see a way to close the ASIOHost driver/control panel ?

Is there any way to close this panel as to prevent the user with messing with buffer sizes while the program is running and producing/playing audio buffers ?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/RuudErmers/DelphiASIOVST-64-bit-Examples-2018/issues/1 , or mute the thread https://github.com/notifications/unsubscribe-auth/ADAZ1zt8Y7ZGIT7n4wwfRcuWIBJTcD7_ks5uSFu1gaJpZM4WCq4x . https://github.com/notifications/beacon/ADAZ12W_vlo5Iqig7DCyk0gzNdmBoADvks5uSFu1gaJpZM4WCq4x.gif

SkybuckFlying commented 5 years ago

Thanks for responding.

I have created a little test application.

The code which crashes is:

function TBeRoASIO.ControlPanel:TASIOError; assembler; {$ifDEF FPC} asm MOV ECX,SELF MOV ECX,DWORD PTR [ECX+ASIODriverInterface] MOV EAX,DWORD PTR [ECX] CALL DWORD PTR [EAX+baControlPanel] end; {$ELSE} asm MOV ECX,DWORD PTR [SELF] MOV ECX,DWORD PTR [ECX+ASIODriverInterface] MOV EAX,DWORD PTR [ECX] CALL DWORD PTR [EAX+baControlPanel] end; {$endif}

Sometimes it may crash at other places I've seen (some Delphi array code). This is an important note because this unit is conditionally compiled:

{$IFDEF OpenASIO} OpenAsio {$ELSE} BeroASIO {$ENDIF},

The version I am using 1.3 uses BeroASIO, this seems to be the default.

I will upload the test application to my webdrive (see link in third post below)

My question for you is what driver are you using ? I will also attach a screenshot.

Would be interesting to receive a screenshot back from you, so I can look at your driver's control panel that be funny, maybe I can also attach it in here...

Maybe window's api could be used to close this form which appears to be in a driver dll (?)

It could also be that my creative labs driver crashes and yours does not... and it takes a couple of tries.

One idea could be to use sikuli to automate this testing with a little script file. Sikuli can be used to "automate GUIs". Though this is so simpe a little "delphi clicker" could probably do it as well.

One problem is I don't know what your driver control panel looks like so I have a nice lazy excuse but it is valid lol... can't automate it for you I guess... you'd have to write the second part of this test application to customize automatic testing on your side.

Also make sure to set search path in project options. I will zip the entire thing so you can extract the exe if you want and run that instead... or compile from source code.

SkybuckFlying commented 5 years ago

ASIO Test Example

SkybuckFlying commented 5 years ago

Link to test program/source:

http://www.skybuck.org/Delphi/Tests/test%20asio%20crash.zip

SkybuckFlying commented 5 years ago

You could also try and re-create example yourself with this code:

(There is already an example in the original library which has same gui as the test application above) (So I used that fVol variable from it, it is a double set to 1.0)

function GetAudioSample : double; begin result := Random(20000) / 20000; end;

procedure TFormSoundSettings.ASIOHostBufferSwitch32(Sender: TObject; const InBuffer, OutBuffer: TAVDArrayOfSingleDynArray); var vChannelIndex : integer; vSampleIndex : integer; vSampleDouble : double; begin // vSampleRate := ASIOHost.SampleRate;

    for vSampleIndex := 0 to ASIOHost.BufferSize - 1 do
    begin
        vSampleDouble := GetAudioSample;

        for vChannelIndex := 0 to ASIOHost.OutputChannelCount - 1 do
        begin
            OutBuffer[vChannelIndex, vSampleIndex] := vSampleDouble * fVol;
        end;
    end;

end;

procedure TFormSoundSettings.ASIOHostBufferSwitch64(Sender: TObject; const InBuffer, OutBuffer: TAVDArrayOfDoubleDynArray); var vChannelIndex : integer; vSampleIndex : integer; // vSampleRate : double; vSampleDouble : double; begin // vSampleRate := ASIOHost.SampleRate;

    for vSampleIndex := 0 to ASIOHost.BufferSize - 1 do
    begin
        vSampleDouble := GetAudioSample;

        for vChannelIndex := 0 to ASIOHost.OutputChannelCount - 1 do
        begin
            OutBuffer[vChannelIndex, vSampleIndex] := vSampleDouble * fVol;
        end;
    end;

end;

RuudErmers commented 5 years ago

Hi, I tried to compile your example, but immediately noticed you are using another ASIOVST library as I am. I think I am using a newer version, so I'd suggest you upgrade to that version... There's no mention on BeroASIO in 'my' library...

SkybuckFlying commented 5 years ago

In that case I think your library will probably use OpenASIO only, not exactly sure what the difference is but I am guessing OpenASIO calls works via a DLL which wraps what BeroASIO does directly via COM interfaces. This could be the reason why BeroASIO was written in pure assembler for maximum speed. Would have to do a comparision between OpenASIO and BeroASIO to see how much the speed difference is.

For now you could try and adept the example to your library, this would probably require minimal changes, I am surprised you could not get it working cause the example is very minimal and the classes used seem to be the same. What is slightly different might be unit names.

I tried some other versions of this ASIO library once... not sure if it was yours, but I have some bad memories about that... maybe it was caused by the different unit names, but now I see that that might be the "breaking" problem. I have currently no time to break my existing application and no interest in upgrading just yet, I doubt it will solve any problems anyway, cause this is the first time you have heard of this problem so I am pretty sure your library will have the exact same problem. It would be very funny if code changes accidently solved it.

What is interesting is switching to OpenASIO. perhaps this intermediate layer has already found this problem and might prevent it I highly doubt it though.

Currently this bug issue has very low priority so it's on the back burner. Installing two slightly different ASIO libraries would confuse the hell out of me, so I am not going to do that just yet.

SkybuckFlying commented 5 years ago

Your library is 309 MB on disk in size, while the 1.3 version is 23.3 MB on disk. I find 309 MB for just a sound library a bit excessive, not sure why it's so big, there seemed to be some WAV and PNG files during extraction. I extracted it to search for matches for my example code and it matches.

I am done coding for today so gonna game a bit or so... I would need this library to be scaled down a bit in size if possible, cause 309 MB is just a bit much. I would like to copy it someday, maybe version it a little bit for future Delphi versions if it needs slight adjustments.

But here is a question for you though, what is better/different about your library vs the 1.3 version ?

Maybe this one has 64 bit support and the older only 32 bit ? Haven't tried 64 bit yet with old one I think.

Reporting this problem from other/older library for your/newer library is a bit cheaky I admit, but it could be the exact same problem. So I am kinda hoping that you would find the problem as well and find it kinda annoying and maybe find a fix for it, if not then that's ok. I would have to warn my future(?) users not to do that.

SkybuckFlying commented 5 years ago

During extraction I also noticed these files:

07/08/2018 03:37 4,740,857 UModularViewFrame.dfm.~16~ 07/08/2018 03:37 4,740,857 UModularViewFrame.dfm.~17~ 07/08/2018 03:37 4,740,857 UModularViewFrame.dfm.~18~ 07/08/2018 03:37 4,745,191 UModularViewFrame.dfm.~9~ 07/08/2018 03:37 672 UModularViewTestMain.dfm.~1~ 07/08/2018 03:37 674 UModularViewTestMain.dfm.~2~ 07/08/2018 03:37 807 UModularViewTestMain.dfm.~3~ 07/08/2018 03:37 1,086 UModularViewTestMain.dfm.~4~ 07/08/2018 03:37 1,176 UModularViewTestMain.dfm.~5~ 07/08/2018 03:37 1,367 UModularViewTestMain.pas.~1~ 07/08/2018 03:37 1,389 UModularViewTestMain.pas.~2~ 07/08/2018 03:37 1,559 UModularViewTestMain.pas.~3~ 07/08/2018 03:37 1,464 URMCModularView.pas.~1~ 07/08/2018 03:37 4,301 URMCSunriseControlPanel.pas.~23~ 07/08/2018 03:37 4,318 URMCSunriseControlPanel.pas.~24~ 07/08/2018 03:37 4,323 URMCSunriseControlPanel.pas.~25~ 07/08/2018 03:37 4,308 URMCSunriseControlPanel.pas.~26~ 07/08/2018 03:37 4,286 URMCSunriseControlPanel.pas.~27~ 07/08/2018 03:37 4,287 URMCSunriseControlPanel.pas.~28~ 07/08/2018 03:37 4,288 URMCSunriseControlPanel.pas.~29~ 07/08/2018 03:37 4,167 URMCSunriseControlPanel.pas.~30~ 07/08/2018 03:37 3,989 URMCSunriseControlPanel.pas.~31~ 07/08/2018 03:37 4,174 URMCSunriseControlPanel.pas.~32~ 07/08/2018 03:37 769 URMCSunriseFrame.dfm.~1~ 07/08/2018 03:37 414 URMCSunriseFrame.dfm.~2~ 07/08/2018 03:37 414 URMCSunriseFrame.dfm.~3~ 07/08/2018 03:37 415 URMCSunriseLFO.dfm.~1~ 07/08/2018 03:37 398 URMCSunriseLFO.dfm.~2~ 07/08/2018 03:37 398 URMCSunriseLFO.dfm.~3~ 07/08/2018 03:37 4,254 URMCSunriseLFO.pas.~1~ 07/08/2018 03:37 4,504 URMCSunriseLFO.pas.~2~ 07/08/2018 03:37 415 URMCSunriseOSC.dfm.~1~ 07/08/2018 03:37 398 URMCSunriseOSC.dfm.~2~ 07/08/2018 03:37 398 URMCSunriseOSC.dfm.~3~ 07/08/2018 03:37 397 URMCSunriseOSC.dfm.~4~ 07/08/2018 03:37 7,607 URMCSunriseOSC.pas.~10~ 07/08/2018 03:37 7,584 URMCSunriseOSC.pas.~11~ 07/08/2018 03:37 7,605 URMCSunriseOSC.pas.~12~ 07/08/2018 03:37 7,605 URMCSunriseOSC.pas.~13~ 07/08/2018 03:37 6,975 URMCSunriseOSC.pas.~4~ 07/08/2018 03:37 6,975 URMCSunriseOSC.pas.~5~ 07/08/2018 03:37 6,969 URMCSunriseOSC.pas.~6~ 07/08/2018 03:37 7,011 URMCSunriseOSC.pas.~7~ 07/08/2018 03:37 7,392 URMCSunriseOSC.pas.~8~ 07/08/2018 03:37 7,606 URMCSunriseOSC.pas.~9~ 07/08/2018 03:37 418 URMCSunrisePERF.dfm.~1~ 07/08/2018 03:37 401 URMCSunrisePERF.dfm.~2~ 07/08/2018 03:37 401 URMCSunrisePERF.dfm.~3~ 07/08/2018 03:37 418 URMCSunrisePERF.dfm.~4~ 07/08/2018 03:37 415 URMCSunriseVCA.dfm.~1~ 07/08/2018 03:37 398 URMCSunriseVCA.dfm.~2~ 07/08/2018 03:37 398 URMCSunriseVCA.dfm.~3~ 07/08/2018 03:37 415 URMCSunriseVCF.dfm.~1~ 07/08/2018 03:37 398 URMCSunriseVCF.dfm.~2~ 07/08/2018 03:37 4,384 URMCSunriseVCF.pas.~1~ 96 File(s) 47,659,951 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\RMCShared\RMCRo mpler__history

07/08/2018 03:37 5,115 URMCRomplerFrame.dfm.~10~ 07/08/2018 03:37 5,163 URMCRomplerFrame.dfm.~11~ 07/08/2018 03:37 431 URMCRomplerFrame.dfm.~2~ 07/08/2018 03:37 407 URMCRomplerFrame.dfm.~3~ 07/08/2018 03:37 407 URMCRomplerFrame.dfm.~4~ 07/08/2018 03:37 937 URMCRomplerFrame.dfm.~5~ 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.~6~ 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.~7~ 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.~8~ 07/08/2018 03:37 5,293 URMCRomplerFrame.dfm.~9~ 07/08/2018 03:37 1,142 URMCRomplerFrame.pas.~10~ 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.~1~ 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.~2~ 07/08/2018 03:37 766 URMCRomplerFrame.pas.~3~ 07/08/2018 03:37 847 URMCRomplerFrame.pas.~4~ 07/08/2018 03:37 974 URMCRomplerFrame.pas.~5~ 07/08/2018 03:37 1,062 URMCRomplerFrame.pas.~6~ 07/08/2018 03:37 1,348 URMCRomplerFrame.pas.~7~ 07/08/2018 03:37 1,142 URMCRomplerFrame.pas.~8~ 07/08/2018 03:37 1,492 URMCRomplerFrame.pas.~9~ 07/08/2018 03:37 1,867 URMCRomplerView.pas.~19~ 07/08/2018 03:37 1,901 URMCRomplerView.pas.~20~ 07/08/2018 03:37 1,957 URMCRomplerView.pas.~21~ 07/08/2018 03:37 1,956 URMCRomplerView.pas.~22~ 07/08/2018 03:37 1,964 URMCRomplerView.pas.~23~ 07/08/2018 03:37 1,968 URMCRomplerView.pas.~24~ 07/08/2018 03:37 1,870 URMCRomplerView.pas.~25~ 07/08/2018 03:37 1,866 URMCRomplerView.pas.~26~ 07/08/2018 03:37 1,834 URMCRomplerView.pas.~27~ 07/08/2018 03:37 1,835 URMCRomplerView.pas.~28~ 30 File(s) 65,493 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\RMCShared\RMCSy ntorchestra__history

07/08/2018 03:37 431 URMCRomplerFrame.dfm.~1~ 07/08/2018 03:37 431 URMCRomplerFrame.dfm.~2~ 07/08/2018 03:37 407 URMCRomplerFrame.dfm.~3~ 07/08/2018 03:37 407 URMCRomplerFrame.dfm.~4~ 07/08/2018 03:37 937 URMCRomplerFrame.dfm.~5~ 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.~6~ 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.~7~ 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.~1~ 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.~2~ 07/08/2018 03:37 766 URMCRomplerFrame.pas.~3~ 07/08/2018 03:37 847 URMCRomplerFrame.pas.~4~ 07/08/2018 03:37 974 URMCRomplerFrame.pas.~5~ 07/08/2018 03:37 1,062 URMCRomplerFrame.pas.~6~ 07/08/2018 03:37 1,348 URMCRomplerFrame.pas.~7~ 07/08/2018 03:37 11,689 URMCRomplerView.pas.~1~ 07/08/2018 03:37 1,485 URMCRomplerView.pas.~2~ 07/08/2018 03:37 1,485 URMCRomplerView.pas.~3~ 07/08/2018 03:37 1,485 URMCRomplerView.pas.~4~ 07/08/2018 03:37 1,490 URMCRomplerView.pas.~5~ 07/08/2018 03:37 1,469 URMCRomplerView.pas.~6~ 07/08/2018 03:37 1,691 URMCRomplerView.pas.~7~ 07/08/2018 03:37 1,690 URMCRomplerView.pas.~8~ 07/08/2018 03:37 1,682 URMCRomplerView.pas.~9~ 07/08/2018 03:37 30,664 URMCSyntorchestraFrame.dfm.~10~ 07/08/2018 03:37 5,209 URMCSyntorchestraFrame.dfm.~1~ 07/08/2018 03:37 5,133 URMCSyntorchestraFrame.dfm.~2~ 07/08/2018 03:37 17,766 URMCSyntorchestraFrame.dfm.~3~ 07/08/2018 03:37 17,766 URMCSyntorchestraFrame.dfm.~4~ 07/08/2018 03:37 17,766 URMCSyntorchestraFrame.dfm.~5~ 07/08/2018 03:37 24,561 URMCSyntorchestraFrame.dfm.~6~ 07/08/2018 03:37 30,723 URMCSyntorchestraFrame.dfm.~7~ 07/08/2018 03:37 30,698 URMCSyntorchestraFrame.dfm.~8~ 07/08/2018 03:37 30,656 URMCSyntorchestraFrame.dfm.~9~ 07/08/2018 03:37 1,148 URMCSyntorchestraFrame.pas.~1~ 07/08/2018 03:37 1,172 URMCSyntorchestraFrame.pas.~2~ 07/08/2018 03:37 2,040 URMCSyntorchestraFrame.pas.~3~ 07/08/2018 03:37 2,040 URMCSyntorchestraFrame.pas.~4~ 07/08/2018 03:37 2,957 URMCSyntorchestraView.pas.~18~ 07/08/2018 03:37 2,955 URMCSyntorchestraView.pas.~19~ 07/08/2018 03:37 2,956 URMCSyntorchestraView.pas.~20~ 07/08/2018 03:37 2,956 URMCSyntorchestraView.pas.~21~ 07/08/2018 03:37 2,956 URMCSyntorchestraView.pas.~22~ 07/08/2018 03:37 2,955 URMCSyntorchestraView.pas.~23~ 07/08/2018 03:37 2,947 URMCSyntorchestraView.pas.~24~ 07/08/2018 03:37 2,948 URMCSyntorchestraView.pas.~25~ 07/08/2018 03:37 2,943 URMCSyntorchestraView.pas.~26~ 07/08/2018 03:37 2,942 URMCSyntorchestraView.pas.~27~ 47 File(s) 293,373 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\RMCShared\RMCWa vePlayerView__history

07/08/2018 03:37 431 URMCRomplerFrame.dfm.~1~ 07/08/2018 03:37 431 URMCRomplerFrame.dfm.~2~ 07/08/2018 03:37 407 URMCRomplerFrame.dfm.~3~ 07/08/2018 03:37 407 URMCRomplerFrame.dfm.~4~ 07/08/2018 03:37 937 URMCRomplerFrame.dfm.~5~ 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.~6~ 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.~7~ 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.~1~ 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.~2~ 07/08/2018 03:37 766 URMCRomplerFrame.pas.~3~ 07/08/2018 03:37 847 URMCRomplerFrame.pas.~4~ 07/08/2018 03:37 974 URMCRomplerFrame.pas.~5~ 07/08/2018 03:37 1,062 URMCRomplerFrame.pas.~6~ 07/08/2018 03:37 1,348 URMCRomplerFrame.pas.~7~ 07/08/2018 03:37 11,689 URMCRomplerView.pas.~1~ 07/08/2018 03:37 1,485 URMCRomplerView.pas.~2~ 07/08/2018 03:37 1,485 URMCRomplerView.pas.~3~ 07/08/2018 03:37 1,485 URMCRomplerView.pas.~4~ 07/08/2018 03:37 1,490 URMCRomplerView.pas.~5~ 07/08/2018 03:37 1,469 URMCRomplerView.pas.~6~ 07/08/2018 03:37 1,691 URMCRomplerView.pas.~7~ 07/08/2018 03:37 1,690 URMCRomplerView.pas.~8~ 07/08/2018 03:37 1,682 URMCRomplerView.pas.~9~ 07/08/2018 03:37 1,827 URMCWavePlayerFrame.dfm.~10~ 07/08/2018 03:37 5,209 URMCWavePlayerFrame.dfm.~1~ 07/08/2018 03:37 5,218 URMCWavePlayerFrame.dfm.~2~ 07/08/2018 03:37 641 URMCWavePlayerFrame.dfm.~3~ 07/08/2018 03:37 1,687 URMCWavePlayerFrame.dfm.~4~ 07/08/2018 03:37 1,734 URMCWavePlayerFrame.dfm.~5~ 07/08/2018 03:37 2,168 URMCWavePlayerFrame.dfm.~6~ 07/08/2018 03:37 2,168 URMCWavePlayerFrame.dfm.~7~ 07/08/2018 03:37 2,198 URMCWavePlayerFrame.dfm.~8~ 07/08/2018 03:37 1,827 URMCWavePlayerFrame.dfm.~9~ 07/08/2018 03:37 1,396 URMCWavePlayerFrame.pas.~10~ 07/08/2018 03:37 1,145 URMCWavePlayerFrame.pas.~1~ 07/08/2018 03:37 1,157 URMCWavePlayerFrame.pas.~2~ 07/08/2018 03:37 857 URMCWavePlayerFrame.pas.~3~ 07/08/2018 03:37 985 URMCWavePlayerFrame.pas.~4~ 07/08/2018 03:37 1,132 URMCWavePlayerFrame.pas.~5~ 07/08/2018 03:37 1,275 URMCWavePlayerFrame.pas.~6~ 07/08/2018 03:37 1,473 URMCWavePlayerFrame.pas.~7~ 07/08/2018 03:37 1,473 URMCWavePlayerFrame.pas.~8~ 07/08/2018 03:37 1,733 URMCWavePlayerFrame.pas.~9~ 07/08/2018 03:37 1,678 URMCWavePlayerView.pas.~1~ 07/08/2018 03:37 1,702 URMCWavePlayerView.pas.~2~ 07/08/2018 03:37 1,705 URMCWavePlayerView.pas.~3~ 07/08/2018 03:37 2,397 URMCWavePlayerView.pas.~4~ 07/08/2018 03:37 2,400 URMCWavePlayerView.pas.~5~ 07/08/2018 03:37 2,432 URMCWavePlayerView.pas.~6~ 07/08/2018 03:37 2,400 URMCWavePlayerView.pas.~7~ 07/08/2018 03:37 1,959 URMCWavePlayerView.pas.~8~ 07/08/2018 03:37 1,894 URMCWavePlayerView.pas.~9~ 52 File(s) 102,386 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREC DS2

07/08/2018 03:37 13,500 XRECDS2D.~dsk 1 File(s) 13,500 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREM ODULAR

07/08/2018 03:37 14,453 XREMODULAR.~dsk 1 File(s) 14,453 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREW avePlayer

07/08/2018 03:37 17,559 PrjGroupXREWavePlayer.~dsk 1 File(s) 17,559 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREW avePlayer\TestPlugin

07/08/2018 03:37 12,866 prjMidiInOut.~dsk 1 File(s) 12,866 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREW avePlayer\TestPlugin__history

07/08/2018 03:37 264 prjMidiInOut.dpr.~1~ 07/08/2018 03:37 271 prjMidiInOut.dpr.~2~ 07/08/2018 03:37 314 prjMidiInOut.dpr.~3~ 07/08/2018 03:37 359 prjMidiInOut.dpr.~4~ 07/08/2018 03:37 776 prjMidiLearn.dpr.~10~ 07/08/2018 03:37 406 prjMidiLearn.dpr.~1~ 07/08/2018 03:37 406 prjMidiLearn.dpr.~2~ 07/08/2018 03:37 406 prjMidiLearn.dpr.~3~ 07/08/2018 03:37 406 prjMidiLearn.dpr.~4~ 07/08/2018 03:37 406 prjMidiLearn.dpr.~5~ 07/08/2018 03:37 406 prjMidiLearn.dpr.~6~ 07/08/2018 03:37 457 prjMidiLearn.dpr.~7~ 07/08/2018 03:37 641 prjMidiLearn.dpr.~8~ 07/08/2018 03:37 722 prjMidiLearn.dpr.~9~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~10~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~11~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~12~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~13~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~14~ 07/08/2018 03:37 4,658 prjMidiLearn.dproj.local.~15~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~6~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~7~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~8~ 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.~9~ 07/08/2018 03:37 827 prjTestPlugin.dpr.~1~ 07/08/2018 03:37 419 prjTestPlugin.dpr.~2~ 07/08/2018 03:37 4,675 prjTestPlugin.dproj.local.~1~ 07/08/2018 03:37 4,790 prjTestPlugin.dproj.local.~2~ 07/08/2018 03:37 2,694 UMain.dfm.~26~ 07/08/2018 03:37 2,711 UMain.dfm.~27~ 07/08/2018 03:37 3,311 UMain.dfm.~28~ 07/08/2018 03:37 3,343 UMain.dfm.~29~ 07/08/2018 03:37 1,063 UMain.dfm.~30~ 07/08/2018 03:37 3,343 UMain.dfm.~31~ 07/08/2018 03:37 940 UMain.dfm.~32~ 07/08/2018 03:37 940 UMain.dfm.~33~ 07/08/2018 03:37 943 UMain.dfm.~34~ 07/08/2018 03:37 1,099 UMain.dfm.~35~ 07/08/2018 03:37 2,723 UMain.pas.~1~ 39 File(s) 80,017 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREW avePlayer\TestWavePlayer__history

07/08/2018 03:37 229 prjTestWavePlayer.dpr.~1~ 07/08/2018 03:37 375 prjTestWavePlayer.dpr.~2~ 07/08/2018 03:37 423 prjTestWavePlayer.dpr.~3~ 07/08/2018 03:37 476 prjTestWavePlayer.dpr.~4~ 07/08/2018 03:37 1,506 prjTestWavePlayer.dproj.local.~1~ 07/08/2018 03:37 314 UMain.dfm.~1~ 07/08/2018 03:37 469 UMain.dfm.~2~ 07/08/2018 03:37 469 UMain.dfm.~3~ 07/08/2018 03:37 337 UMain.pas.~1~ 07/08/2018 03:37 3,753 UMain.pas.~2~ 07/08/2018 03:37 3,736 UMain.pas.~3~ 07/08/2018 03:37 4,373 UMain.pas.~4~ 07/08/2018 03:37 4,414 UMain.pas.~5~ 07/08/2018 03:37 4,435 UMain.pas.~6~ 07/08/2018 03:37 4,436 UMain.pas.~7~ 15 File(s) 29,745 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTShared__his tory

07/08/2018 03:37 12,773 XSynthModule.pas.~1~ 1 File(s) 12,773 bytes

 Total Files Listed:
         828 File(s)    111,254,008 bytes
           0 Dir(s)  17,733,226,496 bytes free

111 MB of Delphi backup files ?! WTF why would you keep these files ?!?!? Especially on a GIT versioning system ? Seems somewhat amateuristic... perhaps I am chatting with the wrong guy ;)

I do versioning myself by copieing olders and then placing a comment in the version folder... works 1000x faster than GIT... GIT nice for large projects like operating systems or so though, where a simply copy might not be possible.

I do dispice these delphi backup files though... very tiring/boring to see these... programmers should not be needing these kind of "facilities/services" from an IDE and simply copy there folders before starting new work on the next day in a new folder and IDEs should ofcourse never crash and if they do programmers must click SAVE as often as possible. That's how I work with Delphi and Delphi does have plenty of crashes though. Personally I see no value in these backup files and can just confuse me even more... I do so much heavy editing that I want to decide when a SAVE of actual USEFULL editing is WARANTED... instead of Delphi mindlessly and stupidly saving my editing work at unpredictable moments ?! When the fuck does it even make these backup files ?!

As if the time of "saving work" is irrelevant ?! Does it do it at the start when working on it ? During editing ? Does it slow down my typing in the IDE ? Can it lead to fuckups cause the HD is taking some time and spinning up from IDLE perhaps ? Additional logic complexity that might make the IDE FAIL... what if it runs out of disk space LOL. So many things can go wrong with this feature... Very boring to test additional failure scenerios. Totally hate this ~x~ feature of Delphi.

Yeah it's in the __history folder... there is no explanation of these new features when I first start the new IDE. This should be explained what it is, and how to use it. I still don't know how to use it, it annoys the hell out of me ?! Are these "changes" files ? Or complete copies ?! From the size of it I would say complete copies.

What I hate most about these backup files is it completely ignores the possiblity that I may already have a versioning system in place. A manual one as it may be. I totally do not need this functionality, who has ever asked for this functionality ?! Totally weird. And worst of all... It's on by default without telling anybody... and here I am, wasting 111 MB on your library project on my disk ! ;) :)

Now try and multiply this by X ammount of libraries and you can hopefully start to seem my annoyance with this phenomenon ;)

Sorry for ranting on your github issue list, but I have to vent somewhere =D

(Also really sad how todays communication technology will interfere with my expresions, this git markup language screws some important information up, kinda sucks, another annoyance of todays html world ;))

I guess what I am wondering about is this:

  1. Are you even aware of the existance of these files and know what it is ?

  2. Do you care ?

  3. Is this your way of versioning your software ? If it is then I am completely fine with that. I am all about keeping "development history" of projects.

However since this __history feature is so new I kinda doubt that... I would be a bit surprised if this is your method of "versioning" on the local computer when not githubbing ;) Curious ;)

It might be interesting to look at this history some day, but currently not interested in it, so it will end up delete on my drive if I do decide to ever use this... not sure when that will be, currently have no real need for it. Though if you manage to find and fix this bug/issue then that would make my happy and put a smile on my face and give me a real reason to upgrade ! =D Unless perhaps sometime in the future I might need a 64 bit version ;)

There also seem to be some nice VST in it... I don't even know how to use them, unfortunately not into VST-ing and music/sound production wish I was though...

I want to "audiolize" my corewars simulator. If you have any ideas how to "audiolize" computer instructions in general I would be interested in discussing this further with you ! ;) :)

Perhaps corewars simulator could be turned into some "digital musical instrument" that would be funny.

Currently my main interest is in real-time sound generation and manipulation so programmer of a corewar/redcode warrior gets some sense of what the warrior is doing, think of this as digital evolution or warfare between computer programs ;) :)

RuudErmers commented 5 years ago

Hi Skybuck,

I’ve read your comments with interest.

Let me clearify a few things:

First off, I’ve published these sources as a reference, so that others can have a peek at it and adapt things to their code if they like.

I am not publishing this as a ‘library’ ,optimized for use in other products.

Secondly, the main focus for this is on the VSTs which I create. These are 64 bit DLLs, written in the latest Delphi and is a showcase so that others

can see that this is indeed still possible AND fun to do. I want to show people that Delphi, and this library, is still a valid and good choice. (I am also using JUCE with C++ for this)

Most importantly, the Asio wrapping for me is just an extra interface so I can test the VST code in a standalone application with easy debugging.

After that, I just build the full project tree and test the DLLs in multiple DAWs.

Thirdly, this code is a snapshot of my work. It’s just a copy of part of the sources, where I am not using GIT. When I published the sources,

I carefully made sure that this code was self-contained, but I did not bother to make a minimal upload, by removing all history stuff or perhaps

unused code. (I think I mentioned the latter).

As for the ASIO library and your comment on me trying to make your example work:

I noticed you are using an old framework I think, I am using the official work found here: https://sourceforge.net/projects/delphiasiovst/

Christian Budde is working on version 1.5, but I use version 1.4 with some modifications. I don’t see any mention on Bero and for me that’s no issue.

Instead you wanting me to adjust your example, I thought it would be wiser for you to upgrade to the new code, especially since

I already mentioned that with the new version your problem does not exist. As you state it’s just a small amount of work, so give it a try!

From: Skybuck Flying [mailto:notifications@github.com] Sent: woensdag 22 augustus 2018 00:42 To: RuudErmers/DelphiASIOVST-64-bit-Examples-2018 Cc: Ruud Ermers; Comment Subject: Re: [RuudErmers/DelphiASIOVST-64-bit-Examples-2018] How to close ASIO Driver Control Panel ? (#1)

During extraction I also noticed these files:

07/08/2018 03:37 4,740,857 UModularViewFrame.dfm.16 07/08/2018 03:37 4,740,857 UModularViewFrame.dfm.17 07/08/2018 03:37 4,740,857 UModularViewFrame.dfm.18 07/08/2018 03:37 4,745,191 UModularViewFrame.dfm.9 07/08/2018 03:37 672 UModularViewTestMain.dfm.1 07/08/2018 03:37 674 UModularViewTestMain.dfm.2 07/08/2018 03:37 807 UModularViewTestMain.dfm.3 07/08/2018 03:37 1,086 UModularViewTestMain.dfm.4 07/08/2018 03:37 1,176 UModularViewTestMain.dfm.5 07/08/2018 03:37 1,367 UModularViewTestMain.pas.1 07/08/2018 03:37 1,389 UModularViewTestMain.pas.2 07/08/2018 03:37 1,559 UModularViewTestMain.pas.3 07/08/2018 03:37 1,464 URMCModularView.pas.1 07/08/2018 03:37 4,301 URMCSunriseControlPanel.pas.23 07/08/2018 03:37 4,318 URMCSunriseControlPanel.pas.24 07/08/2018 03:37 4,323 URMCSunriseControlPanel.pas.25 07/08/2018 03:37 4,308 URMCSunriseControlPanel.pas.26 07/08/2018 03:37 4,286 URMCSunriseControlPanel.pas.27 07/08/2018 03:37 4,287 URMCSunriseControlPanel.pas.28 07/08/2018 03:37 4,288 URMCSunriseControlPanel.pas.29 07/08/2018 03:37 4,167 URMCSunriseControlPanel.pas.30 07/08/2018 03:37 3,989 URMCSunriseControlPanel.pas.31 07/08/2018 03:37 4,174 URMCSunriseControlPanel.pas.32 07/08/2018 03:37 769 URMCSunriseFrame.dfm.1 07/08/2018 03:37 414 URMCSunriseFrame.dfm.2 07/08/2018 03:37 414 URMCSunriseFrame.dfm.3 07/08/2018 03:37 415 URMCSunriseLFO.dfm.1 07/08/2018 03:37 398 URMCSunriseLFO.dfm.2 07/08/2018 03:37 398 URMCSunriseLFO.dfm.3 07/08/2018 03:37 4,254 URMCSunriseLFO.pas.1 07/08/2018 03:37 4,504 URMCSunriseLFO.pas.2 07/08/2018 03:37 415 URMCSunriseOSC.dfm.1 07/08/2018 03:37 398 URMCSunriseOSC.dfm.2 07/08/2018 03:37 398 URMCSunriseOSC.dfm.3 07/08/2018 03:37 397 URMCSunriseOSC.dfm.4 07/08/2018 03:37 7,607 URMCSunriseOSC.pas.10 07/08/2018 03:37 7,584 URMCSunriseOSC.pas.11 07/08/2018 03:37 7,605 URMCSunriseOSC.pas.12 07/08/2018 03:37 7,605 URMCSunriseOSC.pas.13 07/08/2018 03:37 6,975 URMCSunriseOSC.pas.4 07/08/2018 03:37 6,975 URMCSunriseOSC.pas.5 07/08/2018 03:37 6,969 URMCSunriseOSC.pas.6 07/08/2018 03:37 7,011 URMCSunriseOSC.pas.7 07/08/2018 03:37 7,392 URMCSunriseOSC.pas.8 07/08/2018 03:37 7,606 URMCSunriseOSC.pas.9 07/08/2018 03:37 418 URMCSunrisePERF.dfm.1 07/08/2018 03:37 401 URMCSunrisePERF.dfm.2 07/08/2018 03:37 401 URMCSunrisePERF.dfm.3 07/08/2018 03:37 418 URMCSunrisePERF.dfm.4 07/08/2018 03:37 415 URMCSunriseVCA.dfm.1 07/08/2018 03:37 398 URMCSunriseVCA.dfm.2 07/08/2018 03:37 398 URMCSunriseVCA.dfm.3 07/08/2018 03:37 415 URMCSunriseVCF.dfm.1 07/08/2018 03:37 398 URMCSunriseVCF.dfm.2 07/08/2018 03:37 4,384 URMCSunriseVCF.pas.1 96 File(s) 47,659,951 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\RMCShared\RMCRo mpler__history

07/08/2018 03:37 5,115 URMCRomplerFrame.dfm.10 07/08/2018 03:37 5,163 URMCRomplerFrame.dfm.11 07/08/2018 03:37 431 URMCRomplerFrame.dfm.2 07/08/2018 03:37 407 URMCRomplerFrame.dfm.3 07/08/2018 03:37 407 URMCRomplerFrame.dfm.4 07/08/2018 03:37 937 URMCRomplerFrame.dfm.5 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.6 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.7 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.8 07/08/2018 03:37 5,293 URMCRomplerFrame.dfm.9 07/08/2018 03:37 1,142 URMCRomplerFrame.pas.10 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.1 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.2 07/08/2018 03:37 766 URMCRomplerFrame.pas.3 07/08/2018 03:37 847 URMCRomplerFrame.pas.4 07/08/2018 03:37 974 URMCRomplerFrame.pas.5 07/08/2018 03:37 1,062 URMCRomplerFrame.pas.6 07/08/2018 03:37 1,348 URMCRomplerFrame.pas.7 07/08/2018 03:37 1,142 URMCRomplerFrame.pas.8 07/08/2018 03:37 1,492 URMCRomplerFrame.pas.9 07/08/2018 03:37 1,867 URMCRomplerView.pas.19 07/08/2018 03:37 1,901 URMCRomplerView.pas.20 07/08/2018 03:37 1,957 URMCRomplerView.pas.21 07/08/2018 03:37 1,956 URMCRomplerView.pas.22 07/08/2018 03:37 1,964 URMCRomplerView.pas.23 07/08/2018 03:37 1,968 URMCRomplerView.pas.24 07/08/2018 03:37 1,870 URMCRomplerView.pas.25 07/08/2018 03:37 1,866 URMCRomplerView.pas.26 07/08/2018 03:37 1,834 URMCRomplerView.pas.27 07/08/2018 03:37 1,835 URMCRomplerView.pas.28 30 File(s) 65,493 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\RMCShared\RMCSy ntorchestra__history

07/08/2018 03:37 431 URMCRomplerFrame.dfm.1 07/08/2018 03:37 431 URMCRomplerFrame.dfm.2 07/08/2018 03:37 407 URMCRomplerFrame.dfm.3 07/08/2018 03:37 407 URMCRomplerFrame.dfm.4 07/08/2018 03:37 937 URMCRomplerFrame.dfm.5 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.6 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.7 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.1 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.2 07/08/2018 03:37 766 URMCRomplerFrame.pas.3 07/08/2018 03:37 847 URMCRomplerFrame.pas.4 07/08/2018 03:37 974 URMCRomplerFrame.pas.5 07/08/2018 03:37 1,062 URMCRomplerFrame.pas.6 07/08/2018 03:37 1,348 URMCRomplerFrame.pas.7 07/08/2018 03:37 11,689 URMCRomplerView.pas.1 07/08/2018 03:37 1,485 URMCRomplerView.pas.2 07/08/2018 03:37 1,485 URMCRomplerView.pas.3 07/08/2018 03:37 1,485 URMCRomplerView.pas.4 07/08/2018 03:37 1,490 URMCRomplerView.pas.5 07/08/2018 03:37 1,469 URMCRomplerView.pas.6 07/08/2018 03:37 1,691 URMCRomplerView.pas.7 07/08/2018 03:37 1,690 URMCRomplerView.pas.8 07/08/2018 03:37 1,682 URMCRomplerView.pas.9 07/08/2018 03:37 30,664 URMCSyntorchestraFrame.dfm.10 07/08/2018 03:37 5,209 URMCSyntorchestraFrame.dfm.1 07/08/2018 03:37 5,133 URMCSyntorchestraFrame.dfm.2 07/08/2018 03:37 17,766 URMCSyntorchestraFrame.dfm.3 07/08/2018 03:37 17,766 URMCSyntorchestraFrame.dfm.4 07/08/2018 03:37 17,766 URMCSyntorchestraFrame.dfm.5 07/08/2018 03:37 24,561 URMCSyntorchestraFrame.dfm.6 07/08/2018 03:37 30,723 URMCSyntorchestraFrame.dfm.7 07/08/2018 03:37 30,698 URMCSyntorchestraFrame.dfm.8 07/08/2018 03:37 30,656 URMCSyntorchestraFrame.dfm.9 07/08/2018 03:37 1,148 URMCSyntorchestraFrame.pas.1 07/08/2018 03:37 1,172 URMCSyntorchestraFrame.pas.2 07/08/2018 03:37 2,040 URMCSyntorchestraFrame.pas.3 07/08/2018 03:37 2,040 URMCSyntorchestraFrame.pas.4 07/08/2018 03:37 2,957 URMCSyntorchestraView.pas.18 07/08/2018 03:37 2,955 URMCSyntorchestraView.pas.19 07/08/2018 03:37 2,956 URMCSyntorchestraView.pas.20 07/08/2018 03:37 2,956 URMCSyntorchestraView.pas.21 07/08/2018 03:37 2,956 URMCSyntorchestraView.pas.22 07/08/2018 03:37 2,955 URMCSyntorchestraView.pas.23 07/08/2018 03:37 2,947 URMCSyntorchestraView.pas.24 07/08/2018 03:37 2,948 URMCSyntorchestraView.pas.25 07/08/2018 03:37 2,943 URMCSyntorchestraView.pas.26 07/08/2018 03:37 2,942 URMCSyntorchestraView.pas.27 47 File(s) 293,373 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\RMCShared\RMCWa vePlayerView__history

07/08/2018 03:37 431 URMCRomplerFrame.dfm.1 07/08/2018 03:37 431 URMCRomplerFrame.dfm.2 07/08/2018 03:37 407 URMCRomplerFrame.dfm.3 07/08/2018 03:37 407 URMCRomplerFrame.dfm.4 07/08/2018 03:37 937 URMCRomplerFrame.dfm.5 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.6 07/08/2018 03:37 5,209 URMCRomplerFrame.dfm.7 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.1 07/08/2018 03:37 2,161 URMCRomplerFrame.pas.2 07/08/2018 03:37 766 URMCRomplerFrame.pas.3 07/08/2018 03:37 847 URMCRomplerFrame.pas.4 07/08/2018 03:37 974 URMCRomplerFrame.pas.5 07/08/2018 03:37 1,062 URMCRomplerFrame.pas.6 07/08/2018 03:37 1,348 URMCRomplerFrame.pas.7 07/08/2018 03:37 11,689 URMCRomplerView.pas.1 07/08/2018 03:37 1,485 URMCRomplerView.pas.2 07/08/2018 03:37 1,485 URMCRomplerView.pas.3 07/08/2018 03:37 1,485 URMCRomplerView.pas.4 07/08/2018 03:37 1,490 URMCRomplerView.pas.5 07/08/2018 03:37 1,469 URMCRomplerView.pas.6 07/08/2018 03:37 1,691 URMCRomplerView.pas.7 07/08/2018 03:37 1,690 URMCRomplerView.pas.8 07/08/2018 03:37 1,682 URMCRomplerView.pas.9 07/08/2018 03:37 1,827 URMCWavePlayerFrame.dfm.10 07/08/2018 03:37 5,209 URMCWavePlayerFrame.dfm.1 07/08/2018 03:37 5,218 URMCWavePlayerFrame.dfm.2 07/08/2018 03:37 641 URMCWavePlayerFrame.dfm.3 07/08/2018 03:37 1,687 URMCWavePlayerFrame.dfm.4 07/08/2018 03:37 1,734 URMCWavePlayerFrame.dfm.5 07/08/2018 03:37 2,168 URMCWavePlayerFrame.dfm.6 07/08/2018 03:37 2,168 URMCWavePlayerFrame.dfm.7 07/08/2018 03:37 2,198 URMCWavePlayerFrame.dfm.8 07/08/2018 03:37 1,827 URMCWavePlayerFrame.dfm.9 07/08/2018 03:37 1,396 URMCWavePlayerFrame.pas.10 07/08/2018 03:37 1,145 URMCWavePlayerFrame.pas.1 07/08/2018 03:37 1,157 URMCWavePlayerFrame.pas.2 07/08/2018 03:37 857 URMCWavePlayerFrame.pas.3 07/08/2018 03:37 985 URMCWavePlayerFrame.pas.4 07/08/2018 03:37 1,132 URMCWavePlayerFrame.pas.5 07/08/2018 03:37 1,275 URMCWavePlayerFrame.pas.6 07/08/2018 03:37 1,473 URMCWavePlayerFrame.pas.7 07/08/2018 03:37 1,473 URMCWavePlayerFrame.pas.8 07/08/2018 03:37 1,733 URMCWavePlayerFrame.pas.9 07/08/2018 03:37 1,678 URMCWavePlayerView.pas.1 07/08/2018 03:37 1,702 URMCWavePlayerView.pas.2 07/08/2018 03:37 1,705 URMCWavePlayerView.pas.3 07/08/2018 03:37 2,397 URMCWavePlayerView.pas.4 07/08/2018 03:37 2,400 URMCWavePlayerView.pas.5 07/08/2018 03:37 2,432 URMCWavePlayerView.pas.6 07/08/2018 03:37 2,400 URMCWavePlayerView.pas.7 07/08/2018 03:37 1,959 URMCWavePlayerView.pas.8 07/08/2018 03:37 1,894 URMCWavePlayerView.pas.9 52 File(s) 102,386 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREC DS2

07/08/2018 03:37 13,500 XRECDS2D.~dsk 1 File(s) 13,500 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREM ODULAR

07/08/2018 03:37 14,453 XREMODULAR.~dsk 1 File(s) 14,453 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREW avePlayer

07/08/2018 03:37 17,559 PrjGroupXREWavePlayer.~dsk 1 File(s) 17,559 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREW avePlayer\TestPlugin

07/08/2018 03:37 12,866 prjMidiInOut.~dsk 1 File(s) 12,866 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREW avePlayer\TestPlugin__history

07/08/2018 03:37 264 prjMidiInOut.dpr.1 07/08/2018 03:37 271 prjMidiInOut.dpr.2 07/08/2018 03:37 314 prjMidiInOut.dpr.3 07/08/2018 03:37 359 prjMidiInOut.dpr.4 07/08/2018 03:37 776 prjMidiLearn.dpr.10 07/08/2018 03:37 406 prjMidiLearn.dpr.1 07/08/2018 03:37 406 prjMidiLearn.dpr.2 07/08/2018 03:37 406 prjMidiLearn.dpr.3 07/08/2018 03:37 406 prjMidiLearn.dpr.4 07/08/2018 03:37 406 prjMidiLearn.dpr.5 07/08/2018 03:37 406 prjMidiLearn.dpr.6 07/08/2018 03:37 457 prjMidiLearn.dpr.7 07/08/2018 03:37 641 prjMidiLearn.dpr.8 07/08/2018 03:37 722 prjMidiLearn.dpr.9 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.10 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.11 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.12 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.13 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.14 07/08/2018 03:37 4,658 prjMidiLearn.dproj.local.15 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.6 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.7 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.8 07/08/2018 03:37 3,922 prjMidiLearn.dproj.local.9 07/08/2018 03:37 827 prjTestPlugin.dpr.1 07/08/2018 03:37 419 prjTestPlugin.dpr.2 07/08/2018 03:37 4,675 prjTestPlugin.dproj.local.1 07/08/2018 03:37 4,790 prjTestPlugin.dproj.local.2 07/08/2018 03:37 2,694 UMain.dfm.26 07/08/2018 03:37 2,711 UMain.dfm.27 07/08/2018 03:37 3,311 UMain.dfm.28 07/08/2018 03:37 3,343 UMain.dfm.29 07/08/2018 03:37 1,063 UMain.dfm.30 07/08/2018 03:37 3,343 UMain.dfm.31 07/08/2018 03:37 940 UMain.dfm.32 07/08/2018 03:37 940 UMain.dfm.33 07/08/2018 03:37 943 UMain.dfm.34 07/08/2018 03:37 1,099 UMain.dfm.35 07/08/2018 03:37 2,723 UMain.pas.1 39 File(s) 80,017 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTPlugins\XREW avePlayer\TestWavePlayer__history

07/08/2018 03:37 229 prjTestWavePlayer.dpr.1 07/08/2018 03:37 375 prjTestWavePlayer.dpr.2 07/08/2018 03:37 423 prjTestWavePlayer.dpr.3 07/08/2018 03:37 476 prjTestWavePlayer.dpr.4 07/08/2018 03:37 1,506 prjTestWavePlayer.dproj.local.1 07/08/2018 03:37 314 UMain.dfm.1 07/08/2018 03:37 469 UMain.dfm.2 07/08/2018 03:37 469 UMain.dfm.3 07/08/2018 03:37 337 UMain.pas.1 07/08/2018 03:37 3,753 UMain.pas.2 07/08/2018 03:37 3,736 UMain.pas.3 07/08/2018 03:37 4,373 UMain.pas.4 07/08/2018 03:37 4,414 UMain.pas.5 07/08/2018 03:37 4,435 UMain.pas.6 07/08/2018 03:37 4,436 UMain.pas.7 15 File(s) 29,745 bytes

Directory of C:\Junk2\DelphiASIOVST-64-bit-Examples-2018-master\VSTShared__his tory

07/08/2018 03:37 12,773 XSynthModule.pas.1 1 File(s) 12,773 bytes

Total Files Listed: 828 File(s) 111,254,008 bytes 0 Dir(s) 17,733,226,496 bytes free

111 MB of Delphi backup files ?! WTF why would you keep these files ?!?!? Especially on a GIT versioning system ? Seems somewhat amateuristic... perhaps I am chatting with the wrong guy ;)

I do versioning myself by copieing olders and then placing a comment in the version folder... works 1000x faster than GIT... GIT nice for large projects like operating systems or so though, where a simply copy might not be possible.

I do dispice these delphi backup files though... very tiring/boring to see these... programmers should not be needing these kind of "facilities/services" from an IDE and simply copy there folders before starting new work on the next day in a new folder and IDEs should ofcourse never crash and if they do programmers must click SAVE as often as possible. That's how I work with Delphi and Delphi does have plenty of crashes though. Personally I see no value in these backup files and can just confuse me even more... I do so much heavy editing that I want to decide when a SAVE of actual USEFULL editing is WARANTED... instead of Delphi mindlessly and stupidly saving my editing work at unpredictable moments ?! When the fuck does it even make these backup files ?!

As if the time of "saving work" is irrelevant ?! Does it do it at the start when working on it ? During editing ? Does it slow down my typing in the IDE ? Can it lead to fuckups cause the HD is taking some time and spinning up from IDLE perhaps ? Additional logic complexity that might make the IDE FAIL... what if it runs out of disk space LOL. So many things can go wrong with this feature... Very boring to test additional failure scenerios. Totally hate this x feature of Delphi.

Yeah it's in the __history folder... there is no explanation of these new features when I first start the new IDE. This should be explained what it is, and how to use it. I still don't know how to use it, it annoys the hell out of me ?! Are these "changes" files ? Or complete copies ?! From the size of it I would say complete copies.

What I hate most about these backup files is it completely ignores the possiblity that I may already have a versioning system in place. A manual one as it may be. I totally do not need this functionality, who has ever asked for this functionality ?! Totally weird. And worst of all... It's on by default without telling anybody... and here I am, wasting 111 MB on your library project on my disk ! ;) :)

Now try and multiply this big X ammount of libraries and you can hopefully start to seem my annoyance with this phenomenon ;)

Sorry for ranting on your github issue list, but I have to vent somewhere =D

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/RuudErmers/DelphiASIOVST-64-bit-Examples-2018/issues/1#issuecomment-414844907 , or mute the thread https://github.com/notifications/unsubscribe-auth/ADAZ1yZ_r3nCVuKi9VUn1uEg9TuPLfLVks5uTIzSgaJpZM4WCq4x . https://github.com/notifications/beacon/ADAZ1zWTdC2ATp-Z26gQm5yvJb4aKalgks5uTIzSgaJpZM4WCq4x.gif

SkybuckFlying commented 5 years ago

What is the error you are getting during the compile of my example ?

SkybuckFlying commented 5 years ago

I find sourceforge a bit chaotic and don't trust it completely, perhaps sourceforge might infect executables.

It's possible I came across this link you showed, the files sections still showed version 1.3 as most recent.

The code section shows 1.4 and 1.5 existing. This is not immediately apperent and requires deeper diving into the folders.

So thanks for pointing this out.

It's kinda odd though, why is there not a 1.4 release ? Is it perhaps bugged and skipped ?

I have no idea what JUCE is... and why you would use C++ perhaps you program in both and make these plugins in both languages ?

Or perhaps porting C or C++ headers to Delphi ???

I am not convinced the problem does not existing in version 1.4 or 1.5 you may be right, but this would require more intense testing than just 1 test run or 2.

After 4 or 5 test runs the bug should occur, though it may depend on the speed of the test application and computer used and computer configuration.

Changing buffer sizes on the fly would be nice to test the effect of latency on it.

Creating the bug also requires stopping/starting/stopping of these components this might have something to do with it or maybe not.

I can remember changing these buffer sizes before on the fly properly, maybe back then bugs happened to... probably but it a bit more rare.

Perhaps analyzing the code might make it more obvious to see if there is indeed a logical problem with this.

If these bugs were found and fixed/correct then there should be a mentioned of this somewhere in a development blog, otherwise your conclusion that this bug does not exist in the newer code might be flawed, though it could also be that this code happened to be changed and subsequently fixed the bug by chance. Though this seems somewhat more unlikely, since this is probably an array index going out of range, something like that probably doesn't just change overnight, this could be on oversight at the design/handling of buffers and resize-events/occurences.

Bye, Skybuck.

RuudErmers commented 5 years ago

Hi,

A few answers and remarks.

I have no idea why version 1.4 (r. 1711) was never published, you could ask the author. It’s very stable.

I adjusted your example (ok, just a few statements) and it does not crash. (both 32 bits and 64 bits are OK) Tested a couple of times

You can use the ASIO 1.4 lib I shared if you don’t trust sourceforge, but I changed a few things…

On your JUCE question:

Quote: ‘Everyone is using Juce for (“serious”) VST development’

Well, this is offcourse not strictly true, but since a few years it’s the leading framework.

Since I was not able to create 64 bit apps with Delphi before, I ported a few off my VST to Juce (in fact, I developed

them together, exactly the same architecture). For me, it was to find out what I prefer.

They are both nice, but since then, I chose to continue with Delphi, as I just love it (I am a C coder from the eighties, but also used C++ and others,

and taught C/C++/Delphi for many years at university level).

The next step I think should be that you try to upgrade to 1.4.

Here’s the changed code: (You will get some other errors when opening the SoundSettings form, as things have changed…;nothing serious though)

procedure TFormSoundSettings.ASIOHostBufferSwitch32(Sender: TObject; const InBuffer,

OutBuffer: TDAVArrayOfSingleFixedArray);

// etcetera

From: Skybuck Flying [mailto:notifications@github.com] Sent: vrijdag 24 augustus 2018 05:41 To: RuudErmers/DelphiASIOVST-64-bit-Examples-2018 Cc: Ruud Ermers; Comment Subject: Re: [RuudErmers/DelphiASIOVST-64-bit-Examples-2018] How to close ASIO Driver Control Panel ? (#1)

I find sourceforge a bit chaotic and don't trust it completely, perhaps sourceforge might infect executables.

It's possible I came across this link you showed, the files sections still showed version 1.3 as most recent.

The code section shows 1.4 and 1.5 existing. This is not immediately apperent and requires deeper diving into the folders.

So thanks for pointing this out.

It's kinda odd though, why is there not a 1.4 release ? Is it perhaps bugged and skipped ?

I have no idea what JUCE is... and why you would use C++ perhaps you program in both and make these plugins in both languages ?

Or perhaps porting C or C++ headers to Delphi ???

I am not convinced the problem does not existing in version 1.4 or 1.5 you may be right, but this would require more intense testing than just 1 test run or 2.

After 4 or 5 test runs the bug should occur, though it may depend on the speed of the test application and computer used and computer configuration.

Changing buffer sizes on the fly would be nice to test the effect of latency on it.

Creating the bug also requires stopping/starting/stopping of these components this might have something to do with it or maybe not.

I can remember changing these buffer sizes before on the fly properly, maybe back then bugs happened to... probably but it a bit more rare.

Perhaps analyzing the code might make it more obvious to see if there is indeed a logical problem with this.

If these bugs were found and fixed/correct then there should be a mentioned of this somewhere in a development blog, otherwise your conclusion that this bug does not exist in the newer code might be flawed, though it could also be that this code happened to be changed and subsequently fixed the bug by chance. Though this seems somewhat more unlikely, since this is probably an array index going out of range, something like that probably doesn't just change overnight, this could be on oversight at the design/handling of buffers and resize-events/occurences.

Bye, Skybuck.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/RuudErmers/DelphiASIOVST-64-bit-Examples-2018/issues/1#issuecomment-415641940 , or mute the thread https://github.com/notifications/unsubscribe-auth/ADAZ14s9QKop0n1aa2VIkGhNhZjSCaJGks5uT3XigaJpZM4WCq4x . https://github.com/notifications/beacon/ADAZ16sAPKb7DJaQHHdLazvcxH-Orv8Eks5uT3XigaJpZM4WCq4x.gif