ffaudio / foleys_gui_magic Goto Github PK
View Code? Open in Web Editor NEWA GUI builder module for JUCE - with examples
Home Page: https://foleysfinest.com/developer/pluginguimagic/
License: Other
A GUI builder module for JUCE - with examples
Home Page: https://foleysfinest.com/developer/pluginguimagic/
License: Other
When releasing a component on its original location in the GUI tree the application crashes in debug mode with the following error:
// You're attempting to create a recursive loop! A node
// can't be a child of one of its own children!
When compiling and testing with the Equalizer Example project, the auto save function is continuously creating magic.sav.xml files.
Is it possible to only use the magic.xml that is added as a resource though the Projucer Interface?
As you can see in the screenshot, I have 17+ magic.sav.xml files
Originally posted by @Werner88 in #24 (comment)
Hi Daniel,
thank you very much for this framework, I like it very much!!!
I have problems since your last update:
a) after loading xml file, same after the first launch, the layout looks horrible
b) after changing the lookandfeel of a component (e.g. a slider) the layout looks horrible
after resizing everything is okay.
Maybe it has something to do with a missing call to
builder->updateLayout();
In windows the EqualizerExample is broken, no eq-lines are drawn.
it is never possible to use the color names because whenever you click into a color field you are in the colourSelector.
I implemented this feature myself in a different way.
For the color fields I set the buttonText to „o“. Only after clicking the button the colourSelector launches.
The color field stays editable. When making the color field empty, the „0“ turns to an „x“. After clicking the „x“ you get the node.removeProperty call.
Anyway, it would be nice to have the color fields editable like before.
kind regards
and again thank you for guiMagic
Werner
Missing ‘stopTimer()’ in the timer callback in foleys_ApplicationSettings.cpp is causing a hang when using the MIDI learn function.
Looks like on my Fedora Linux machine, PGM keyboard shortcuts are not registered, so I can't copy or duplicate elements in the GUI tree other than by editing the XML file directly.
Is there any other way to do this?
Thanks!
-Butch
When clicking undo on the GUI editor, if there is nothing to undo, the app crashes. I turned on ASAN (Address Sanitizer) and identified this as a use-after-free. Here are the ASAN logs:
=================================================================
==2574==ERROR: AddressSanitizer: heap-use-after-free on address 0x60800010f2a8 at pc 0x000116e14c61 bp 0x7ffee2b7dd00 sp 0x7ffee2b7dcf8
WRITE of size 4 at 0x60800010f2a8 thread T0
#0 0x116e14c60 in juce::Atomic<int>::operator++() atomic:1020
#1 0x116e7ab9f in juce::ReferenceCountedObject::incReferenceCount() juce_ReferenceCountedObject.h:76
#2 0x1188c5917 in juce::ReferenceCountedObjectPtr<juce::ValueTree::SharedObject>::ReferenceCountedObjectPtr(juce::ValueTree::SharedObject&) juce_ReferenceCountedObject.h:274
#3 0x11885d962 in juce::ReferenceCountedObjectPtr<juce::ValueTree::SharedObject>::ReferenceCountedObjectPtr(juce::ValueTree::SharedObject&) juce_ReferenceCountedObject.h:273
#4 0x11885d877 in juce::ValueTree::ValueTree(juce::ValueTree::SharedObject&) juce_ValueTree.cpp:602
#5 0x11885da02 in juce::ValueTree::ValueTree(juce::ValueTree::SharedObject&) juce_ValueTree.cpp:602
#6 0x118868b45 in juce::ValueTree::SharedObject::getOrCreateChildWithName(juce::Identifier const&, juce::UndoManager*) juce_ValueTree.cpp:222
#7 0x1188685d1 in juce::ValueTree::getOrCreateChildWithName(juce::Identifier const&, juce::UndoManager*) juce_ValueTree.cpp:895
#8 0x116ffd7bd in foleys::MagicGUIBuilder::createDefaultGUITree(bool) foleys_MagicGUIBuilder.cpp:502
#9 0x116fe19da in foleys::MagicGUIBuilder::updateComponents() foleys_MagicGUIBuilder.cpp:161
#10 0x116fe0b3a in foleys::MagicGUIBuilder::updateAll() foleys_MagicGUIBuilder.cpp:65
#11 0x117063b8b in foleys::MagicGUIBuilder::valueTreeChildRemoved(juce::ValueTree&, juce::ValueTree&, int) foleys_MagicGUIBuilder.cpp:564
#12 0x1188b42b2 in juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)::operator()(juce::ValueTree::Listener&) const juce_ValueTree.cpp:113
#13 0x1188b3ff5 in void juce::ListenerList<juce::ValueTree::Listener, juce::Array<juce::ValueTree::Listener*, juce::DummyCriticalSection, 0> >::callExcluding<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)&>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)&&&) juce_ListenerList.h:140
#14 0x1188b38d9 in void juce::ValueTree::SharedObject::callListeners<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)) const juce_ValueTree.cpp:75
#15 0x1188b3444 in void juce::ValueTree::SharedObject::callListenersForAllParents<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)) const juce_ValueTree.cpp:95
#16 0x1188b3094 in juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int) juce_ValueTree.cpp:113
#17 0x118869cd2 in juce::ValueTree::SharedObject::removeChild(int, juce::UndoManager*) juce_ValueTree.cpp:297
#18 0x1188af182 in juce::ValueTree::SharedObject::AddOrRemoveChildAction::undo() juce_ValueTree.cpp:508
#19 0x11888352f in juce::UndoManager::ActionSet::undo() const juce_UndoManager.cpp:47
#20 0x1188830ae in juce::UndoManager::undo() juce_UndoManager.cpp:252
#21 0x11750ecb8 in foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43::operator()() const foleys_ToolBox.cpp:89
#22 0x11750ebb5 in _ZNSt3__128__invoke_void_return_wrapperIvE6__callIJRZN6foleys7ToolBoxC1EPN4juce9ComponentERNS3_15MagicGUIBuilderEE4$_43EEEvDpOT_ type_traits:4428
#23 0x11750e587 in std::__1::__function::__func<foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43, std::__1::allocator<foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43>, void ()>::operator()() functional:1562
#24 0x1185ff965 in std::__1::function<void ()>::operator()() const functional:1913
#25 0x1193c5e84 in juce::Button::sendClickMessage(juce::ModifierKeys const&) juce_Button.cpp:408
#26 0x1193c7d2e in juce::Button::internalClickCallback(juce::ModifierKeys const&) juce_Button.cpp:351
#27 0x1193ca13d in juce::Button::mouseUp(juce::MouseEvent const&) juce_Button.cpp:471
#28 0x119345f69 in juce::Component::internalMouseUp(juce::MouseInputSource, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, float, float, float) juce_Component.cpp:2434
#29 0x1199a561e in juce::MouseInputSourceInternal::sendMouseUp(juce::Component&, juce::Point<float>, juce::Time, juce::ModifierKeys) juce_MouseInputSource.cpp:155
#30 0x119999dea in juce::MouseInputSourceInternal::setButtons(juce::Point<float>, juce::Time, juce::ModifierKeys) juce_MouseInputSource.cpp:197
#31 0x119364f6a in juce::MouseInputSourceInternal::handleEvent(juce::ComponentPeer&, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, juce::PenDetails) juce_MouseInputSource.cpp:334
#32 0x119363503 in juce::MouseInputSource::handleEvent(juce::ComponentPeer&, juce::Point<float>, long long, juce::ModifierKeys, float, float, juce::PenDetails const&) juce_MouseInputSource.cpp:634
#33 0x1198c09d4 in juce::ComponentPeer::handleMouseEvent(juce::MouseInputSource::InputSourceType, juce::Point<float>, juce::ModifierKeys, float, float, long long, juce::PenDetails, int) juce_ComponentPeer.cpp:88
#34 0x119ca40a9 in juce::NSViewComponentPeer::sendMouseEvent(NSEvent*) juce_mac_NSViewComponentPeer.mm:725
#35 0x119ca5301 in juce::NSViewComponentPeer::redirectMouseUp(NSEvent*) juce_mac_NSViewComponentPeer.mm:607
#36 0x119c92fc5 in juce::JuceNSViewClass::asyncMouseUp(objc_object*, objc_selector*, NSEvent*) juce_mac_NSViewComponentPeer.mm:1675
#37 0x7fff2eb480b4 in __NSThreadPerformPerform (Foundation:x86_64+0x680b4)
#38 0x7fff2ca07010 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ (CoreFoundation:x86_64+0xa0010)
#39 0x7fff2cabe8eb in __CFRunLoopDoSource0 (CoreFoundation:x86_64+0x1578eb)
#40 0x7fff2c9e9fbf in __CFRunLoopDoSources0 (CoreFoundation:x86_64+0x82fbf)
#41 0x7fff2c9e943c in __CFRunLoopRun (CoreFoundation:x86_64+0x8243c)
#42 0x7fff2c9e8c96 in CFRunLoopRunSpecific (CoreFoundation:x86_64+0x81c96)
#43 0x7fff2bcc8d95 in RunCurrentEventLoopInMode (HIToolbox:x86_64+0x2fd95)
#44 0x7fff2bcc8a0e in ReceiveNextEventCommon (HIToolbox:x86_64+0x2fa0e)
#45 0x7fff2bcc8883 in _BlockUntilNextEventMatchingListInModeWithFilter (HIToolbox:x86_64+0x2f883)
#46 0x7fff29f78a72 in _DPSNextEvent (AppKit:x86_64+0x41a72)
#47 0x7fff2a70ee33 in -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (AppKit:x86_64+0x7d7e33)
#48 0x7fff29f6d884 in -[NSApplication run] (AppKit:x86_64+0x36884)
#49 0x7fff29f3ca71 in NSApplicationMain (AppKit:x86_64+0x5a71)
#50 0x7fff549b9014 in start (libdyld.dylib:x86_64+0x1014)
0x60800010f2a8 is located 8 bytes inside of 88-byte region [0x60800010f2a0,0x60800010f2f8)
freed by thread T0 here:
#0 0x10d2d8d32 in wrap__ZdlPv (libclang_rt.asan_osx_dynamic.dylib:x86_64+0x61d32)
#1 0x1188a12a7 in juce::ValueTree::SharedObject::~SharedObject() juce_ValueTree.cpp:51
#2 0x1188a4ae9 in juce::ContainerDeletePolicy<juce::ValueTree::SharedObject>::destroy(juce::ValueTree::SharedObject*) juce_ContainerDeletePolicy.h:54
#3 0x1188c565e in juce::ReferenceCountedObjectPtr<juce::ValueTree::SharedObject>::decIfNotNull(juce::ValueTree::SharedObject*) juce_ReferenceCountedObject.h:448
#4 0x1188c55aa in juce::ReferenceCountedObjectPtr<juce::ValueTree::SharedObject>::~ReferenceCountedObjectPtr() juce_ReferenceCountedObject.h:374
#5 0x11885ba5e in juce::ReferenceCountedObjectPtr<juce::ValueTree::SharedObject>::~ReferenceCountedObjectPtr() juce_ReferenceCountedObject.h:373
#6 0x1188af297 in juce::ValueTree::SharedObject::AddOrRemoveChildAction::~AddOrRemoveChildAction() juce_ValueTree.cpp:476
#7 0x1188ae96e in juce::ValueTree::SharedObject::AddOrRemoveChildAction::~AddOrRemoveChildAction() juce_ValueTree.cpp:476
#8 0x1188ae9ce in juce::ValueTree::SharedObject::AddOrRemoveChildAction::~AddOrRemoveChildAction() juce_ValueTree.cpp:476
#9 0x11887c2c9 in juce::UndoManager::perform(juce::UndoableAction*) memory:2285
#10 0x1188625e2 in juce::ValueTree::SharedObject::addChild(juce::ValueTree::SharedObject*, int, juce::UndoManager*) juce_ValueTree.cpp:277
#11 0x118868abf in juce::ValueTree::SharedObject::getOrCreateChildWithName(juce::Identifier const&, juce::UndoManager*) juce_ValueTree.cpp:221
#12 0x1188685d1 in juce::ValueTree::getOrCreateChildWithName(juce::Identifier const&, juce::UndoManager*) juce_ValueTree.cpp:895
#13 0x116ffd7bd in foleys::MagicGUIBuilder::createDefaultGUITree(bool) foleys_MagicGUIBuilder.cpp:502
#14 0x116fe19da in foleys::MagicGUIBuilder::updateComponents() foleys_MagicGUIBuilder.cpp:161
#15 0x116fe0b3a in foleys::MagicGUIBuilder::updateAll() foleys_MagicGUIBuilder.cpp:65
#16 0x117063b8b in foleys::MagicGUIBuilder::valueTreeChildRemoved(juce::ValueTree&, juce::ValueTree&, int) foleys_MagicGUIBuilder.cpp:564
#17 0x1188b42b2 in juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)::operator()(juce::ValueTree::Listener&) const juce_ValueTree.cpp:113
#18 0x1188b3ff5 in void juce::ListenerList<juce::ValueTree::Listener, juce::Array<juce::ValueTree::Listener*, juce::DummyCriticalSection, 0> >::callExcluding<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)&>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)&&&) juce_ListenerList.h:140
#19 0x1188b38d9 in void juce::ValueTree::SharedObject::callListeners<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)) const juce_ValueTree.cpp:75
#20 0x1188b3444 in void juce::ValueTree::SharedObject::callListenersForAllParents<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)) const juce_ValueTree.cpp:95
#21 0x1188b3094 in juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int) juce_ValueTree.cpp:113
#22 0x118869cd2 in juce::ValueTree::SharedObject::removeChild(int, juce::UndoManager*) juce_ValueTree.cpp:297
#23 0x1188af182 in juce::ValueTree::SharedObject::AddOrRemoveChildAction::undo() juce_ValueTree.cpp:508
#24 0x11888352f in juce::UndoManager::ActionSet::undo() const juce_UndoManager.cpp:47
#25 0x1188830ae in juce::UndoManager::undo() juce_UndoManager.cpp:252
#26 0x11750ecb8 in foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43::operator()() const foleys_ToolBox.cpp:89
#27 0x11750ebb5 in _ZNSt3__128__invoke_void_return_wrapperIvE6__callIJRZN6foleys7ToolBoxC1EPN4juce9ComponentERNS3_15MagicGUIBuilderEE4$_43EEEvDpOT_ type_traits:4428
#28 0x11750e587 in std::__1::__function::__func<foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43, std::__1::allocator<foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43>, void ()>::operator()() functional:1562
#29 0x1185ff965 in std::__1::function<void ()>::operator()() const functional:1913
previously allocated by thread T0 here:
#0 0x10d2d8752 in wrap__Znwm (libclang_rt.asan_osx_dynamic.dylib:x86_64+0x61752)
#1 0x118868a07 in juce::ValueTree::SharedObject::getOrCreateChildWithName(juce::Identifier const&, juce::UndoManager*) juce_ValueTree.cpp:220
#2 0x1188685d1 in juce::ValueTree::getOrCreateChildWithName(juce::Identifier const&, juce::UndoManager*) juce_ValueTree.cpp:895
#3 0x116ffd7bd in foleys::MagicGUIBuilder::createDefaultGUITree(bool) foleys_MagicGUIBuilder.cpp:502
#4 0x116fe19da in foleys::MagicGUIBuilder::updateComponents() foleys_MagicGUIBuilder.cpp:161
#5 0x116fe0b3a in foleys::MagicGUIBuilder::updateAll() foleys_MagicGUIBuilder.cpp:65
#6 0x117063b8b in foleys::MagicGUIBuilder::valueTreeChildRemoved(juce::ValueTree&, juce::ValueTree&, int) foleys_MagicGUIBuilder.cpp:564
#7 0x1188b42b2 in juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)::operator()(juce::ValueTree::Listener&) const juce_ValueTree.cpp:113
#8 0x1188b3ff5 in void juce::ListenerList<juce::ValueTree::Listener, juce::Array<juce::ValueTree::Listener*, juce::DummyCriticalSection, 0> >::callExcluding<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)&>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)&&&) juce_ListenerList.h:140
#9 0x1188b38d9 in void juce::ValueTree::SharedObject::callListeners<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)) const juce_ValueTree.cpp:75
#10 0x1188b3444 in void juce::ValueTree::SharedObject::callListenersForAllParents<juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)>(juce::ValueTree::Listener*, juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int)::'lambda'(juce::ValueTree::Listener&)) const juce_ValueTree.cpp:95
#11 0x1188b3094 in juce::ValueTree::SharedObject::sendChildRemovedMessage(juce::ValueTree, int) juce_ValueTree.cpp:113
#12 0x118869cd2 in juce::ValueTree::SharedObject::removeChild(int, juce::UndoManager*) juce_ValueTree.cpp:297
#13 0x1188af182 in juce::ValueTree::SharedObject::AddOrRemoveChildAction::undo() juce_ValueTree.cpp:508
#14 0x11888352f in juce::UndoManager::ActionSet::undo() const juce_UndoManager.cpp:47
#15 0x1188830ae in juce::UndoManager::undo() juce_UndoManager.cpp:252
#16 0x11750ecb8 in foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43::operator()() const foleys_ToolBox.cpp:89
#17 0x11750ebb5 in _ZNSt3__128__invoke_void_return_wrapperIvE6__callIJRZN6foleys7ToolBoxC1EPN4juce9ComponentERNS3_15MagicGUIBuilderEE4$_43EEEvDpOT_ type_traits:4428
#18 0x11750e587 in std::__1::__function::__func<foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43, std::__1::allocator<foleys::ToolBox::ToolBox(juce::Component*, foleys::MagicGUIBuilder&)::$_43>, void ()>::operator()() functional:1562
#19 0x1185ff965 in std::__1::function<void ()>::operator()() const functional:1913
#20 0x1193c5e84 in juce::Button::sendClickMessage(juce::ModifierKeys const&) juce_Button.cpp:408
#21 0x1193c7d2e in juce::Button::internalClickCallback(juce::ModifierKeys const&) juce_Button.cpp:351
#22 0x1193ca13d in juce::Button::mouseUp(juce::MouseEvent const&) juce_Button.cpp:471
#23 0x119345f69 in juce::Component::internalMouseUp(juce::MouseInputSource, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, float, float, float) juce_Component.cpp:2434
#24 0x1199a561e in juce::MouseInputSourceInternal::sendMouseUp(juce::Component&, juce::Point<float>, juce::Time, juce::ModifierKeys) juce_MouseInputSource.cpp:155
#25 0x119999dea in juce::MouseInputSourceInternal::setButtons(juce::Point<float>, juce::Time, juce::ModifierKeys) juce_MouseInputSource.cpp:197
#26 0x119364f6a in juce::MouseInputSourceInternal::handleEvent(juce::ComponentPeer&, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, juce::PenDetails) juce_MouseInputSource.cpp:334
#27 0x119363503 in juce::MouseInputSource::handleEvent(juce::ComponentPeer&, juce::Point<float>, long long, juce::ModifierKeys, float, float, juce::PenDetails const&) juce_MouseInputSource.cpp:634
#28 0x1198c09d4 in juce::ComponentPeer::handleMouseEvent(juce::MouseInputSource::InputSourceType, juce::Point<float>, juce::ModifierKeys, float, float, long long, juce::PenDetails, int) juce_ComponentPeer.cpp:88
#29 0x119ca40a9 in juce::NSViewComponentPeer::sendMouseEvent(NSEvent*) juce_mac_NSViewComponentPeer.mm:725
SUMMARY: AddressSanitizer: heap-use-after-free atomic:1020 in juce::Atomic<int>::operator++()
Hi ffAudio,
Thanks so much for this module, I've been using it on a couple projects now, and really love it!
It seems like the default plugin window size is 600 x 400, and I was wondering if there's a way to customize this? I tried changing the dimension parameters of the root view, but that didn't seem to work. What did work was hardcoding values in MagicPluginEditor::updateSize()
:
void MagicPluginEditor::updateSize()
{
int width = builder->getStyleProperty (IDs::width, builder->getGuiRootNode());
if (width < 10) width = 600;
int height = builder->getStyleProperty (IDs::height, builder->getGuiRootNode());
if (height < 10) height = 600; // I changed this from the default (400)
// rest of function ...
}
Is there a better way to do this? Or if this is the best way to do it, it would be nice if the default dimensions could be set as arguments to the constructor, i.e.
return new foleys::MagicPluginEditor (magicState, BinaryData::myGUI, BinaryData::myGUI_size, width, height);
Thanks,
Jatin
When compiling the "EqualizerExample" with Microsoft Visual Studio Professional 2019 Version 16.7.0 I get the warning mentioned above.
C4244 'return': conversion from 'double' to '_Rx', possible loss of data
Has anyone seen this before or know how to resolve?
Thanks
My root node container has the display property set to 'tabbed' but the tabs themselves dont appear in the UI until I resize the window.
When I drag an XYComponent into the View tree it always triggers an assert in juce_GraphicsContext.cpp here :
Rectangle<Type> coordsToRectangle (Type x, Type y, Type w, Type h) noexcept
{
#if JUCE_DEBUG
const int maxVal = 0x3fffffff;
jassert ((int) x >= -maxVal && (int) x <= maxVal
&& (int) y >= -maxVal && (int) y <= maxVal
&& (int) w >= 0 && (int) w <= maxVal
&& (int) h >= 0 && (int) h <= maxVal);
#endif
To verify
AudioProcessorValueTreeState treeState{ *this, nullptr };
foleys::MagicProcessorState magicState{ *this, treeState };
To PluginProcessor.h,
5: Create the MagicPluginEditor in PluginProcessor.cpp : createEditor()
return new foleys::MagicPluginEditor(magicState);
Run the standalone in Debug
drag the XYComponent from the component pallette onto the View(root) node.
This happens for me both in the master and develop branches.
(Mac, XCode 10.1, Standalone-Build)
1)
in 1.10 here the xyDragComponent never paints the parameters.
When bringing the old code back to line 410 in foleysMagicJuceFactories.cpp
it works again:
instead of just //return std::unique_ptr();
```
if (auto* magicState = getProcessorState())
{
auto item = std::make_unique(magicState->getValueTreeState());
auto paramX = config.getProperty (IDs::parameterX).toString();
if (paramX.isNotEmpty())
item->setParameterX (paramX);
auto paramY = config.getProperty (IDs::parameterY).toString();
if (paramY.isNotEmpty())
item->setParameterY (paramY);
return std::move (item);
}
else
{
return std::unique_ptr<XYDragComponent>();
}
2)
if a colourSelect field "x"-Button in the Editor-Tool is not editable, and you change the fields value (set a new colour), after that you are not able to return to the default value, because the "x" Button is still not enabled. After selecting another node and coming back the "x" Button is enabled and you can return to the default value.
Editing a Node still works, but editing Classes or Types is never possible. The labels are not editable, the elements are not expandable, V 1.0.8
(Mac, XCode 10.1, Standalone-Build)
1)
in 1.10 here the xyDragComponent never paints the parameters.
When bringing the old code back to line 410 in foleysMagicJuceFactories.cpp
it works again:
instead of just //return std::unique_ptr();
if (auto* magicState = getProcessorState())
{
auto item = std::make_unique<XYDragComponent>(magicState->getValueTreeState());
auto paramX = config.getProperty (IDs::parameterX).toString();
if (paramX.isNotEmpty())
item->setParameterX (paramX);
auto paramY = config.getProperty (IDs::parameterY).toString();
if (paramY.isNotEmpty())
item->setParameterY (paramY);
return std::move (item);
}
else
{
return std::unique_ptr<XYDragComponent>();
}
if a colourSelect field "x"-Button in the Editor-Tool is not editable, and you change the fields value (set a new colour), after that you are not able to return to the default value, because the "x" Button is still not enabled. After selecting another node and coming back the "x" Button is enabled and you can return to the default value.
I have a general question about the best way to deal with unwanted clicking/popping noises when using GUI Magic in a JUCE project.
I have started a simple project based off of your Equalizer Example, the JUCE ASIO driver and a Scarlett Interface (nothing fancy just plugging a guitar in and testing).
The first thing I notice when adjusting the output slider either way while audio is playing are Sound Artifacts as clicks and pops. I have read and watch videos where this is addressed by implementing Gain Ramps. So before getting to involved in this project, I was wondering what the recommended way of handling this would be?
Most of the examples I see for JUCE use a native GUI or something like GenericAudioProcessorEditor. Is there anything specific related to GUI Magic I should research or should I approach just like any standard JUCE project?
Thanks for your help
I get the following error: Use of class template 'juce::Component::SafePointer' requires template arguments
System: Mac OS M1
JUCE: 7.0.2
I'm sure there is something wrong in my configuration but I can't seem to get the combo box to display the selected value.
I.E. In the Equalizer Example the Filter Type combo box/drop down menu displays the name of the selected item.
Does the combo box function like this by default or is there something else I need to configure to get my combo boxes to show their selected values?
Hi.
Open Foleys Synth (either plugin or standalone app)
click Save button
Freeze
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.