Code Monkey home page Code Monkey logo

plugdata's Introduction

Logo

plugdata

Plugin wrapper around Pure Data to allow patching in a wide selection of DAWs.

Workflows

Downloads Release License

Discord

app darkmode

plugdata is a plugin wrapper for Pure Data, featuring a new GUI made with JUCE. This is still a WIP, and there are probably still some bugs. By default, it ships with the ELSE collection of externals and abstractions. The aim is to provide a more comfortable patching experience for a large selection of DAWs. It can also be used as a standalone replacement for pure-data.

Join the Discord here, for sharing patches, reporting issues or requesting features: https://discord.gg/eT2RxdF9Nq

LIRA-8

Installation

-Windows:

-MacOS:

  • Option 1: Get the installer from the latest official release
  • Option 2: Install the homebrew cask. I do not maintain this so it may be outdated.

-Linux:

You can also download a recent experimental build from our website

Build

git clone --recursive https://github.com/plugdata-team/plugdata.git
cd plugdata
mkdir build && cd build
cmake .. (the generator can be specified using -G"Unix Makefiles", -G"XCode" or -G"Visual Studio 16 2019" -A x64)
cmake --build .

Important:

  • plugdata requires cmake 3.21 or later to build CLAP plugins. If you use an older version of cmake, CLAP plugin builds will be disabled.
  • Ensure that the git submodules are initialized and updated! You can use the --recursive option while cloning or git submodule update --init --recursive in the plugdata repository .
  • On Linux, Juce framework requires to install dependencies, please refer to Linux Dependencies.md and use the full command.
  • The CMake build system has been tested with Unix Makefiles, XCode, Visual Studio 17 2022 and Visual Studio 16 2019

Adding your own externals

