I voted “use 'em!” I may be somewhat biased. Here’s my take:
It will save you from re-inventing the wheel if a bespoke unit has the functionality you need
My observation is that middle layer units can be frequently lighter on CPU for the identical functionality, so even if you can re-invent that particular wheel in the UI layer, it might be more efficient to use the bespoke unit
Another step for the end user to install the custom unit, if they don’t already have the bespoke lib, or don’t have the latest version
You already have some risk that the next firmware update will break your CU. This adds one more opportunity to the pipeline, if the bespoke unit(s) are updated with some breaking change. Personally I’m trying to be cognizant of that, but sometimes a breaking change is the only way forward.
I think the pros outweigh the cons, and that people scouring the forums for CUs probably won’t mind getting whatever dependencies there are - they are pretty easy installs, and we are a pretty techie bunch here.
I voted “use em” as well of course. Maybe there is some template that could be agreed upon that is updated in the first post of a custom unit thread listing dependencies etc. I like Joe’s naming/versioning scheme and that is definitely a step in the right direction.
The issue is that the average user buys the 301 downloads the Custom Unit and gets errors.
Of course as a creator I am more than happy to not reinvent the wheel and take advantage of such well done tools, but i do also think about the final user which many times just wants to plug and play.
The vote should be: should they be part of the main firmware or not.
I voted „I don’t understand“ because I don’t know the implications or the background of the question but have the feeling that there is one and have to guess now.
Some seem to know, others also guessed and made some good points coming from there. Following @Joe in his ‚utilitarian‘ reading, I think his points are valid under the implication that the official ER-301 hard- and firmware is the fixpoint and custom/bespoke units are something developed for own use and then shared between interested users on an internet forum. If I got it right, @Zeta extends this conclusion by taking into consideration what kind of end user you might have in mind here and if all this should affect the fixpoint of the firmware at some point.
Being more on the user side of the spectrum I can contribute with my own experiences and expectations. As an end or final user I only, but as some might have noticed, also wholeheartedly, expect things to function ‚plug and play‘ when I pay for them and then only as far as they are advertised.
If I take advantage from others shared experience/patches/code I am happy with working things out, asking, sharing my user experience if it’s wanted and installing everything that is needed on my device to make things work or even grab the soldering iron. I would never expect units that are shared here to be just plug and play but of course it would be great to have all crucial information bundled as sharing makes more sense that way in general (otherwise it is more showing than sharing, wich is okay and interesting too).
To me those are different spheres and I, again wholeheartedly, suggest to keep them separated. As soon as custom/bespoke units become either part of the main firmware or the official documentation (which is not the same as being shared by someone on the associated forum), I expect them to work without having to go through dependency lists or adapt the code myself. I remember the frustration I felt when I got my first monome grid and learned that most of the applications provided for download in the official documentation just did not work anymore on current OS and max versions because they were just shared achievements by single users, who can not be held responsible to maintain their work over changing OS environments of course. And I would not want to see @odevices being confronted with disgruntled customers without need or the endless work of keeping the firmware compatible with others custom/bespoke units.
So I think I would rather answer „it depends“ instead of „“I don’t know“.
tl;dr: Do what you want, how it is the most fun, easy to achieve or best working. If sharing something, providing the needed information would be nice. If monetising your work, take the responsibilty of making very clear what you are selling and under which circumstances it will work.
Shrugs, I have never used a computer yet that doesn’t have dependency deprecation issues, software failing, companies folding, etc… it’s been this way since day 1 and will probably continue to be like this until the end of time.
I take the point though and agree that this should be minimised. I think the excellent work @mopoco (and others?) is doing on the wiki will go a long way to resolving these issues.
Personally, I will take responsibility fo my own units. I would expect anyone putting custom units out there to do the same, you know it’s the decent right thing to do. But at the same time, if someone for whatever reason decided that the ER-301 wasn’t for them any more, they could hardly be expected to keep up with their custom unit code.
All this should settle down when the firmware stabilises, then a custom unit will probably always work nd the problem largely disappears.
I think you might be underestimating your target audience a bit. A lot of the people who are coming to the forums probably already have the dependency installed. For those that don’t, it’s a good opportunity for them to discover a bespoke library, if they missed it.
If they have trouble installing, all they need do is ask. There are quite a few here across multiple time zones willing to help them get things sorted. It’s a good community.
In the end it’s up to you, though, whether to use only builtins in your CU or not. Others have built CUs with bespoke dependencies and I haven’t seen it cause much problem.
Personally, I’d be fine with this for Accents. Everything in it was built “standing on the shoulders of giants” (Brian) anyway. There’s an obvious upside.
But there are also a few less than obvious implications and pitfalls lying just under the surface. @leverkusen has pointed out a few. There are probably a few more. We could talk about them. But it’s probably only worth doing if Brian indicates any interest in doing this at all. Otherwise, they are moot points.
Perhaps people on both sides of the fence can be happy with a suggestion that I think @mopoco made here:
which is to have a user-curated set of user-created units (along with their dependencies) available as a single download. This way:
Unit’s in this set can be considered “commonly available” just like the builtin units and thus depending on them in your own units should be reasonable.
The user ultimately still has the final choice of what to install.
Of course, this requires that I introduce some kind of package install/removal mechanism which I plan on doing anyways. Hmm…then again depending on how sophisticated the package system becomes, this might all become moot.
my opinion is: if you come to know about custom units or a specific custom unit then you are already reading these forums.
if we standardize the way in which we present our CU on the forums (which i think is already happening) stating and linking dependencies then it’s all very easy.
i don’t know if there is already a wiki entry about how to install custom units, if there isn’t maybe that’s a thing to do (with a section on installing middle layer LIBS), and then we can start to always put a link to that wiki entry when we release custom units on the forum.
I was hoping a thread like this might start after my (positive) experience of installing and
using @hyena 's fab 1 bit drum pulse percussion unit.
Due to life getting in the way of time for the ER301 (& synths in general) I haven’t spent massive amounts of time using the ER301. But even so I grasped that some custom units need other things installed to work - which is why I first off asked that question when I couldn’t get it to work (I just didn’t get the right answer… which was fine). If I twigged as a fairly casual user I’d think most people would.
However, I think it would be an idea that it was courtesy (an unwritten rule) to always provide what @odevices added to the @hyena original post:
That way you can see what you need. And a link to it is useful too.
Also I’ve never expected peoples custom units to work with every new OS update. It’s nice when they do obvs…
The 301 is a highly regarded module. It’s not so ‘plug and play’ like conventional wiggle modules . It’s definately not for everyone, more a pro tool… and for that reason I believe end users, amateurs, like myself, will embrace the complex initial understanding of good house keeping. But around the forum you don’t really see to many complete knobs attempting to master this device. Mostly I would think your dealing with smart operators
That might be atm, but it does not have to be that way necessarely. And it might hold back some new folks from joining in.
Some users might just want to load up patches like Ultra Violet and wiggle away.
Reaktor is a good example for this. I have many colleagues that use mine or other instruments to do fantastic work but without necessarely knowing how open them up and rewire them or how to make their own.
My point being… there are luthiers that are also musinans and there are musicians that don’t want to know how to make a violin, they just want to play it
Nice analogy and good points, but I don’t know any violin players who don’t know how to maintain their bow - although some probably exist. As a guitarist, I learned how to restring my guitar, as a synth player I learned how to tune oscillators and update firmware, etc… I see this as that part of musicianship! I don’t necessarily want to do these things, but realise I must do them in order to be able to just play these instruments.