|
11-01-2017, 03:27 PM
|
#201
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Thanks for the reply! I'd tried that at first but then had trouble converting from const char* to char*, and so far I've been using char *name[length] to create strings.
Code:
char *chartemp[50];
string stringtemp;
stringtemp = myPlugPrefs.ReadValue<string>("First Name", "FirstName", "defaultgroup");
*chartemp = stringtemp.c_str();
|
|
|
11-01-2017, 03:33 PM
|
#202
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Why not just:
Code:
char* c = (char*)myPlugPrefs.ReadValue<string>("First Name", "FirstName", "defaultgroup").c_str();
|
|
|
11-01-2017, 03:59 PM
|
#203
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
That's a lot cleaner of course! I usually separate things out when I'm trying to figure out what's wrong.
It's not worked out though. I've put a breakpoint after the line you suggested, and Visual Studio says 'identifier "c" is undefined'
|
|
|
11-01-2017, 04:09 PM
|
#204
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by Bobflip
That's a lot cleaner of course! I usually separate things out when I'm trying to figure out what's wrong.
It's not worked out though. I've put a breakpoint after the line you suggested, and Visual Studio says 'identifier "c" is undefined'
|
Than use your method...
|
|
|
11-01-2017, 04:26 PM
|
#205
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
But I can't get it working with my method either :-/
|
|
|
11-01-2017, 04:27 PM
|
#206
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Post full code here.
|
|
|
11-01-2017, 05:07 PM
|
#207
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
in IPlugEffect.h:
Code:
char firstName[40], lastName[40], serialNumber[16];
in IPlugEffect.cpp:
Code:
sprintf(firstName, "empty");
firstName = (char*)myPlugPrefs.ReadValue<string>("First Name", "FirstName", "defaultgroup").c_str();
pFirstName->SetString(firstName);
and pFirstName is a text entry box control derived from IControl with the following:
Code:
char outputString[40];
void TextEntryBox::PrintText(char *outputString);
void TextEntryBox::SetString(char *input) {
strcpy(outputString, input);
}
The control pFirstName correctly draws the string "empty" if I comment out the firstName = (char*)myPlugPrefs line.
|
|
|
11-01-2017, 05:13 PM
|
#208
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
First of all, do yourself a favor and use WDL or STL containers like string or WDL_String. You should avoid strcpy every time if possible.
Your problem is here. You can't draw to char buffer like this.
Code:
firstName = (char*)myPlugPrefs.ReadValue<string>("First Name", "FirstName", "defaultgroup").c_str();
I suggest to read some book about C++ or watch some tutorials..
|
|
|
11-01-2017, 06:07 PM
|
#209
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Heheh, I actually have in my to-do list to convert all the string operations to use either string or WDL_String! Was hoping I'd be able to put it off until later, but it was certainly in mind. I'm not always using strcpy, just put that there in an attempt to fix it.
The thing is, I'd been learning by example and saw "void SetTextFromPlug(char* str);" in ITextControl, so assumed that was the correct way to do things.
|
|
|
11-02-2017, 01:04 AM
|
#210
|
Human being with feelings
Join Date: Apr 2014
Posts: 84
|
Quote:
Originally Posted by Youlean
First of all, do yourself a favor and use WDL or STL containers like string or WDL_String.
|
I was going to write about the WDL strings too They are very convenient to save/restore. However, everywhere else I use std::string because apart from that WDL strings aren't convenient at all
|
|
|
11-02-2017, 03:52 AM
|
#211
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by 1eqinfinity
I was going to write about the WDL strings too They are very convenient to save/restore. However, everywhere else I use std::string because apart from that WDL strings aren't convenient at all
|
What do you mean by save/restore?
For me most convenient thing about WDL_Strings is SetFormated method, but will c++11 this is not much of the problem with std::string. I too tend to use string a lot more...
|
|
|
11-02-2017, 04:58 AM
|
#212
|
Human being with feelings
Join Date: Apr 2014
Posts: 84
|
Quote:
Originally Posted by Youlean
What do you mean by save/restore?
|
I mean you can serialize-unserialize the strings and not worry about the machine architecture. Also, as far as I remember, WDL strings have nice methods to extract the file name, or the extention, etc. All that is good when you have to save, say, full file name of some audio sample in the plugin state.
Last edited by 1eqinfinity; 11-02-2017 at 05:38 AM.
|
|
|
11-02-2017, 05:36 AM
|
#213
|
Human being with feelings
Join Date: Apr 2014
Posts: 84
|
What does #define AU_MIDI_FX 0 do?
I've had a hard time making one of my plugins usable in Logic and now I'm worried
|
|
|
11-02-2017, 07:25 AM
|
#214
|
Human being with feelings
Join Date: Apr 2014
Posts: 84
|
And a couple more beginners questions I have to rebuild cairo for 32 and 64 builds of my plugin, right?
I never worked with cairo, but why is it a separate project? Afaik VS allows for embedding whole solutions into solutions.
|
|
|
11-02-2017, 08:08 AM
|
#215
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by 1eqinfinity
I mean you can serialize-unserialize the strings and not worry about the machine architecture. Also, as far as I remember, WDL strings have nice methods to extract the file name, or the extention, etc. All that is good when you have to save, say, full file name of some audio sample in the plugin state.
|
I will add stl container serialize-unserialize soon. It would be nice to have iplugstring. I will probably make it soon to replace wdl_string
|
|
|
11-02-2017, 08:09 AM
|
#216
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by 1eqinfinity
What does #define AU_MIDI_FX 0 do?
I've had a hard time making one of my plugins usable in Logic and now I'm worried
|
It just makes plugin as AU midi effect or not.
|
|
|
11-02-2017, 08:10 AM
|
#217
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by 1eqinfinity
And a couple more beginners questions I have to rebuild cairo for 32 and 64 builds of my plugin, right?
I never worked with cairo, but why is it a separate project? Afaik VS allows for embedding whole solutions into solutions.
|
Well, I haven't added it since it will make plugin solution kinda messed up and I haven't figured the mac project yet...
|
|
|
11-04-2017, 08:05 AM
|
#218
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Just a heads up that the previous issue was easy to sort with string instead of char[]. I'd wondered if it was the solution but was wary of rewriting a whole section of code if it wasn't the answer. Turned out it was the answer and it didn't even take that long.
Tantalisingly close to completion now...
|
|
|
11-06-2017, 05:39 PM
|
#219
|
Human being with feelings
Join Date: May 2012
Location: PA, USA
Posts: 356
|
I have been working on porting one of my older plugins to the Youlean code so I can scale the GUI. It is looking good on VST on Windows and AU on Mac. I did notice that VST3 has been updated to the latest SDK, so I guess I will have to try that and see if I can get VST3 to build.
I am having some slight issue with VST on Mac, specific to Studio One. I can resize the plugin, but the host's interface will not resize. It ends up clipping whatever is outside the host's window. If I close/hide the plugin and open it, the host has the correct new size. Any ideas about this before I start digging?
By the way, this is great stuff. I love the ease of resizing, even bitmaps. Thanks!
|
|
|
11-06-2017, 05:51 PM
|
#220
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
I think Youlean's said that this is a bug with the framework atm, affecting VST OSX resizing on certain hosts. I haven't tested in Studio One yet, but it happens in Ableton, have you tested in that?
|
|
|
11-07-2017, 01:11 AM
|
#221
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Hey random_id and Bobflip, this is indeed bug with framework that I didn't fixed yet. To be honest I have tried to make mac plugin resize correctly but I was not able to find solution that will work in every host. As far as I know carbon will work great but cocoa is giving us a trouble... It would help if we can make list in what host GUI resize works and in what doesn't so I can take a look. You can also try to fix it if you can.. As one of the workarounds I was thinking to close and open plugin window every time you resize plugin on mac, though I am not sure if this is the good idea...
|
|
|
11-07-2017, 06:41 AM
|
#222
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Hi there, I'd fix if I could, but it's probably a bit out of my skillset! I'll try and investigate after I release 1.0 though.
I've just tested it in my available hosts on OSX, and it exhibits issues in Twisted Wave, Ableton and Reaper. I don't have any other VST-capable hosts to hand at this point.
Using VST64 in Ableton and Twisted Wave, the GUI will resize, but the window size does not change. Closing and reopening the window shows the new window size, but the GUI is back to the default size. Closing and opening it again resets the window size to default, and the GUI stays at the default size.
Reaper is a little different in the way it handles the resizing, and allows you to resize the window that the plugin is contained in, but I believe the bug shows the same fault. So the first time you resize it looks like the plugin window size is changing and the GUI is staying the same, but I think this is all Reaper code rather than plugin code. Once you've dragged the plugin container window to be larger than your plugin's UI so you can click the plugin's resize handle, you can resize the plugin GUI, and the plugin's container window resizes to match the plugin's size. It takes a second or two to update, but it does work.
Also noticed while testing these that Reaper that the AU actually doesn't resize as expected - as on VST you have to move the container window out of the way of the plugin's resize handle. This reacts more like Ableton and Twisted Wave, the GUI will resize but the window size will not resize (unsure if this is the container window or the plugin window or both), but closing and reopening the plugin retains the plugin window size but the GUI is reset to default.
|
|
|
11-07-2017, 06:46 AM
|
#223
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Thank Bobflip. Maybe it would be good to use IPlugGuiResize example so everybody can reproduce results. I will check this in 2 days...
|
|
|
11-07-2017, 06:48 AM
|
#224
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Ah, yes I tested this with my own plug rather than IPlugGUIResize. Want me to retest?
|
|
|
11-07-2017, 06:49 AM
|
#225
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Not for now...
|
|
|
11-07-2017, 06:52 AM
|
#226
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Ok no probs, let me know if you want me to test anything else though!
(although I also get notifications when further posts are made to this thread)
|
|
|
12-04-2017, 03:29 AM
|
#227
|
Human being with feelings
Join Date: Sep 2007
Posts: 642
|
Since updating to latest version of IPlug Youlean, I can no longer build VST3. Building VST2 is working. But When trying to build VST3 with just the "IPlugEffect" example project, I'm getting a list of errors:
Code:
Warning C4584 'IPlugVST3': base-class 'Steinberg::Vst::IUnitInfo' is already a base-class of 'Steinberg::Vst::SingleComponentEffect' IPlugEffect-vst3 z:\iplug-youlean-test\wdl\iplug\iplugvst3.h 27
Error C2039 'kBFormat1stOrder': is not a member of 'Steinberg::Vst::SpeakerArr' IPlugEffect-vst3 z:\iplug-youlean-test\wdl\iplug\iplugvst3.cpp 874
Error C2065 'kBFormat1stOrder': undeclared identifier IPlugEffect-vst3 z:\iplug-youlean-test\wdl\iplug\iplugvst3.cpp 874
Error C1083 Cannot open source file: '..\source\flock.cpp': No such file or directory base Z:\IPlug-Youlean-Test\VST3_SDK\base\win\c1xx 1
I have tried to make a new clean installation of latest Iplug-Youlean and the latest VST-SDK from steinberg. The errors still persists.
Is this a known issue with Iplug-Youlean? If not, how can I try to fix it?
Thanks!
|
|
|
12-04-2017, 03:44 AM
|
#228
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by Anomaly
Since updating to latest version of IPlug Youlean, I can no longer build VST3. Building VST2 is working. But When trying to build VST3 with just the "IPlugEffect" example project, I'm getting a list of errors:
Code:
Warning C4584 'IPlugVST3': base-class 'Steinberg::Vst::IUnitInfo' is already a base-class of 'Steinberg::Vst::SingleComponentEffect' IPlugEffect-vst3 z:\iplug-youlean-test\wdl\iplug\iplugvst3.h 27
Error C2039 'kBFormat1stOrder': is not a member of 'Steinberg::Vst::SpeakerArr' IPlugEffect-vst3 z:\iplug-youlean-test\wdl\iplug\iplugvst3.cpp 874
Error C2065 'kBFormat1stOrder': undeclared identifier IPlugEffect-vst3 z:\iplug-youlean-test\wdl\iplug\iplugvst3.cpp 874
Error C1083 Cannot open source file: '..\source\flock.cpp': No such file or directory base Z:\IPlug-Youlean-Test\VST3_SDK\base\win\c1xx 1
I have tried to make a new clean installation of latest Iplug-Youlean and the latest VST-SDK from steinberg. The errors still persists.
Is this a known issue with Iplug-Youlean? If not, how can I try to fix it?
Thanks!
|
Sorry about that. Don't use latest SDK for now. Use 3.6.7 version...
|
|
|
12-09-2017, 01:50 AM
|
#229
|
Human being with feelings
Join Date: Sep 2007
Posts: 642
|
Quote:
Originally Posted by Youlean
Sorry about that. Don't use latest SDK for now. Use 3.6.7 version...
|
Ok, thanks. Problem solved.
|
|
|
12-09-2017, 02:01 PM
|
#230
|
Human being with feelings
Join Date: May 2012
Location: PA, USA
Posts: 356
|
(if the following is already fixed another way, just let me know)
I have been working on VST and VST3 resizing on OS X. I had the issue with the plugin resizing, but the window would not update the size until it is closed and reopened.
I think I have a fix. I haven't tested in a bunch of hosts, but it looks like it is working with Studio One. For VST3, the resizeView() needs to be called on the IPlugView class after the size is changed. VST is similar. After a size change, the host needs informed of the new window size by mHostCallback and using audioMasterSizeWindow.
For VST, I have made the following addition in IPlugVST.cpp to ResizeGraphics
Code:
...
#ifdef USING_YCAIRO
ResizeCairoSurface();
#endif
}
mHostCallback(&mAEffect, audioMasterSizeWindow, w, h, 0, 0.f); //<-added
}
For VST3, I made two additions to IPlugVST3.h
Code:
...
void PopupHostContextMenuForParam(int param, int x, int y) override;
Steinberg::IPlugView* GetPlugView(){return plugView;} //<-added
// DumpFactoryPresets("/Users/oli/Desktop/", GUID_DATA1, GUID_DATA2, GUID_DATA3, GUID_DATA4) override;
...
...
Steinberg::Vst::SpeakerArrangement getSpeakerArrForChans(Steinberg::int32 chans);
Steinberg::IPlugView* plugView; //<-added
int mScChans;
To IPlugVST3.cpp, I made the following changes
Code:
...
IPlugView* PLUGIN_API IPlugVST3::createView (const char* name)
{
if (name && strcmp (name, "editor") == 0)
{
IPlugVST3View* view = new IPlugVST3View(this);
addDependentView(view);
plugView = view; //<-added
return view;
}
plugView = nullptr;//<-added, but don't know if needed
return 0;
}
...
...
void IPlugVST3View::resize(int w, int h)
{
TRACE;
ViewRect newSize = ViewRect(0, 0, w, h);
mExpectingNewSize = true;
plugFrame->resizeView(this, &newSize);
IPlugView* pV = mPlug->GetPlugView(); //<-added
if (pV != nullptr) pV->onSize(&newSize); //<-added, but don't know if there needs to be a nullptr check
}
|
|
|
12-09-2017, 02:12 PM
|
#231
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Oooh, nice one! Will test this weekend. Can see how it goes in Bitwig and Ableton, and Cubase Pro until the trial version expires.
|
|
|
12-09-2017, 07:24 PM
|
#232
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Thanks for the fix. Actually I have fixed Ableton and Studio One already in different way but this might be better (correct) approach. I will try it tomorrow!
|
|
|
12-11-2017, 06:56 AM
|
#233
|
Human being with feelings
Join Date: Apr 2017
Posts: 36
|
So I've recently moved over from mac to linux and hope to do all my plugin development from the terminal with this Youlean branch. I'm fairly novice with it though. When I was using Xcode it was all pretty simple to compile projects. Is there any good resources about for how to set up and compile projects without in IDE?
PS thanks for all your super work on this branch. It's been great using it so far!
|
|
|
12-11-2017, 05:42 PM
|
#234
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Ok, so the VST2 resizing was less successful over here. I've tried Ableton and Bitwig, and it's moving in the right direction. The container window would resize, but various controls disappeared, my background control's colour reset to default, and at one point the Bitwig instance crashed - unfortunately no crash log though.
VST3 resizing seems to work as before, where there will be visual interference as the handle is moved around and the interface will update correctly when the mouse button is released.
|
|
|
12-12-2017, 01:12 AM
|
#235
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by mibes
So I've recently moved over from mac to linux and hope to do all my plugin development from the terminal with this Youlean branch. I'm fairly novice with it though. When I was using Xcode it was all pretty simple to compile projects. Is there any good resources about for how to set up and compile projects without in IDE?
PS thanks for all your super work on this branch. It's been great using it so far!
|
That is gonna be pretty hard I think if not impossible currently. There is no Linux implementation in the code.
|
|
|
12-12-2017, 01:15 AM
|
#236
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by Bobflip
Ok, so the VST2 resizing was less successful over here. I've tried Ableton and Bitwig, and it's moving in the right direction. The container window would resize, but various controls disappeared, my background control's colour reset to default, and at one point the Bitwig instance crashed - unfortunately no crash log though.
VST3 resizing seems to work as before, where there will be visual interference as the handle is moved around and the interface will update correctly when the mouse button is released.
|
Are you talking about random_id fix? I have not yet pushed my fix to the github...
BTW, I still haven't had time to check latest bugs and fix... Probably I will take a look next weekend.
|
|
|
12-12-2017, 01:34 AM
|
#237
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Sorry, yes, was random_id's fix.
As for the .ini file encryption, my plug seems to be pulling strings out of the file OK in Windows, but not in OSX. I'm going to have a quick final look now but if I can't fix it I'm probably just going to release this lunchtime regardless! The serial number is in the file, but these things will get cracked anyway, it's only there as a mild deterrent.
|
|
|
12-12-2017, 02:03 AM
|
#238
|
Human being with feelings
Join Date: Nov 2016
Posts: 341
|
Nope, spoke too soon, it's still having trouble recalling strings from encrypted .ini files in Windows as well. It's a bit weird and inconsistent. For testing purposes I'm just using "1" as the encryption key. My field for last name is recalling some strings fine, but "Smith" always comes back as empty when I reload the plugin. "smith" in all lower case is recalled as expected.
|
|
|
12-12-2017, 02:29 AM
|
#239
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by Bobflip
Nope, spoke too soon, it's still having trouble recalling strings from encrypted .ini files in Windows as well. It's a bit weird and inconsistent. For testing purposes I'm just using "1" as the encryption key. My field for last name is recalling some strings fine, but "Smith" always comes back as empty when I reload the plugin. "smith" in all lower case is recalled as expected.
|
I know what is the problem. I can't look at it until Thursday morning for sure though...
|
|
|
12-12-2017, 05:04 AM
|
#240
|
Human being with feelings
Join Date: May 2012
Location: PA, USA
Posts: 356
|
Quote:
Originally Posted by Bobflip
Ok, so the VST2 resizing was less successful over here. I've tried Ableton and Bitwig, and it's moving in the right direction. The container window would resize, but various controls disappeared, my background control's colour reset to default, and at one point the Bitwig instance crashed - unfortunately no crash log though.
VST3 resizing seems to work as before, where there will be visual interference as the handle is moved around and the interface will update correctly when the mouse button is released.
|
I will have to look at this again. For my resize test plugin as well as my plugin that changes layout sizes, the fix appears to work with Live. I haven't looked at Bitwig yet.
I hope it is something close, because I thought the method I tried matched with what other people have been doing with the VST3 SDK. I wish Steinberg would stick to there own rules. <insert sad face>
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 07:22 AM.
|