Delphi ASIO & VST sourceforge project

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

just got a new laptop, and setting up lazarus.. I'm getting a problem installing DAV_VSTPluginIDE and DAV_VSTPlugin_Lazarus. It's complaining that both packages have ..\Source\VST\DAV_VSTModuleLazIDE.pas...

'Both packages are connected. This means, either one package uses the other, or they are both used by a third package.'

It looks like the problem came in around revision 701 - has one of the packages been deprecated?

DSP
Image

Post

duncanparsons wrote:just got a new laptop, and setting up lazarus.. I'm getting a problem installing DAV_VSTPluginIDE and DAV_VSTPlugin_Lazarus. It's complaining that both packages have ..\Source\VST\DAV_VSTModuleLazIDE.pas...

'Both packages are connected. This means, either one package uses the other, or they are both used by a third package.'

It looks like the problem came in around revision 701 - has one of the packages been deprecated?
Sorry not to answer earlier. I am quite busy at the moment. I think yes, one one of the packages has been deprecated. I can't remember exactly though, but I think you do not need the "DAV_VSTPluginIDE" anymore. At least I could compile my test plugins fine without that package.

Kind regards,

Christian

PS: Are you working more constantly with lazarus now?

Post

thx Christian, I'll try that..

wrt Lazarus - I'm on the turn! I've been asked to provide a VST for both PC and Mac. So far as I can see, I just need to create a reliable XPlatform implementation of TForm.CreateParented and all should be well. I'm going to use elements of Infinity API as a template for OSX code, and write the Object Pascal translation..

How about you?
Image

Post

