plugdata-team / plugdata Goto Github PK
View Code? Open in Web Editor NEWPure Data as a plugin, with a new GUI
Home Page: https://plugdata.org
License: GNU General Public License v3.0
Pure Data as a plugin, with a new GUI
Home Page: https://plugdata.org
License: GNU General Public License v3.0
Hi,
I'd like to use command line arguments as original pure-data offers. At least
-path <path> -- add to file search path
-helppath <path> -- add to help file search path
-open <file> -- open file(s) on startup
-send "msg..." -- send a message at startup, after patches are loaded
In an attempt to learn more about PureData, I've gone to the main website at https://puredata.info. There, I find that there are four different flavours of PD....
Which of these is the implementation contained in PlugData the closest to? I just want to make sure that I don't go following the wrong path and find myself in a frustrating muddle of incompatibilities.
Hello, I built PlugData from source following the readme. As long as I add an instance of it in REAPER, REAPER just crashes.
The standalone version and the lv2 works, but in the VST when I press "+" in the toolbar I get the menu, but after selecting empty object (or any other choice), nothing gets created on the canvas.
This times it works in carla, but not in Bitwig Studio :/ I can load files created in standalone and edit them in the vst, just creating new objects seems to fail.
Here is some report with v0.3 (tested under OSX)
(edited by @timothyschoen)
/usr/bin/ld: Error: unable to disambiguate: -Symbolic (did you mean --Symbolic ?)
I guess it's because of the change at CMakeLists.txt:20 in this commit. Please take a look.
I've build from git HEAD (4c2b9af) and then copied Plugins/VST3/
to ~/.vst3/
tree Plugins/VST3/
Plugins/VST3/
├── PlugDataFx.vst3
│ └── Contents
│ └── x86_64-linux
│ └── PlugDataFx.so
└── PlugData.vst3
└── Contents
└── x86_64-linux
└── PlugData.so
BitWidg Studio complains about:
/home/ensonic/.vst3/PlugData.vst3
com.bitwig.flt.library.metadata.reader.exception.CouldNotReadMetadataException: could not read metadata: Communications error with plugin host process
exit code:139
stdout:
PluginHost: Reading VST 3 plugin metadata for /home/ensonic/.vst3/PlugData.vst3
stderr:
Error setting realtime priority for thread to -10
Error setting realtime priority for thread to -10
Error setting realtime priority for thread to -10
Hi!
When clicking on a Toggle, the state changes only when the mouse button is released.
The expected behaviour (the behaviour of Bangs in PlugData or of Toggles in Max) should be: the state changes directly when the mouse button is pressed.
Tested with 4.0.2 on Standalone Win64
Is there a current (or planned) method of easily accessing the DAW/host tempo? As PlugData is obviously plugin, the VST spec would allow it to access the host tempo.
Hi, I'm trying to add PlugData to AUR. I wrote a little PKGBUILD file where the building instructions is just the same in readme.
build () {
cd "${srcdir}/PlugData"
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -G"Unix Makefiles" ..
cmake --build .
}
However, since archlinux have some default CFLAGS
/CXXFLAGS
for makepkg
defined in /etc/makepkg.conf
:
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection"
CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
Everything is fine if I build PlugData manually. But if I built it via makepkg, these flags would be passed to the C/CXX compiler and I would get this error:
cc1: error: ‘-Wformat-security’ ignored without ‘-Wformat’ [-Werror=format-security]
I've googled for a while and it seems that this is due to some CMakeLists disabling the -Wformat
flag..? I'm not that familiar with cmake so perhaps you can help me with that :)
I’m not too experienced in JUCE (or modern c++) but would it be possible to split the UI from this and make a standalone ver? It just looks really nice and I would like to use it standalone.
When you have autoscroll enabled and the log/print messages fill up the list and it starts scrolling - the most recent message will not display at the bottom of the list, until:
If replacing an existing patch file (using Save Project), it will instead append or duplicate all existing objects, so you end up with duplicate objects overlaid over the original ones when you next opened the patch (wasn't obvious until you moved an object).
Here is some bug report and remarks after using v0.21:
If you use the contextual menu 'Duplicate' (or Copy/Paste) on any of the slider types or the canvas, they are duplicated as a slightly smaller size.
Hi!
A few bugs and UI problems found in the 4.0.3 win64 Standalone version.
When opening a patch in Pure data previously saved in PlugData, all the subatches are automatically opened (visible), and show a comment "plugdatainfo"
I guess this is to remember the patch parameters, like background colors. Is it possible to hide that better? Or to put it in an additionnal external file, not interfering with the original file?
It would be nice to have a totally transparent exchange between the two programs.
It converts automatically Vradio and Hradio to 9 cells buttons, whatever the number of cells of the original patch in PureData
The Toggle buttons are very confusing!
Why not using the standard "not-checked" when off?
Object boxes and message boxes are too similar. (symbol boxes are ok)
Maybe using the same shape as in PureData?
It would be amazing to have the zoom focusing on the mouse position, not on the position top-left of the patch, especially with the middle mouse scrolling zoom.
There is a delay in number box results displaying.
When changing a value manually, the display is real-time, but the others number boxes in the chain are a bit delayed by a few ms (can be annoying for music)
Some Vsliders don't work very well.
To reproduce, try opening percussion.pd in Automatonism.
In Lock mode, try to move the slider P-DECAY. In comparaison, the slider DECAY1 works well.
I guess this is an issue when multiple objects overlap slightly, but unfortunately that can happens very often when importing patches from PureData.
Thank you again for your amazing work, it's very impressive!
The interface in general is super convenient, fluid...
I especially like the difference of colors between audio and data inputs.
In v0.4.0, the add button enablement is incorrect. This is most obvious on Windows, but it also affects Mac and Linux (but less often).
Hi, reamde says "Cyclone is included to offer an easy entry point for Max users but ELSE contains more Max objects than cyclone, see this)"
we can't say ELSE has "more MAX objects". Actually it has no MAX objects at all, per se, it has alternatives for objects in Cyclone, but not for ALL AND EVERY object in Cyclone. It does, though, offer some other alternatives to objects in MAX that weren't cloned in Cyclone.
So, how can we put this?
I say
"Cyclone is included to offer an easy entry point for Max users but ELSE contains several alternatives to most objects in Cyclone and Pure Data Vanilla itself also has some alternatives. Not only that, but objects that weren't cloned into Cyclone also have alternatives in ELSE, see: this)"
I still have to include the alternatives for objects that are not in cyclone...
Hi,
I tried to add the purr-data external path to PlugData ( /opt/purr-data/lib/pd-l2ork/extra ) and C coded libraries fail to load.
Adding
[iemlib/init] : undefined symbol s_float
[iem_ambi/ambi_decode] : undefined symbol s_list
[lyonpotpourri/bv_play~] : undefined symbol garray_class
NB: These types are defined in Libraries/pure-data/src/m_pd.h
Could not compile VST in WIn10 with MSYS / MinGW. Any advices how yo do it right?
For example, if I add a GraphOnParent, then add some vertical sliders to it in the subpatch, if I then zoom the subpatch, the objects shown on the parent are also zoomed ( and are truncated in the graph window as they no longer fit).
Hey :)
Great project you have going here. I am a big fan of anything Pure Data related, especially projects that make it easier to use with other music software, like a DAW :)
Just wanted to swing this by you. I am not able to use short cuts/key commands. Maybe I am not doing it right, but usually in PD on Mac, you can use command+number to add different object, like an empty object(command+1) or command+2, which creates a message.
Is that something you plan on implementing?
Best wishes,
Jakob
I'll have this fixed before the next version.
Since 0.3 the audio output meters at the bottom of the plugin do not redraw/refresh correctly, particularly if the audio going into PlugData stops e.g. if I'm using PlugData as a guitar effect and stop playing (no audio to the plugin) then the meters will freeze and not fall back to zero.
The same is true if I play an audio file from PlugData - the meter will freeze once the file stops playing.
If this is part of a change to reduce CPU (which is good!) then I would consider removing the meters altogether, as they are not useful at all when not updating correctly.
When I reopen my DAW project or load a patch within PlugData, any Comment object generates a 'Couldn't create' message in the log, although it will be created successfully.
If you have any ideas for features you'd like to see, drop them here!
hi, nice work, is this based on https://github.com/porres/Camomile-ELSE? If so, can you give me and @emviveros credits as well? cheers
I've build the package from the Git clone, and installed the standalone and the VST. If I try to run the standalone, the tray icon dances around a bit indicating some sort of activity, then it stops, but no GUI appears on the screen. Also, PlugData does not appear in the top menu. Alt-Tabbing reveals PlugData as an active app, but "Show All Windows" from the tray icon reveals nothing.
The VST in Bitwig Studio appears to work as expected, although the plugin did crash on me after a few minutes activity. I have yet to uncover the extent of this problem. If it happens agin, I'll try to get a crash dump of some kind.
If I connect object A to object B, I can't connect object A to some other object C. It seems that once there is a single connection, there seems to be no way to click on the port again to start making another connection
I'm frequently seeing the + icon still enabled when I lock, so I can still add an object. After a few clicks it then disables (greys-out).
Same the other way - I can unlock and the + button is still greyed out.
Anywhere I can find these files - help a non-programmer. I can find hidden folders, just don't know where these files are.
Hi,
the current linux version segfaults when a tab is closed:
Thread 1 "PlugData" received signal SIGSEGV, Segmentation fault.
juce::TabbedComponent::setCurrentTabIndex (this=0x555003f96e3e, newTabIndex=0, sendChangeMessage=true) at /usr/include/c++/11/bits/unique_ptr.h:173
173 pointer _M_ptr() const { return std::get<0>(_M_t); }
(gdb) backtrace
#0 juce::TabbedComponent::setCurrentTabIndex (this=0x555003f96e3e, newTabIndex=0, sendChangeMessage=true) at /usr/include/c++/11/bits/unique_ptr.h:173
#1 0x0000555555a07b5b in operator() (__closure=0x555556a3e970) at /home/users/GIT/PlugData/Source/PluginEditor.cpp:545
#2 std::__invoke_impl<void, PlugDataPluginEditor::addTab(Canvas*, bool)::<lambda()>&> (__f=...) at /usr/include/c++/11/bits/invoke.h:61
#3 std::__invoke_r<void, PlugDataPluginEditor::addTab(Canvas*, bool)::<lambda()>&> (__fn=...) at /usr/include/c++/11/bits/invoke.h:111
#4 std::_Function_handler<void(), PlugDataPluginEditor::addTab(Canvas*, bool)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
at /usr/include/c++/11/bits/std_function.h:291
#5 0x000055555572be11 in std::function<void ()>::operator()() const (this=0x555556b94c98) at /usr/include/c++/11/bits/std_function.h:560
#6 juce::Button::sendClickMessage (this=0x555556b94bb0, modifiers=...)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:425
#7 0x00005555557671ce in juce::Button::mouseUp (this=0x555556b94bb0, e=...)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:490
#8 0x000055555574cd94 in juce::Component::internalMouseUp (this=<optimized out>, source=..., relativePointerState=..., time=..., oldModifiers=...)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:2565
#9 0x00005555557f06ef in juce::MouseInputSourceInternal::sendMouseUp (oldMods=..., time=..., pointerState=..., comp=..., this=0x55555629b8b0)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:559
#10 juce::MouseInputSourceInternal::setButtons (this=this@entry=0x55555629b8b0, pointerState=..., time=time@entry=...,
newButtonState=newButtonState@entry=...)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:185
#11 0x0000555555777070 in juce::MouseInputSourceInternal::handleEvent (pen=..., pen=..., newOrientation=<optimized out>, newPressure=<optimized out>,
newMods=..., time=..., positionWithinPeer=..., newPeer=..., this=<optimized out>)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:312
#12 juce::MouseInputSource::handleEvent (this=this@entry=0x7fffffffd9c0, peer=..., pos=..., pos@entry=..., time=time@entry=1649405943376, mods=...,
mods@entry=..., pressure=<optimized out>, orientation=<optimized out>, penDetails=...)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:609
#13 0x00005555557772a5 in juce::ComponentPeer::handleMouseEvent (this=this@entry=0x5555562b79e0, type=type@entry=juce::MouseInputSource::mouse, pos=...,
newMods=..., newPressure=newPressure@entry=0, newOrientation=newOrientation@entry=0, time=1649405943376, pen=..., touchIndex=touchIndex@entry=0)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp:87
#14 0x0000555555777787 in juce::XWindowSystem::handleButtonReleaseEvent (this=<optimized out>, peer=<optimized out>, buttonRelEvent=...)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3531
#15 0x000055555577974d in juce::XWindowSystem::handleWindowMessage (this=0x55555629bae0, peer=<optimized out>, event=...)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3264
#16 0x0000555555779d11 in operator() (__closure=0x55555629b2a0)
at /home/users/GIT/PlugData/Libraries/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3188
#17 std::__invoke_impl<void, juce::XWindowSystem::initialiseXDisplay()::<lambda(int)>&, int> (__f=...) at /usr/include/c++/11/bits/invoke.h:61
#18 std::__invoke_r<void, juce::XWindowSystem::initialiseXDisplay()::<lambda(int)>&, int> (__fn=...) at /usr/include/c++/11/bits/invoke.h:111
#19 std::_Function_handler<void(int), juce::XWindowSystem::initialiseXDisplay()::<lambda(int)> >::_M_invoke(const std::_Any_data &, int &&) (__functor=...,
__args#0=<optimized out>) at /usr/include/c++/11/bits/std_function.h:291
#20 0x00005555558b83a3 in std::function<void (int)>::operator()(int) const (__args#0=<optimized out>, this=0x55555629b2a0)
at /usr/include/c++/11/bits/std_function.h:560
#21 juce::InternalRunLoop::dispatchPendingEvents (this=this@entry=0x55555629b1f0)
at /home/user/GIT/PlugData/Libraries/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:185
#22 0x00005555558b5fdd in juce::dispatchNextMessageOnSystemQueue (returnIfNoPendingMessages=returnIfNoPendingMessages@entry=false)
at /home/user/GIT/PlugData/Libraries/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:299
#23 0x00005555558b6047 in juce::MessageManager::runDispatchLoop (this=0x55555629b180)
juce_events/messages/juce_MessageManager.cpp:107
#24 0x000055555563af70 in juce::JUCEApplicationBase::main () at /home/user/GIT/PlugData/Libraries/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262
#25 0x00007ffff78b3fd0 in __libc_start_call_main (main=main@entry=0x555555637840 <main(int, char**)>, argc=argc@entry=1, argv=argv@entry=0x7fffffffdfa8) at ../sysdeps/nptl/libc_start_call_main.h:58
#26 0x00007ffff78b407d in __libc_start_main_impl (main=0x555555637840 <main(int, char**)>, argc=1, argv=0x7fffffffdfa8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdf98) at ../csu/libc-start.c:409
#27 0x0000555555649e05 in _start ()
I tried to send a signal from one instance of PlugData to another by passing it from the dac~ of the first to an adc~ in the second. The value in the second instance (i.e. after the adc~), is slightly lower. In testing it, i tried it with a fixed value and sig~ and it still seems to happen.
Hi!
It would be nice to have Automatonism working in PlugData
https://www.automatonism.com/
It's for PD Vanilla, so it could work (and it kind of works!), but:
1/ The PlugData GUI makes the GOP abstractions very difficult to read.
Because of the displaying of Canvas objects, the sizes of objects and canvas texts, and because of the color theme.
It would be nice to have a checkbox in the settings, allowing for a change of the UI, closer to the Vanilla one (colors, sizes of objects)
I really like the dark theme and UI for new patches, but it brings a lot of problems when opening existing Vanilla patches
2/ Automatonism uses dynamic patching for the creation of new modules (messages like ; patchname.pd obj 10 10 objectname instancenumber) or for the management of windows (like ; pd-modules vis 1).
I can imagine it's not something easy to implement.
But that would help a lot to have the same behaviours than in Vanilla, even for less official features like dynamic patching.
Thank you!
I've got a message when I launch the app under Catalina saying that I am using macOS 10.15.4 and the app requires macOS 11.0 or later.
Found the problem today, probably responsible for most bugs currently found in the plugin version. Fixing this is now my highest priority.
Any patch that includes links to abstractions will initially work when loading the main patch in PlugData.
However after reloading the DAW project, the abstractions aren’t loaded.
Is there support for this? I assume the abstractions aren't being saved in the plugin state and so aren't recalled.
I was getting a lot of crashes when testing out play.file~
I think it might be due to changing the referenced file to another that had a different channel count. e.g. if the object originally had a stereo file and had both L/R connections to the dac~, then the file was changed to a mono one, it would crash the host.
I could also replicate this when the object was just play.file~ 2 (for 2 channels that were connected to the dac) and then I changed it to play.file~ 1
Hi,
clicking on the New project icon crush the current file instead of opening a new tab. On linux at least.
Under Windows 10 with standalone version, a message say that those dll are missing and are required:
MSVCP140D.dll
VCRUNTIME140D.dll
VCRUNTIME140_1D.dll
ucrtbased.dll
Hi!
It's sometimes frustrating to be locked by the top or bottom of the screen when dragging a value in a number box.
I like the way VVVV Gamma for example manages it:
the mouse cursor disappears when dragging, and stays at the same position when reapearing.
Far more natural when playing music!
When trying to save a preset in Logic's preset system the entire application crashes. Saving a pd file works however. I'm running Logic on M1 in Monterey.
Very impressive work! Here is a few bug reports about v0.2 of plugdata (standalone):
Few remarks:
Looking forward to see how it will grow ;)
Thank you for the improvements in 0.3. But I think the smaller toolbar icons are now too small - you lose the details of the icon.
I agree reducing the toolbar height is a good change, but there is actually room to increase the overall size of the icon in the current toolbar height e.g. there is blank space above all the icons.
I also think some of the horizontal space/gaps between the icons could be reduced a bit.
Hi, if i open a project (i.e an help patch or any .pd files) and close it Reaper and Live just crash on Windows 10 (64bit)
I quite like the dark theme, I find it less straining on the eyes and it also sets It apart from Pd and Max visually. However when you open an original Pd patch, label/object colours are often set to be black, which makes it hard to see in PlugData.
Not sure how to handle this yet, but maybe a light/dark theme switch could be an idea.
Hi,
Thanks for this awesome project !
I cannot load the VST plugin / standalone version on my linux system
Ubuntu 18.04.6 LTS
Is there a required minimal OS version ?
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.