ELSE 1.0-0 RC13 with Live Electronics Tutorial Released
Ok, the cat is out of the bag --> https://github.com/porres/pd-else/releases/tag/1.0-rc13 I'm officialy announcing the update and uploaded binaries to deken for mac (intel/arm), Win and Linux. It all looks ok but tell me if you see something funny please. There's also a raspberry pi binary but not working 100%yet and we'll still look into that. Hopefully someone could help me/us with it. I might make another upload just for the pi later on if/when we figure it out. Find release notes and changelog below.
RELEASE NOTES:
Please support me on Patreon https://www.patreon.com/porres I'll now try to add special content for subscribers. You can follow me on instagram as well if you like... I'm always posting Pd development stuff over there https://www.instagram.com/alexandre.torres.porres/
It's been a little bit over 7 months since the last update and I almost broke the record for taking too long to release an update (which had happened in my previous update). So yeah, there's just too much to talk about! I guess the delays in releasing updates is because it's been a little tricky and hard to sync the release cycles of ELSE with PlugData, which includes ELSE in its download.
Plugdata 0.9.2 should come out soon with ELSE RC13 and it's supposedly the last update before 1.0.0, so I've heard. And the plans was to get to that still in 2025! This means ELSE could be at its last "Release Candidate" phase as I'm aiming to sync the final release with PlugData. Until then, I'll still make breaking changes and I can't wait until I can't do that anymore as I really feel bad. On the other hand, it's kind of inevitable when I'm always adding new stuff and redesigning and reconfiguring objects to include more functionalities. And I always got a lot of new stuff! So I'm thinking that I will eventually try some mechanism like Pd's compatibility flag or something. I'll try to come up with something like that in the next update.
This update has 22 new objects for a total of 573 and 26 new examples in my tutorial for a total of 554 examples. Let's dive into the highlights (see full changelog below after the release notes).
-
Multichannel Support: Last release had 92 MC aware objects, now it's 139! Over a 50% increase that include old and new objects (all the new ones have been coming with MC support). Virtually all oscillators and envelope generators now have MC support, plus some other random ones. Let me highlight the new [lace~]/[delace~] objects that are 'MC' tools that perform interleave/deinterleave in Multichannel connections. My bare minimum number of objects "to start with" would be at least a bit over half the number of signal objects. That was my target for 1.0! ELSE right now has 319 signal objects, so that'd be at least 160. I will definitely pass this milestone in the next update. I guess a good number of MC objects would be around 75% of the signal objects. I will aim for that as soon as I can. Some objects simply can't be MC at all, so 100% will never be the case, but maybe an ideal 90% eventually? We'll see... I am just proud and happy that ELSE is taking such a big jump on MC awareness in less than a couple years.
-
Envelope generators ([adsr~]/[asr~]/[envgen~]/[function~]) now have more curve options. For [adsr~]/[asr~] the default is now a new log curve that you can set the curve parameter (and was 'stolen' from SuperCollider). A new [smooth~] family of objects perform the same kind of curved smoothening for alternating inputs - [envgen~] and [function~] also have that but also '1-pole' filtering, 'sine' and 'hann' curves. You can now trigger [adsr~] and [asr~] with impulses.
-
The [play.file~] object now supports even more file formats besides MP3 and stuff. Hey, you can even stream the supported formats from weblinks! The [sfload] object (which loads files into arrays) also gained support for more formats and can download from weblinks as well! It also has a new threaded mode, so loading big files won't choke Pd. It now also outputs the file information, which is a way to tell you when loading finished in threaded mode. The [sample~], [player~], [gran.player~] and [pvoc.player~] objects are now also based on [sfload], so they support all these file formats!!! Now [sample~] and [tabplayer~] are integrated in a way that [tabplayer~] is always aware of the sample rate of the file loaded in [sample~] (so it reads in the "correct speed"). A new [sfinfo] object is able to extract looping regions and instrument metadata information from AIFF files (which is something I wanted for ages) - it should do more stuff in the future.
-
[knob] has become the ultimate featured bloated creep GUI I always feared and avoided. MAX is envy! but I'm happy with this structure and I want to replicate in other GUIs in the future (yeah, I got plans to offer alternatives to all iemguis). I wanna highlight a new 'param' symbol I added that allows you to remotely set a particular method in an object, so you don't to connect to a "method $1" message and you can even do this wirelessly with a send symbol. [knob] now also acts like a number box, where you can type in the value, which may also be displayed in different ways or the value can be sent elsewhere via another send symbol so you can temper with it using [makefilename] or [else/format]. I've been using this for the MERDA modules and it's really cool.
-
We finally have a [popmenu] GUI object! This was in my to do list forever and was crucial to improve the MERDA modules to set waveforms, instruments and whatnot.
-
Let's about MERDA, the "Modular Euroracks Dancing Along" subset of abstractions in ELSE. It was first released in the last update and it's been driving lots of the development in ELSE as you can see. I now added a MIDI Learn feature for all knobs that feels great and quite handy! There are many fixes and improvements in general and some new modules. I wanna highlight the new [sfont.m~] module, which loads "sound font" banks and you can just click on a [popmenu] to choose the instrument you want. The default bank has numerous (hundreds) options and also comes with PlugData. The sequencer module [seq8.m~] was rather worthless but it's now a whole new cool thingie. It allows you to set pitches with symbols and even has quarter tone resolution. I added a right outlet to send impulses to trigger envelopes and stuff (there's still more stuff of course, see full changelog below).
-
There are newly designed/renamed/recreated [resonbank~]/[resonbank2~] objects that are well suited for Modal Synthesis.
-
What actually drives my development is my Live Electronics tutorial, which got a fair upgrade with a new chapter on Modal Synthesis amongst other things, such as new subtractive synthesis examples and a revision of envelope generators with examples on AHDSR and DAHDSR - by the way, there are new gaterelease~/gatedelay~ objects for handling envelopes (and other processes).
-
I have to thank some people. Tim added 'zoom' to the [pic] object, as well as an image offset. Tim also implemented a new and better technique for bandlimited oscillators. Ben Wesh gave me a new [scope3d~] GUI object, pretty cool, that plots an oscilloscope in 3 dimensions, which is coded in LUA - and ELSE has been carrying a modified version of [pdlua] because it now depends on it for a couple of GUIs. Tim and Ben made many improvements to [pdlua] (as well as Albert Graef, of course).
-
For more new objects, let me also tell you about the simple and cool [float2imp~], that is based on [vline~] and can convert floats to impulses with sample accuracy (don't know why I didn't think of that earlier). A new [tanh~] object has Multichannel support. A bit earlier I made an update to Cyclone that actually "borrows" and includes this one from ELSE instead of its original one (which does not have Multichannel support). PlugData users will load the one from ELSE. This is another tiny step that sort of integrates ELSE and Cyclone, specially for PlugData users.
happy patching.
CHANGELOG:
LIBRARY:
Breaking changes:
- [adsr~]/[asr~]: now a gate off before reaching the sustain point does not start the release right away (this allows you to trigger it with impulses). There's a new mode just for immediate release. There's a new exponential setting for curve factors, the old 'log' mode is renamed to 'lag' as it's the same as used in the [lag~] object. For [adsr~], a bang now is not "retrigger", but an impulse at control rate, there's a new 'retrigger' message for control rate retriggering (and now it only retriggers if the gate is on). For [asr~] a bang now also works like an impulse.
- [sample~]: no more 'load' message, args to 'open' message changed, size is now only in 'ms'.
- [format]: outputs are now always symbols, before you could get float outputs. Also, we just have a simplified symbol output, no more lists or anythings. Hopefully I'll be able to get the 'list' output back, but it involved some bugs that I couldn't fix so I just removed it. You cannot use bangs and lists in secondary inlets no more (this is cylone/max crappy paradigm we don't want here). Bang method was actually removed as well.
- [pack2]: no more support for anythings, also no more support for lists in secondary inlets and output has a list selector (I wanna make this more Pd like and not a silly clone from MAX's [pak], cause fuck MAX).
- [merge]/[unmerge]/[group]: no more '-trim' flag (again, respecting pd's usual list paradigm), in [merge] now there's no more 'hot' argument and a bang now represents an empty list and inlets initialized with empty lists
- [mono]: 1st argument is now 'glide' in ms.
- [sfont~] now uses 'mma' for bank selection (this alters how CC messages set the bank number).
- [player~]/[play.file~]: 'open' message does not play files right away anymore.
- [tabplayer~]/[player~]: play message without args now play at the default settings (whole file at regular speed).
- [envgen~]: removed the 'maxsustain' parameter, use the new [gaterelease~] or [gaterelease] objects instead. Removed the rightmost inlet just to set envelopes, now a list input only sets the envelope and doesn't trigger it. The 'set' message is then removed.
- [envgen~]/[function~]: simplified and got rid of '-exp' flag and message, also deleted 'expl' and 'expi' messages. A new 'curve' and cimpler message sets exponential factors for all or individual segments, and includes more curve formats.
- [knob]: 'esc' key now deactivates the object. The 'ticks' message is renamed to 'steps' and there is a new 'ticks' message that toggles showing ticks on and off. The 'start' message has been renamed to 'arcstart'. The 'outline' message has been renamed to 'square' for better clarity. Design changed a bit to make it like it is in PlugData (they won), so we now fill the whole background color when in 'square mode' and the knob circle has an 85% proportion in this case inside the full 100% square size (so it grows bigger when not in 'square' mode). Now, by default, the GUI is in a new 'loadbang' mode (I don't think this will influence old patches). I'm afraid some old patches might behave really weird since I added a lot of new stuff. I changed the 'load' message behaviour to not update the object (this can arguably be considered a bug fix).
- [wavetable~], [bl.wavetable~] and [wt2d~]: 'set' message now sets frequencies because of the MC support in [wt~] and [wt2d~], while there's a new 'table' method to set the table name.
- [gbman~]/[cusp~] list method is now for MC, old list method is now renamed back to an old 'coeffs' method.
- [f2s~]/[float2sig~] default value is now 10 ms.
- [op] now behaves like [*~] where the smaller list wraps til reaching the size of the longer one.
- [list.seq] does not loop anymore by default.
- [impseq~] list input removed, use the new [float2imp~] object to convert floats to impulses.
- [resonant~] now has 'q' as the default.
- [resonant2~] has been removed.
- [decay2~] has also been removed ([asr~] much better).
- [vcf2~] has been renamed to [resonator2~].
- [resonbank~]/[resonbank2~] have basically been deleted and replaced by new objects with the same name... [resonator~] is based on a new [resonator~] object which is similar to [resonant~] and [resonbank2~] is now based on [resonator2~] (old [vcf2~] instead of [resonant2~] that got deleted). These are well suited objects for Modal Synthesis.
- [oscbank~] now uses a 'partial' list and not a frequency list. The freq input now defaults to '1' and this makes [oscbank2~] completely obsolete.
- [oscbank2~] has been deleted since it became completely obsolete.
- [sfload] load message changed the behaviour a bit.
Enhancements/fixes/other changes:
- [adsr~]: We have now a new mode for immediate release (see breaking changes above, I'm not repeating it). Fixed ADSR signal inputs (it was simply not really working, specially for linear). Fixed status output for MC signals. There's a new curve parameter that allows you to set the curvature.
- [asr~] I actually just made the new [adsr~] code into a new [asr~] code as a simplified version (as it was before)... so it's got the same impromevents/fixes.
- [play.file~]: added support for more file formats and even weblinks for online streaming!
- [sfload]: added an outlet to output information, added threaded mode, added support for more file formats and even weblinks for downloading.
- [sample~], [player~], [gran.player~] and [pvoc.player~] are now also based on [sfload], so they support more file formats!
- [sample~]: improved extension management with [file splitext].
- [sample~] and [tabplayer~] now are automatically integrated in a way that [tabplayer~] is always aware of the sample rate of the file loaded in [sample~], so it automatically adjusts the reading speed if it is different than the one Pd is running with.
- [numbox~]'s number display is not preceded by "~" anymore (that was just kinda stupid to have).
- [format]: fixed issues where empty symbols and symbols with escaped spaces didn't work. Added support '%a' and '%A' type. Added support for an escaped 'space' flag. Improved and added support for length modifiers. Improved syntax check which prevents a crash. Improved documentation.
- [knob]: added new 'param', 'var', 'savestate', 'read only', 'loadbang', "active", "reset" and 'ticks' methods. Added the possibility to type in number values and also modes on how to display these number values, plus new send symbols for 'activity', 'typing', 'tab' and 'enter'. New design more like plugdata. Changed some shortcuts to make it simpler. If you have the yet unreleased Pd 0.56-0 you can also use 'double clicking' in the same way that works in PlugData. Properties were also significantly improved (I'm finally starting to learn how to deal with this tcl/tk thingie). Yup, a lot of shit here...
- [autofade2~]/[autofade2.mc~]: fixed immediate jump up for 0 ramp up.
- [synth~]: fixed polyphony bug.
- [metronome~]: fixed bug with 'set' message.
- [midi2note]: fixed range (octaves 0-8).
- [pulsecount~]: fixed reset count to not output immediately, added bang to reset counter at control rate
- [click]: fixed regression bug where it stopped working.
- [else]: new 'dir' method to output ELSE's binary directory in a new rightmost outlet. The print information also includes the directory.
- [pic]: added zoom capability finally (thanks to tim schoen) and added offset message (also thanks to tim).
- [store]: added 'sort' functionality.
- [scales]: fixed octave number argument. Added functionality to allow octave number as part of the note symbol.
- [mono]: added 'glide' parameter, as in [mono~].
- [pluck~]: fixed list input.
- [rescale]/[rescale~]: added a "reverse log" mode.
- [limit]: added a new second ignore mode.
- [graph~]: added an external source input for plotting the graph and a 'clear' message.
- [canvas.setname]: added a new argument for "abstraction mode" and methods to set name, depth (and mode).
- [midi.learn]: added a new argument for "abstraction mode", fixed 'dirty' message sent to parent.
- [brickwall~]: fixed initialization.
- [list.seq]: added a loop mode and a 2nd outlet to send a bang when the sequence is done.
- [delete]: fixed index for positive numbers.
- [dust~]: added 'list', 'set' and '-mc' flag for managing the already existing Multichannel capabilities.
- Thanks to Tim we have many fixes and a whole new technique for band limited oscillators. Now [bl.saw~], [bl.saw2~], [bl.vsaw~], [bl.square~], [bl.tri~], [bl.imp~] and [bl.imp2~] have been redesigned to implement elliptic blep, which should provide better anti-aliasing.
- [parabolic~] now uses and internal wavetable for more efficiency.
- [resonant~]: added 'bw' resonance mode.
- [lowpass~]/[highpass~]: added 't60' resonance mode.
- [quantizer~]/[quantizer]: added a new mode, which combines floor (for negative) and ceil (for positive) values.
- [crusher~]: now uses the new [quantizer~] mode from above (arguably a breaking change).
- [envgen~]: fixed a bug (actually a misconception) where ramps started one sample earlier. Fixed 0-length lines. Added a possibility to set time in samples instead of ms. Maximum number of lines is now 1024. Added loop mode. Added many curve options (sin/hann/log curve/lag).
- [function~]: Added many curve options (sin/hann/log curve/lag).
- [The out~] family of abstractions now use [bitnormal~] so you won't blow your speakers beyond repair in edge cases.
- [trig.delay~]/[trig.delay2~]: fixed bug where impulse values different than '1' didn't work.
- Added MC support to: [trig.delay~], [trig.delay2~], [gatehold~], [vca.m~], [gain2~], [decay~], [asr~], [envgen~], [function~], [bl.osc~], [bl.saw~], [bl.saw2~], [bl.vsaw~], [bl.square~], [bl.tri~], [bl.imp~], [bl.imp2~], [imp2~], [tri~], [saw~], [saw2~], [vsaw~], [square~], [pulse~], [parabolic~], [gaussian~], [wavetable~], [wt2d~], [randpulse~], [randpulse2~], [stepnoise~], [rampnoise~] [pink~], [gbamn~], [cusp~], [gray~] and [white~].
- Also added MIDI input and soft sync to [imp2~], [tri~], [saw~], [saw2~], [vsaw~], [square~], [pulse~], [gaussian~] and [parabolic~].
- [wavetable~] and [wt2d~] gained args to set xfading.
- Updated pdlua to 0.12.23.
- M.E.R.D.A: Added MIDI-LEARN for all modules (this is only for the knobs). Replaced some number boxes that were attached to knobs by an internal number display mechanism (new feature from knob). Improved interface of [gendyn.m~]. Preset/symbol name fixes to [flanger.m~]. Now we have automatic MIDI mode detection for [plaits.m~] and [pluck.m~] when no signals are connected (still trying to get plaits right, huh? Yup! And bow MIDI input with monophony and trigger mode has been fixed in [plaits.m~]). Added MC support to [vca.m~]. Increased range of [drive.m~] down to 0.1. Changed some objects to include the new [popmenu] GUI. [vco.m~] now uses the new MC functionalities of oscillators and doesn't need to load abstractions into [clone], I hope it makes this more efficient and clean. The [seq8.m~] module was worthless and got a decent upgrade, it's practically a new module. Added new modules (see below). Note that MERDA is still at alpha development phase, much experimental. Expect changes as it evolves.
- 22 new objects: [float2imp~], [lace], [delace], [lace~], [delace~], [gatehold], [gatedelay],[gatedelay~], [gaterelease~], [gaterelease], [popmenu], [scope3d~], [tanh~], [resonator~], [sfinfo], [smooth], [smooth2], [smooth~], [smooth2~], [dbgain~], [level~] plus [crusher.m~], [sfont.m~] and [level.m~] MERDA Modules.
Objects count: total of 573 (319 signal objects [139 of which are MC aware] and 254 control objects)!
- 323 coded objects (210 signal objects / 113 control objects)
- 227 abstractions objects (87 signal objects / 140 control objects)
- 23 MERDA modular abstractions (22 audio / 1 control)
TUTORIAL:
- New examples and revisions to add the new objects, features and breaking changes in ELSE.
- Added the MERDA modules into the examples for reference.
- Revised section on envelopes.
- New subtractive synthesis examples.
- New chapter on Modal Synthesis.
- Total number of examples is now 554! (26 new ones)
record polyphonic notes into a table
The answers in this thread are all true... clone ... data structure design ....
@impression said:
So I think the core issue I’m running into is how to read out a list in a serial way
This is called list-drip. There are many [list-drip] objects in different libraries: Both, Vanilla abstractions and compiled ones.
And in list-help is "example3 list iterator". Changing [+ 1] to [+ 2] and [get $1 1( to [get $1 2( drips the list in pairs:
(btw where "store the remaining list" comment is wrong. It should be: read the list)
Symbols explicit
@gentleclockdivider When you need to turn a list into a message remember that the only difference between them is the list has a list selector so [list prepend set] -> [list trim] will do the same and save you from endlessly having to add and remove dollar arguments from your [set $1 $2 $3...( messages as your list length changes, and it also works with listbox since it also has the set method.
If you are dealing with lists, uses list objects even if you are trying to turn that list into a message, it will make life easier and often you find you don't even need the message, the list objects will handle it all. Despite being able to click on them messages are not actually UI objects, hence their not showing up in GOPs, they are for constructing those internal messages which lack selectors like all those methods for [list store] and why they produce an error if you click on one with a dollar argument in it and needing a list or symbol selector in them when you want to use them for a list or a symbol.
Symbols explicit
How can I actually see the routed list in a list box without using list store ?
If you look into the help file of the list box, you'll see that the list selector is always needed if the list starts with a symbol. So you need to convert whatever you wanna see to a list message, and the help file of [route] uses the [list] for that.
So, it should be obvious that you simply can't send a non list message to the list box. If you're asking how should it work without [list store], well, you can't, you need something. If you want an alternative to it, what is the problem with it? What else would you like and why? And if you expect somehow to send a non list message to list box, you simply can't and this is a very basic Pd thing, dealing with its data types. So use just use [list] or whatever...
As for the dollar sign thing, it's also another very basic Pd thing that concerns the management of selectors and data types, and it is treated throughout the documentation, one of which is the help file of [list].
So yeah, this is yet another request on my part to kindly insist yet once more, after many times, that you take your time to read the manual and help file of objects if you want to work with Pd. You've been using it for quite some time and you have too many questions that could be simply be answered if you took the time to read tutorials, the help files and the manual.
And simply don't expect Pd to be the same as MAX, they're different pieces of software (there's even a section in the manual that tells about their differences - it's section "2.11. Pd vs. MAX"). While you're at the manual, check "2.4.1. Message types (selectors) and numerical precision".
As for the help files, I told you to check the help file of all these involved objects, the list box, the [route] object, and the [list] object, which has a [pd about-lists] subpatch that should answer your question.
The help file of message boxes also talk about dollar expansion and has a section that explains all this in a subpatch called [pd dollar-variables].
The fist chapter of my Live Electronics Tutorial is "01-Pd.Quickstart" and gives you a good and quick overview, you should look into subsection "2.Syntax". This comes as part of PlugData, which you're using. I realized now that the 'control tutorial' does not have a good example about this, so I will add it. You should read that too anyway.
So yeah, I'm not really answering your question, but I'm telling you where you can find answers, and please understand my situation. I wrote a tutorial of my own, I revised and rewrote all the help files, I revised, wrote new sections and rewrote most of the Manual. I revised the tutorials, all in the hope that people would read them and find answers and not ask such basic questions over and over. And also so me or others wouldn't have to keep explaining the basics. Others can come in and teach you if they want to, but I'll just reinforce that you really should do that.
This is ok when someone just got here, is a newbie, and wants some guidance, like pointers to the documentation, but it's been a while you joined the community, and you're doing a lot of work, and you seem to resist and simply not do the basic homework. Personally, I feel this is abusing our desire to help others, but that's just me.
So please, just read the (blip) manual. And if you're still confused, if you haven't found what you need, if it's misleading somehow, I'd be more than glad to explain it to you and improve the documentation.
I'd love to hear from you things like "hey, I read this help file and I couldn't see something about xxxx", or, "I didn't find anything about message types in Pd, where can I read and check?". You know?
cheers
Ofelia, libglew issue [Linux]
Hi,
I wanted to try Ofelia, so in Pd 0.54.0 on Ubuntu 22.04 I installed Ofelia v4.0.0 (via "Find externals").
In "Preferences" I entered the correct paths.
When I open a patch that uses Ofelia, I get these errors:
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
ofelia d -k $0-main
... couldn't create
#A: no such object
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
ofelia d -c11 -k $0-setMatrix2
... couldn't create
array: no method for '__set'
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
ofelia d -k $0-getCopyArray
... couldn't create
array: no method for '__set'
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
ofelia d -c11 -k $0-setMatrix
... couldn't create
array: no method for '__set'
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
ofelia d -k $0-getArray
... couldn't create
array: no method for '__set'
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
ofelia d -k $0-conway
... couldn't create
array: no method for '__set'
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
ofelia d -k $0-lCells
... couldn't create
array: no method for '__set'
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
/home/a/Pd/externals/ofelia/ofelia.pd_linux:libGLEW.so.2.1: cannot open shared object file: No such file or directory
ofelia d -k $0-dCells
... couldn't create
array: no method for '__set'
It seems the problem is libglew, maybe it's a version issue.
On my computer, libglew is already installed (via Synaptic):
What can I do?
Do you have a direct link to a version of Ofelia that works on my system?
[Pd 0.54.0 on Ubuntu 22.04]
Thank you,
a.
save a created list with patch
@cfry said:
I understand that for this type of operation should use the text object (maybe it even accepts file names with blank spaces?). However text seems to require semi-colons as separators for a list.
When you add entries into [text] line by line, [text] adds the semicolons for you.
I guess that open panel 2 returns a list with return as separators?
Don't guess -- examine the data!
But one key here is that a list in Pd is not "space delimited." When you print a list to the console, or put a list into [text], then the text representation of the list uses spaces in between list entries but the spaces don't exist internally. So when you say "maybe it even accepts file names with blank spaces" -- a symbol may contain a blank space, yes, this is not a problem. When Pd writes a symbol out to print or [text], the textual version tells the difference between a space within a symbol and a space between entries in a list by putting a backslash before the space inside the symbol.
If you see the quick brown fox
in a text box, it's a list with 4 symbols.
If you see the\ quick\ brown\ fox
in a text box, it's one symbol containing the whole phrase.
Openpanel should give you one symbol per filename, including special characters, encoded as normal strings. When you put it into a text object, it should encode for storage (escaping special characters), and when you retrieve from the text object, it should decode so you get the original strings out.
This is why I asked which special characters you're having trouble with. It's supposed to be handled for you.
How could I set this up with text object?
Easiest way is: If you get a list from openpanel, just dump the list into one line of [text]. The text window itself would just have one big long line but it "should" work.
For a more readable text window, list-drip and push the symbols in one by one.
hjh
ofelia on raspberry pi?
Hi,
I am trying to get ofelia to run on a couple of rpi. Right now I am trying a rpi 3B+ running https://blokas.io/patchbox-os/
I run ofeila with the ofelia-fast-prototyping abs on my mac successfully.
Following install instructions here https://github.com/cuinjune/Ofelia
after running
sudo ./install_dependencies.sh
it ends like this:
detected Raspberry Pi
installing gstreamer omx
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
gstreamer1.0-omx is already the newest version (1.0.0.1-0+rpi12+jessiepmg).
The following package was automatically installed and is no longer required:
raspinfo
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Updating ofxOpenCV to use openCV4
sed: can't read /home/patch/Documents/Pd/externals/addons/ofxOpenCv/addon_config.mk: No such file or directory
sed: can't read /home/patch/Documents/Pd/externals/addons/ofxOpenCv/addon_config.mk: No such file or directory
When running the example patches in Pd I get this in PD console:
opened alsa MIDI client 130 in:1 out:1
JACK: cannot connect input ports system:midi_capture_1 -> pure_data:input_2
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia d $0-of
... couldn't create
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia d $0-of
... couldn't create
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia d $0-of
... couldn't create
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia d $0-of
... couldn't create
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia d $0-of
... couldn't create
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia f ;
ofBackground(20) ;
ofSetSmoothLighting(true) ;
ofSetSphereResolution(24) ;
local width , height = ofGetWidth() * 0.12 , ofGetHeight() * 0.12 ;
sphere = ofSpherePrimitive() ;
sphere:setRadius(width) ;
icoSphere = ofIcoSpherePrimitive() ;
icoSphere:setRadius(width) ;
plane = ofPlanePrimitive() ;
plane:set(width * 1.5 , height * 1.5) ;
cylinder = ofCylinderPrimitive() ;
cylinder:set(width * 0.7 , height * 2.2) ;
cone = ofConePrimitive() ;
cone:set(width * 0.75 , height * 2.2) ;
box = ofBoxPrimitive() ;
box:set(width * 1.25) ;
local screenWidth , screenHeight = ofGetWidth() , ofGetHeight() ;
plane:setPosition(screenWidth * 0.2 , screenHeight * 0.25 , 0) ;
box:setPosition(screenWidth * 0.5 , screenHeight * 0.25 , 0) ;
sphere:setPosition(screenWidth * 0.8 , screenHeight * 0.25 , 0) ;
icoSphere:setPosition(screenWidth * 0.2 , screenHeight * 0.75 , 0) ;
cylinder:setPosition(screenWidth * 0.5 , screenHeight * 0.75 , 0) ;
cone:setPosition(screenWidth * 0.8 , screenHeight * 0.75 , 0) ;
pointLight = ofLight() ;
pointLight:setPointLight() ;
pointLight:setDiffuseColor(ofFloatColor(0.85 , 0.85 , 0.55)) ;
pointLight:setSpecularColor(ofFloatColor(1 , 1 , 1)) ;
pointLight2 = ofLight() ;
pointLight2:setPointLight() ;
pointLight2:setDiffuseColor(ofFloatColor(238 / 255 , 57 / 255 , 135 / 255)) ;
pointLight2:setSpecularColor(ofFloatColor(0.8 , 0.8 , 0.9)) ;
pointLight3 = ofLight() ;
pointLight3:setPointLight() ;
pointLight3:setDiffuseColor(ofFloatColor(19 / 255 , 94 / 255 , 77 / 255)) ;
pointLight3:setSpecularColor(ofFloatColor(18 / 255 , 150 / 255 , 135 / 255)) ;
material = ofMaterial() ;
material:setShininess(120) ;
material:setSpecularColor(ofFloatColor(1 , 1 , 1)) ;
... couldn't create
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia f ;
pointLight = nil ;
pointLight2 = nil ;
pointLight3 = nil ;
collectgarbage() ;
... couldn't create
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia f ;
local width , height , time = ofGetWidth() , ofGetHeight() , ofGetElapsedTimef() ;
pointLight:setPosition((width * 0.5) + math.cos(time * 0.5) * (width * 0.3) , height / 2 , 500) ;
pointLight2:setPosition((width * 0.5) + math.cos(time * 0.15) * (width * 0.3) , height * 0.5 + math.sin(time * 0.7) * height , -300) ;
pointLight3:setPosition(math.cos(time * 1.5) * width * 0.5 , math.sin(time * 1.5) * width * 0.5 , math.cos(time * 0.2) * width) ;
... couldn't create
/home/patch/Documents/Pd/externals/ofelia/ofelia.l_arm: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory
ofelia f ;
local spinX = math.sin(ofGetElapsedTimef() * 0.35) ;
local spinY = math.cos(ofGetElapsedTimef() * 0.075) ;
ofEnableDepthTest() ;
ofEnableLighting() ;
pointLight:enable() ;
pointLight2:enable() ;
pointLight3:enable() ;
material:beginMaterial() ;
plane:rotateDeg(spinX , 1 , 0 , 0) ;
plane:rotateDeg(spinY , 0 , 1 , 0) ;
plane:draw() ;
box:rotateDeg(spinX , 1 , 0 , 0) ;
box:rotateDeg(spinY , 0 , 1 , 0) ;
box:draw() ;
sphere:rotateDeg(spinX , 1 , 0 , 0) ;
sphere:rotateDeg(spinY , 0 , 1 , 0) ;
sphere:draw() ;
icoSphere:rotateDeg(spinX , 1 , 0 , 0) ;
icoSphere:rotateDeg(spinY , 0 , 1 , 0) ;
icoSphere:draw() ;
cylinder:rotateDeg(spinX , 1 , 0 , 0) ;
cylinder:rotateDeg(spinY , 0 , 1 , 0) ;
cylinder:draw() ;
cone:rotateDeg(spinX , 1 , 0 , 0) ;
cone:rotateDeg(spinY , 0 , 1 , 0) ;
cone:draw() ;
material:endMaterial() ;
ofDisableLighting() ;
ofDisableDepthTest() ;
... couldn't create
Thankful for help!
Boids (flock simulator)
@60hz said:
It works for me, but you certainly need to refresh the [number 15( message AFTER create the [pd boid] subpatches creation.
Also, here is a better version using [clone] object that has been part of puredata and makes the design more convienient.
(Note that boids Gem examples need [poltocar] object fom cyclone to work well)
Hi, your patch works fine, the boids move correctly, but when I increase their number for example from 15 to 115, also doing the "refresh after..." as you said, the boids increase but stay still, they don't move.
Now, when I open your patch, I get these errors:
--------------------------------------------------------------------
:: Cyclone 0.6-1; Released june 8th 2022
:: License: BSD-3-Clause (aka Revised BSD License)
:: Copyright © 2003-2021 - Krzysztof Czaja, Hans-Christoph Steiner,
:: Fred Jan Kraan, Alexandre Porres, Derek Kwan, Matt Barber
:: and others.
:: -----------------------------------------------------------------
:: Cyclone 0.6-1 needs at least Pd 0.52-0
(you have 0.52-1, you're good!)
:: Loading the cyclone library did the following:
:: - A) Loaded the non alphanumeric objects, which are:
:: [!-], [!-~], [!/], [!/~], [!=~], [%~], [+=~], [<=~], [<~],
:: [==~], [>=~] and [>~]
:: - B) Added /home/a/Pd/externals/cyclone
:: to Pd's path so the other objects can be loaded too
:: but use [declare -path cyclone] to guarantee search priority
:: in the patch
--------------------------------------------------------------------
opened alsa MIDI client 130 in:1 out:1
declare: Gem: unknown declaration
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
canvas.top
... couldn't create
boids2d 2005-2006 a.sier / jasch 1995-2003 eric l. singer Jan 1 2023 13:49:25
These are my startup paths:
** [poltocar]** object appears to be in place:
a@a:~$ cd /home/a/Pd/externals/cyclone
a@a:~/Pd/externals/cyclone$ ls
[CUT]
poltocar.d_fat
poltocar~.d_fat
poltocar-help.pd
poltocar~-help.pd
poltocar.l_amd64
poltocar~.l_amd64
poltocar.l_arm
poltocar~.l_arm
poltocar.l_i386
poltocar~.l_i386
poltocar.m_amd64
poltocar~.m_amd64
poltocar.m_i386
poltocar~.m_i386
[CUT]
Something is probably missing or i am doing something wrong.
Bye,
a.
Gem not loading abstractions
------------------ done with main ----------------------
Connection from 'pd' to 'pd-gui' on 127.0.0.1:58808
Tk 8.6.8
Detected font: DejaVu Sans Mono
Using font: DejaVu Sans Mono bold
Loading plugin: /usr/lib/puredata/tcl/pd_deken.tcl
[deken] Platform detected: Linux-i686-32bit
Loading plugin: /usr/lib/puredata/tcl/pd_docsdir.tcl
[deken] Platform re-detected: Linux-i386-32bit
The Pd window filtered 11 lines
Pd documents directory: /root/Pd
The Pd window filtered 13 lines
menu_doc_open /root/Pd/externals/Gem/examples/06.particle 02.fountain.pd
gemreceive __gem_render $1
... couldn't create
... you might be able to track this down from the Find menu.
gemreceive __gem_render_osd $1
... couldn't create
gemlist
... couldn't create
GEMglColor4f 1 1 1 1
... couldn't create
GEMglMaterialfv GL_FRONT_AND_BACK GL_AMBIENT 0.2 0.2 0.2 1
... couldn't create
GEMglMaterialfv GL_FRONT_AND_BACK GL_DIFFUSE 0.8 0.8 0.8 1
... couldn't create
GEMglMaterialfv GL_FRONT_AND_BACK GL_EMISSION 0 0 0 1
... couldn't create
GEMglMaterialfv GL_FRONT_AND_BACK GL_SPECULAR 0 0 0 1
... couldn't create
GEMglMaterialfv GL_FRONT_AND_BACK GL_SHININESS 0
... couldn't create
GEMglPushMatrix
... couldn't create
GEMglPopMatrix
... couldn't create
GEMglFlush
... couldn't create
gemlist
... couldn't create
part_head
... couldn't create
part_color
... couldn't create
part_draw
... couldn't create
part_size 1
... couldn't create
part_gravity 0 -0.01 0
... couldn't create
part_velocity sphere 0 0.2 0 0.2
... couldn't create
part_source 25
... couldn't create
part_killold 45
... couldn't create
gemglutwindow
... couldn't create
GLdefine GL_LINEAR
... couldn't create
GLdefine GL_EXP
... couldn't create
GLdefine GL_EXP2
... couldn't create
GLdefine GL_COLOR_BUFFER_BIT
... couldn't create
GLdefine GL_DEPTH_BUFFER_BIT
... couldn't create
GLdefine GL_STENCIL_BUFFER_BIT
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMglMatrixMode GL_PROJECTION
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMglFrustum -1 1 -1 1 1 20
... couldn't create
GEMglViewport 0 0 500 500
... couldn't create
GEMglDisable GL_FOG
... couldn't create
GEMglEnable GL_FOG
... couldn't create
GEMglFogf
... couldn't create
GLdefine GL_FOG_DENSITY
... couldn't create
GEMglFogf
... couldn't create
GLdefine GL_FOG_MODE
... couldn't create
GEMglFogf
... couldn't create
GLdefine GL_FOG_START
... couldn't create
GEMglFogf
... couldn't create
GLdefine GL_FOG_END
... couldn't create
GEMglFogfv
... couldn't create
GLdefine GL_FOG_COLOR
... couldn't create
GEMglDisable GL_COLOR_MATERIAL
... couldn't create
GEMglDisable GL_AUTO_NORMAL
... couldn't create
GEMglDisable GL_NORMALIZE
... couldn't create
GEMglShadeModel GL_FLAT
... couldn't create
GEMglLightModeli
... couldn't create
GLdefine GL_LIGHT_MODEL_TWO_SIDE
... couldn't create
GLdefine GL_FALSE
... couldn't create
GEMglLightModeli
... couldn't create
GLdefine GL_LIGHT_MODEL_TWO_SIDE
... couldn't create
GLdefine GL_TRUE
... couldn't create
GEMglEnable GL_LIGHTING
... couldn't create
GEMglEnable GL_COLOR_MATERIAL
... couldn't create
GEMglEnable GL_AUTO_NORMAL
... couldn't create
GEMglEnable GL_NORMALIZE
... couldn't create
GEMglShadeModel GL_SMOOTH
... couldn't create
GEMglMaterialfv GL_FRONT_AND_BACK GL_AMBIENT 0.1 0.1 0.1 1
... couldn't create
GEMglMaterialfv GL_FRONT_AND_BACK GL_SPECULAR 1 1 1 1
... couldn't create
GEMglMaterialfv GL_FRONT_AND_BACK GL_SHININESS 100
... couldn't create
GEMglDisable GL_LIGHTING
... couldn't create
GEMglClearColor
... couldn't create
GEMglClear 17664
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglDisable GL_LIGHTING
... couldn't create
GEMglViewport 0 0 500 500
... couldn't create
GEMglMatrixMode GL_PROJECTION
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglFrustum -1 1 -1 1 1 20
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLineWidth 2
... couldn't create
GEMglColor3f 1 1 1
... couldn't create
GEMglBegin GL_LINES
... couldn't create
GEMglVertex2f 0 -6
... couldn't create
GEMglVertex2f 0 6
... couldn't create
GEMglEnd
... couldn't create
GEMglLineWidth 1
... couldn't create
GEMglMatrixMode GL_PROJECTION
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMglFrustum -1 1 -1 1 1 20
... couldn't create
GEMglViewport 0 0 250 500
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglMatrixMode GL_PROJECTION
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMglFrustum -1 1 -1 1 1 20
... couldn't create
GEMglViewport 0 0 250 500
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
gemlist
... couldn't create
gemlist
... couldn't create
GEMglGetFloatv GL_STEREO
... couldn't create
GEMglColorMask 1 1 1 1
... couldn't create
GEMglFrustum -1 1 -1 1 1 20
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglFrustum -1 1 -1 1 1 20
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglColorMask 1 1 1 1
... couldn't create
GEMglColorMask 1 1 1 1
... couldn't create
GEMglClear
... couldn't create
GEMglClear
... couldn't create
GEMglClear
... couldn't create
GEMglClear
... couldn't create
GLdefine GL_COLOR_BUFFER_BIT
... couldn't create
GLdefine GL_DEPTH_BUFFER_BIT
... couldn't create
GLdefine GL_STENCIL_BUFFER_BIT
... couldn't create
GLdefine GL_ACCUM_BUFFER_BIT
... couldn't create
gemlist
... couldn't create
gemlist
... couldn't create
GEMglColorMask 1 1 1 1
... couldn't create
GEMglFrustum -1 1 -1 1 1 20
... couldn't create
GEMglMatrixMode GL_PROJECTION
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglFrustum -1 1 -1 1 1 20
... couldn't create
GEMglMatrixMode GL_PROJECTION
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglLoadIdentity
... couldn't create
GEMgluLookAt 0 0 4 0 0 0 0 1 0
... couldn't create
GEMglDrawBuffer GL_BACK_LEFT
... couldn't create
GEMglClear
... couldn't create
GLdefine GL_COLOR_BUFFER_BIT
... couldn't create
GLdefine GL_DEPTH_BUFFER_BIT
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglDrawBuffer GL_BACK_RIGHT
... couldn't create
GEMglClear
... couldn't create
GLdefine GL_COLOR_BUFFER_BIT
... couldn't create
GLdefine GL_DEPTH_BUFFER_BIT
... couldn't create
GEMglMatrixMode GL_MODELVIEW
... couldn't create
GEMglClear
... couldn't create
GLdefine GL_DEPTH_BUFFER_BIT
... couldn't create
gemlist
... couldn't create
gemlist
... couldn't create
GEMglReportError
... couldn't create
gemlist
... couldn't create
fx3000~: 30 effect abstraction for use with guitar stompboxes effects racks, etc.
It still does not work.
I added my-guitar-rig/my-guitar-rig~
to a window and it generated a lot of errors
I am running version 0.52.1 of pd
Hopefully this is helpful. The errors I got are:
z~ 64
... couldn't create
limiter~ 98 1
... couldn't create
io pair already connected
delay(wavey)(v).pd 39 0 40 0 (snapshot~->gatom) connection failed
tof/pmenu 1 1 black white red
... couldn't create
tof/pmenu 1 1 black white red
... couldn't create
z~ 64
... couldn't create
limiter~ 98 1
... couldn't create
io pair already connected
delay(wavey)(v).pd 39 0 40 0 (snapshot~->gatom) connection failed
tof/pmenu 1 1 black white red
... couldn't create
tof/pmenu 1 1 black white red
... couldn't create
z~ 64
... couldn't create
limiter~ 98 1
... couldn't create
io pair already connected
delay(wavey)(v).pd 39 0 40 0 (snapshot~->gatom) connection failed
tof/pmenu 1 1 black white red
... couldn't create
tof/pmenu 1 1 black white red
... couldn't create
z~ 64
... couldn't create
limiter~ 98 1
... couldn't create
date
... couldn't create
time
... couldn't create
z~ 64
... couldn't create
limiter~ 98 1
... couldn't create
mknob 42 0 0 1 0 0 empty empty ratio:1.5:1 -2 -6 0 10 -262144 -1 -1 20175 1
... couldn't create
tof/pmenu 1 1 black white red
... couldn't create
pd-float: rounding to 2048 points
warning: fx3000-in-2: multiply defined
warning: fx3000-in-2: multiply defined
warning: fx3000-in-1: multiply defined
warning: fx3000-in-1: multiply defined
warning: fx3000-in-0: multiply defined
warning: fx3000-in-0: multiply defined
pd-float: rounding to 2048 points
pd-float: rounding to 2048 points
warning: fx3000-in-2: multiply defined
warning: fx3000-in-2: multiply defined
warning: fx3000-in-1: multiply defined
warning: fx3000-in-1: multiply defined
warning: fx3000-in-0: multiply defined
warning: fx3000-in-0: multiply defined
pd-float: rounding to 2048 points
pd-float: rounding to 2048 points
warning: fx3000-in-2: multiply defined
warning: fx3000-in-2: multiply defined
warning: fx3000-in-1: multiply defined
warning: fx3000-in-1: multiply defined
warning: fx3000-in-0: multiply defined
warning: fx3000-in-0: multiply defined
pd-float: rounding to 2048 points