You can use externals inside plugdata's plugin version by recompiling the externals along with plugdata. This can be achieved by making the following modification to plugdata:

  • Add your sources to the "externals" target inside Libraries/CMakeLists.txt. Alternatively the source files can be placed inside the Libraries/ELSE/Source folder, as all .c files in that folder will be compiled automatically.
  • In Source/Pd/Setup.cpp, add the setup function for your external. The best place to call your setup function is inside libpd_init_pdlua. initialiseELSE and initialiseCyclone will also work, but it has the side-effect that the externals will also be available under the else/* and cyclone/* prefix.

Corporate sponsors

Credits

  • Logo by Bas de Bruin, based on concept by Joshua A.C. Newman
  • Camomile by Pierre Guillot
  • ELSE by Alexandre Torres Porres
  • cyclone by Krzysztof Czaja, Hans-Christoph Steiner, Fred Jan Kraan, Alexandre Torres Porres, Derek Kwan, Matt Barber and others (note: Cyclone is included to offer an easy entry point for Max users but ELSE contains several alternatives to 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)
  • pd-lua by Claude Heiland-Allen, Albert Graef, and others
  • Pure Data by Miller Puckette and others
  • libpd by the Peter Brinkmann, Dan Wilcox and others
  • Heavy/hvcc originally by Enzien Audio, maintained and modernised by Wasted Audio
  • Juce by ROLI Ltd.
  • MoodyCamel by Cameron Desrochers
  • Inter font by Rasmus Andersson
  • Kiwi by Eliott Paris, Pierre Guillot and Jean Millot
  • FluidLite by divideconcept, based on Fluidsynth

Status

What works:

  • Nearly complete support for pd
  • Most ELSE and cyclone library objects work
  • VST3, LV2, CLAP and AU format available, tested on Windows (x86/x64), Mac (arm64/x64) and Linux (arm64/armhf/x64)
  • Receive 512 DAW parameters using the [param] abstraction
  • Receive DAW playhead position, tempo and more using the [playhead] abstraction

Known issues:

  • Broken ELSE objects: See #174
  • There may still be some more bugs

plugdata's People

Contributors

agraef avatar aik2mlj avatar alcomposer avatar caitp avatar chee avatar dromer avatar haenkel avatar joshuaacnewman avatar jyg avatar kottv avatar kreth608 avatar nejrup avatar thouldcroft avatar timothyschoen avatar tomara-x avatar vasilymilovidov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plugdata's Issues

Feature requests

If you have any ideas for features you'd like to see, drop them here!

Can't make multiple connections from an outlet

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

Short cuts/key commands?

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

Bottom bar doesn't appear when fullscreen

Hello,

The bottom bar doesn't appear when fullscreen in PlugData release 0.4.2 Win64 Standalone

In Windowed mode, no problem:
image

In Fullscreen mode, after clicking the + button top right (screen resolution is 1920x1080px), no bottom bar:
image

Linux min version ?

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 ?

Set default volume to 1

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.

Can't create objects in the vst running in BitwigStudio on Linux..

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.

Toggle - change on mouse-up

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

MSYS / MinGW

Could not compile VST in WIn10 with MSYS / MinGW. Any advices how yo do it right?

Building failed when installing PlugData via makepkg (Archlinux)

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 :)

Externals don't work in plugin (only in standalone)

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

Host Tempo/BPM

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.

Pd patches with compact UIs look bad (example: Automatonism)

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
image
image

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.

image

Thank you!

[Feature Request] Standalone miss command line arguments

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

Abstractions missing after DAW project reload

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.

VST works but standalone doesn't

  • Mac Mini M1
  • macOS 12.1 Monterey
  • Bitwig Studio 4.1.2

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.

IDEA: Separate the GUI from the project?

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.

[Feature Request] Infinite mouse drag

Hi!

It's sometimes frustrating to be locked by the top or bottom of the screen when dragging a value in a number box.

30

I like the way VVVV Gamma for example manages it:
the mouse cursor disappears when dragging, and stays at the same position when reapearing.
31
Far more natural when playing music!

Toolbar Icon Sizing Too Small

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.

Crash when saving aupresets in Logic

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.

play.file~ crash when changing channel count

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

Crash log for Reaper.

[Standalone 0.4.2] Crash at tab close

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 ()

standalone works, but VST plugins fail in BitwigStudio/Carla under linux

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

Feature request: one-click and drag activation

  • Ability to activate a serie of Toggles or Bangs in one click+drag

32
(right now you have to click on every Toggle)

The same with radio boxes:
image

That would be super useful for interacting in realtime with sequencers.

A question about PD compatibility

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....

  • Pd-vanilla
  • Pd-ceammc
  • Pd-L2Ork
  • Purr Data

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.

Log/Print message display issue

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:

  1. You resize the window, or
  2. Another message is printed and the earlier one will then show up

Audio Output Meter Redraw Issue

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.

Dark style sometimes makes original pd patches unreadable

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.

Missing dll under windows standalone

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

Standalone v0.3/v0.3.1 bug report

Here is some report with v0.3 (tested under OSX)

(edited by @timothyschoen)

  • Array should have default name "array1". If create an array without filling a name, click on it = app crash
  • - canvas gui object "foreground" is useless. But width / height fields would be convinient.
  • - Label and their color/position/font are missing in every GUI (I understand they would conflict with the "object name" displayed on mouseover, but this design needs some thought)
  • - when an object is below another one but is connected from above, the segmented path is confusing and repositionning the horizontal segment with mouse is reversed.
  • - last bottom line of print is not visible, might be under the bottom bar?
  • - zoom with Action + mousewheel would be nice
  • - single click (or double clic) on object name should create object and close the completion menu (now only fill empty object name, then need extra clic outside to create) (note: currently not a priority because Max does the same. I do like the behaviour you suggested, so maybe next release -TS)
  • - "Create object" menu add object in the middle of canvas... could be under last mouse position and already selected to save the extra effort to search for it and select it. (note: currently not a priority because Max does the same -TS)
    -> The best behavior should be like puredata then: the object "stick" (follow) to mouse position until you click somewhere to validate the final object position in the patch. This way is more natural and handy. Also adding object using shortcut might have the same behavior.
  • - resizing graph on parent is nice, works only on width and is reseted to default during a GUI interaction. (note: disabled resizing while it doesn't work - TS)
  • - keyboard ui object keys does not extend when resizing
  • - the highlighted inlets/outlets are almost invisible, might be white color and maybe bigger size / zone like in PurrData which is very confortable (this is the key in a data flow environment ;) ).

UI bugs and problems in 0.4.3

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"
    image
    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
    image
    image

  • some properties (e.g. colors) are not implemented:
    image
    image

  • The Toggle buttons are very confusing!
    image
    Why not using the standard "not-checked" when off?

  • Object boxes and message boxes are too similar. (symbol boxes are ok)
    image
    Maybe using the same shape as in PureData?
    image

  • 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)
    image

  • 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.
    image
    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.

Weird add button behaviour

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).

Standalone v0.2 bug report

Very impressive work! Here is a few bug reports about v0.2 of plugdata (standalone):

  • Print object don't work
  • Toggle should be at least square if not crossed to differanciate with bang
  • hradio and vradio size return to default after switch action / edition mode
  • Help only in edition mode, cannot switch into run mode
  • vslider horizontal size grow when switching edition/action mode
  • Save icon say "open" instead of "save"
  • Out -> out connections are possible and should be disabled (now they seems to do same as out -> in)
  • Object can still be edited in runmode

Few remarks:

  • Click on cords to select it should be possible (not only drag a square around it)
  • Shortcuts to create new boxes
  • New objects should appear under current mouse position
  • Objects box should resize while adding letter inside
  • vsl/hsl slider grey bar should be visible to see where we are in the range
  • title name Label takes too much space, maybe the name could appear on mouse over only
  • all gui could also be triggered in editmode (pd use ctrl + clic in edit to temporary switch to runmode)

Looking forward to see how it will grow ;)

Standalone v0.21 bug report

Here is some bug report and remarks after using v0.21:

  • nbx box colors doesn't' work
  • symbol atom have no properties field
  • Panel should be named "canvas"
  • Panel (Canvas) size should have minimum constrains (otherwise negative values makes them invisible)
  • Renaming a message to "print " object create only one (non working) outlet
  • new object shortcut should be "o" not "n"
  • Symbol atom box cannot be triggered with enter key, like float box do
  • Comment box outline should disappear in run mode
  • Msg box should be slightly different shape or color from atom float/symbol boxes (hard to distinguish them now)
  • broken objects ("couldn't create) should be outlined with red, otherwise they look the same as comment box
  • Msg text box should be clikable (not with a "bang" space bonded on right)
  • Ui's connected to a float box don't refresh values in the float box
  • Slider full track still not visible
  • Text editing mode should be activated with the same behavior in every box. (Now: float atom box and msg need single click, while object need double click for text editing)
  • Paste function should keep last(s) pasted object(s) selected
  • mouse scroll over keyboard ui (and others like hslier/vslider) scroll the patch at the same time.
  • Allows object name selection using mouse clic in name completion box (now only works with "enter" key)
  • Plug data always load the last .pd patch at start (is it a feature?)
  • Strange patch behavior: Missing message "do you want to save" when closing a modified patch in tabs, only when opening a new file (even the current patch has not been modified)
  • curved connection switch doesn't work in help files
  • Print lot of values is very slow ;)

PlugData crashes on arch linux

Hello, I built PlugData from source following the readme. As long as I add an instance of it in REAPER, REAPER just crashes.

Cyclone in readme

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...

OSX issue with standalone

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.