duncanparsons wrote:How about you?
Well, I do not yet feel comfortable with the Lazarus IDE yet. There are too many things I miss from Turbo Delphi. Also I kind of fear the way ahead. There are so many things to consider in order to make it work properly. Also I still have so many other projects to do and atm OSX support is low priority here (although I'd really love to go there).

But as I mentioned before, if you need help with it, just let me know. As long as I don't need to do it completely I'm willing to help.

Kind regards,

Christian

Post

Hi Christian, just another public quickie.. in DAV_GuiLED, there is a 'TPointFloat' declared (line 116) - is it supposed to be TFloatPoint (from classes in Delphi/ GraphMath in LCL) or is there a missing declaration somewhere? The LCL TFloatpoint uses extended rather than single (which revision<=712 used).. were you looking to avoid 80bit values?

Looking at the calculations, a single would do, and the part involving centre is out of bounds for FPC at the moment anyway... (Having said that, VCL doesn't have a TPointFloat either!)

waddayasay?

DSP
Image

Post

Hello,

there is a second error in the latest DAV_VSTModuleWithMidi, the procedure MIDI_ProgramChange(ch, val: Integer; offset: Integer = 0) send 'ch+$D0' , it should be 'ch + $C0'. (line 252)
the first error is still there (TVSTModuleWithMidi.MIDI_Out).Maybe they come from the toddy bear units because in his template they are also here.

Post

duncanparsons wrote:Hi Christian, just another public quickie.. in DAV_GuiLED, there is a 'TPointFloat' declared (line 116) - is it supposed to be TFloatPoint (from classes in Delphi/ GraphMath in LCL) or is there a missing declaration somewhere? The LCL TFloatpoint uses extended rather than single (which revision<=712 used).. were you looking to avoid 80bit values?

Looking at the calculations, a single would do, and the part involving centre is out of bounds for FPC at the moment anyway... (Having said that, VCL doesn't have a TPointFloat either!)
Hi Duncan,

sorry for the late answer, but I've been quite busy with my wedding lately. Also it's the end of the year and all the projects have to be finished at once...

Right now I do not remember exactly what I did there, but whenever possible I tried to use the 'TPointFloat' type that can be found in the windows unit. I'm sure a similar type can be found in the LCL as well (haven't checked yet).

Just have a look into the latest SVN, it should have been fixed (at least I spend some work on the dials, implementing an interface to create some knobs similar to KnobMan, but inside the Delphi IDE (unfinished yet).
Baz wrote:there is a second error in the latest DAV_VSTModuleWithMidi, the procedure MIDI_ProgramChange(ch, val: Integer; offset: Integer = 0) send 'ch+$D0' , it should be 'ch + $C0'. (line 252)
the first error is still there (TVSTModuleWithMidi.MIDI_Out).Maybe they come from the toddy bear units because in his template they are also here.
I haven't looked into that issue yet, but I guess it is still there since most of the MIDI stuff is based on Toby's work. I made a note into my todo list and I will have a closer look later.

Kind regards,

Christian

Post

Baz wrote:Hello, I think there is small error in the current version (rev 702) of DAV_VSTModuleWithMidi.pas :in the procedure TVSTModuleWithMidi.MIDI_Out(b1, b2, b3, b4: Byte; offset: Integer) line 136 ; b[0] should be equal to the sum of parameter b1 with b2 ( theorically ? if you look at the others procedures using a predefined status it's clearly that)
I'm not sure, what you mean with this, but the function you mentioned is rather a generic function to send out any custom MIDI data. You should keep b4 always zero according to the specification, but other than that there are no restrictions.

Kind regards,

Christian

Post

Hi Duncan,
First of all congratulation on your upcoming wedding! Best wishes for much happiness!

This weekend I decided to update my Delphi AsioVST configuration with the latest from SVN. I'm using Delphi2007 on my laptop (the power supply died on my desktop system) and I ran into these issues when I tried to compile and install the updated libraries.

DAV_Common_D11.dpk
under section 'contains'

CPUDetectionTool in '..\Source\CPUDetectionTool.pas',
should be
DAV_CPUDetectionTool in '..\Source\DAV_CPUDetectionTool.pas',

following file references not found:
DAV_AudioFileFLAC in '..\Source\FileFormats\DAV_AudioFileFLAC.pas',
DAV_AudioFileWavePack in '..\Source\FileFormats\DAV_AudioFileWavePack.pas',
DAV_AudioFileMonkeyAudio in '..\Source\FileFormats\DAV_AudioFileMonkeyAudio.pas',

DAV_VSTPlugin_D11.dpk
under section 'contains'

file references not found:
Config in '..\Source\Config.pas',
DAV_VSTEffectFunctions in '..\Source\VST\DAV_VSTEffectFunctions.pas',

OpenToolsUtils in '..\Source\OpenToolsUtils.pas',
should be
DAV_OpenToolsUtils in '..\Source\DAV_OpenToolsUtils.pas',

needed to add in:
DAV_VSTPluginConfig in '..\Source\VST\DAV_VSTPluginConfig.pas',
DAV_VSTOfflineTask in '..\Source\VST\DAV_VSTOfflineTask.pas',
to make the compiler happy.

DAV_CommonRegister.pas
had to change the following line:
{$IFNDEF FPC}{$R ..\Resources\DAV_CommonRegister.res}{$ENDIF}
to:
{$IFNDEF FPC}{$R ..\..\Resources\DAV_CommonRegister.res}{$ENDIF}

With DAV_VSTHost.pas
I had to modify the instances of VstDispatch() usage to the following:

Code: Select all

//12.06.08 0 always returns empty string!
//if VstDispatch(effGetProgramName, 0, 0, Temp) = 0
if VstDispatch(effGetProgramName, 0, 0, Temp) = 1 

Code: Select all

//12.06.08 0 always returns empty string!
//if VstDispatch(effGetParamDisplay, 0, 0, Temp) = 0
if VstDispatch(effGetParamDisplay, 0, 0, Temp) = 1 
etc. or else I could not get the VST properties values.

Also as I had to create a new property "Loaded"
i.e. property Loaded: Boolean read FLoaded stored False default False;
so I could determine if the LoadFromFile() function had failed.

There was no way to know if the LoadFromFile() function failed and this led to a whole series of errors downstream when trying to get the plug-ins properties that crashed my app. I ran into this trying to get the properties for an expired demo of PSP Nitro.

Now I can avoid these issues..

Code: Select all

   if FileExists(sFileName) then
      VstHost[0].LoadFromFile(sFileName);

    if not VstHost[0].Loaded then
      bError := True
    else
      ...
In the end (before I ran out of time) I was only able to compile and install VSTHost, Base Package and Plug-in Project Wizard (design time).

I know that whats in SVN is not an official release but I thought you would appreciate the feedback.

Best regards
...Steven
ImageCakewalk/Sonar Plugin Management Tools

Post

Hi Steven,

I applied most of the things you suggested. It's always a bit hard to test all code for all the Delphi versions, so any help is appreciated.

Kind regards,

Christian

Post

If I were you, I would not add all those packages for different Delphi versions, it's going to take a lot of time to maintain and is not interesting work. Just one package of one Delphi version of which you are sure it installs should be sufficient. I have been trying for a while (on D11) renaming file names, adjusting paths, trying to get something installed but eventually gave up on it.

//Daniel

Post

If I were you, I would not add all those packages for different Delphi versions
Daniel,
I strongly disagree with this. I've always considered libraries that have the installation packages for different Delphi versions to be more professional than those that don't.
Just one package of one Delphi version of which you are sure it installs should be sufficient.
The problem is that it does install just fine - with the version of Delphi that Christian uses.
I think the fact that you were unable to install it with your version of Delphi as indicative of the need for such packages. The benefit of the installation packages is that once they're done and debugged its easier for everyone.

Anyway my 2 cents.


Christian,
Thanks for the updates, haven't had time to fully test them yet. I've been tied up with my day gig - we've been in virtual lockdown trying to get a new release out (nonaudio related software) and I just got the latest release candidate approved & signed off on today. I for one appreciate the time and effort you have spent on this project. I'll try to bang on it some more this weekend.

...Steven
ImageCakewalk/Sonar Plugin Management Tools

Post

Of course he can do what he likes but I don't see the point in maintaining all those packages. If the source code was built with D10, there is no reason why a D10 package should not install in D11. And indeed I got the D10 version installed with minimal effort on D11. I just should have known that before.

//Daniel

Post

Hi!
First off thank you all for fantastic work, I've been following this project and using the components for years now.
A quick question though:
In the VSThost:
Have any of you figured out a way to properly implement shells such as the Waves Shell?
Loading a plug-in works great. I load the shell.dll a list comes up and you can select the plug-in you want then I give it an editor form and it's all good.

My problem is if my host saves it's project, how should it load the correct plug-in with in the shell on project load, ?

Thanks again
Nikolai

Post

Thank you!~!!
"treat others as you would like to be treated."

Post Reply

Return to “DSP and Plugin Development”