odevices / er-301 Goto Github PK
View Code? Open in Web Editor NEWFirmware and SDK for the ER-301
Home Page: https://www.orthogonaldevices.com/er-301
License: MIT License
Firmware and SDK for the ER-301
Home Page: https://www.orthogonaldevices.com/er-301
License: MIT License
Can you add a license file or license section to the README?
Congratulations on the release and a big high five for open sourcing!
Report is here: https://forum.orthogonaldevices.com/t/v0-6-x-release-candidate-packages-and-mods/5246/307?u=odevices
I haven't reproduced yet but I suspect that a race condition in Head::setSample is the culprit.
Removed old style category entries in toc.lua:
{category="Synthesizers"},
{title="Amie",moduleName="Amie",keywords="oscillator"}
Switch to new inline style:
{title="Amie",moduleName="Amie",keywords="oscillator",category="Synthesizers"}
All units following new style appear in a single category at the bottom of the list, with the name of the category being the package name (e.g. Accents).
The problem seems to have been introduced in v0.6.01.
This could be confusing in pre-populated filenames and similar.
as a feature request/option:
scrolling on a touchpad feels normal when adjusting a parameter, but feels inverted when navigating a chain or naming a file (ie. scroll up moves the cursor towards end of chain).
This feels normal when using the hardware device but confusing when using a mouse/touchpad (not unlike so-called "natural scrolling" ^^ ).
An option (even at compile time) would be great.
https://forum.orthogonaldevices.com/t/v0-6-x-release-candidate-packages-and-mods/5246/210
Reproduced with https://freesound.org/people/meyweg/sounds/569604/
Corrupted file seems to be entirely replaced, possibly with the slices file (went from 15MB down to 139B):
> xxd ~/.od/front/ER-301/569604__meyweg__vocal-chords-morphagene-reel.wav
00000000: badc cdab 0700 0000 536c 6963 6573 0000 ........Slices..
00000010: 0000 0000 0000 0007 0000 0053 6c03 0000 ...........Sl...
00000020: 0000 0000 0000 0000 0080 3f5b 1107 0000 ..........?[....
00000030: 0000 0000 0000 0000 0080 3f16 ce0a 0000 ..........?.....
00000040: 0000 0000 0000 0000 0080 3fb9 860e 0000 ..........?.....
00000050: 0000 0000 0000 0000 0080 3f57 4a12 0000 ..........?WJ...
00000060: 0000 0000 0000 0000 0080 3f0b 0416 0000 ..........?.....
00000070: 0000 0000 0000 0000 0080 3f60 bd19 0000 ..........?`....
00000080: 0000 0000 0000 0000 0080 3f ..........?
Failure trace:
stack traceback:
[C]: in for iterator 'for iterator'
...rc/er-301-custom-units/er-301/xroot/Sample/Pool/init.lua:573: in function 'Sample.Pool.clear'
...01-custom-units/er-301/xroot/Persist/QuickSavePreset.lua:92: in function 'Persist.QuickSavePreset.apply'
...et/src/er-301-custom-units/er-301/xroot/Persist/init.lua:733: in local 'task'
...et/src/er-301-custom-units/er-301/xroot/Persist/init.lua:120: in upvalue 'confirmFirmwareVersionAndExecute'
...et/src/er-301-custom-units/er-301/xroot/Persist/init.lua:740: in function 'Persist.quickLoad'
.../er-301-custom-units/er-301/xroot/Persist/QuickSaver.lua:304: in function 'Persist.QuickSaver.load'
(...tail calls...)
.../er-301-custom-units/er-301/xroot/Persist/QuickSaver.lua:250: in local 'handler'
...set/src/er-301-custom-units/er-301/xroot/Base/Widget.lua:164: in function 'Persist.QuickSaver.sendUpHelper'
...set/src/er-301-custom-units/er-301/xroot/Base/Widget.lua:151: in function 'Persist.QuickSaver.sendUp'
...et/src/er-301-custom-units/er-301/xroot/Base/Context.lua:226: in function 'Base.Context.notify'
...set/src/er-301-custom-units/er-301/xroot/Application.lua:168: in function 'Application.notify'
...set/src/er-301-custom-units/er-301/xroot/Application.lua:320: in function 'Application.defaultDispatcher'
...set/src/er-301-custom-units/er-301/xroot/Application.lua:495: in function 'Application.loop'
...iset/src/er-301-custom-units/er-301/xroot/boot/start.lua:54: in function <...iset/src/er-301-custom-units/er-301/xroot/boot/start.lua:46>
[C]: in function 'xpcall'
...iset/src/er-301-custom-units/er-301/xroot/boot/start.lua:65: in main chunk
[C]: in function 'dofile'
[string "dofile('/Users/tom.fiset/src/er-301-custom-un..."]:1: in main chunk
Including core. Just a couple of mixer and test osc units are present. If you mount the front SD after booting, the libs will appear. I think the expected behavior is that you can boot without the front SD mounted and have all installed packages present.
This is hard to fix while maintaining compatibility with older firmware (that might be running the installation script). The is mainly because ZipArchiveReader class in older firmware does not expose the getFileCount() and getFilename() methods.
Reproduced in firmware 0.6.13.
Steps:
https://forum.orthogonaldevices.com/t/developing-for-the-er-301/5248/230?u=odevices
Expression ties that use the lua interpreter (i.e. the expression is a compile lua function) are not working as expected.
The current mapping is fine when navigating around the GUI but when wiggling parameters it is too coarse.
I'd like to add two new supported fonts to the base firmware,
Using the output from ttf2c.js this is now just a problem of designing them and adding them in.
@odevices would this be an ok addition? I'll add rendered pictures of the fonts in my PR when I create it.
Sample chains will be loaded anew regardless of whether the exact same sample chain is already in memory or not.
issue : i can zoom in with "equals" key, but i can't zoom out with "minus" key.
I'm using a french keyboard layout. I replaced SDLK_MINUS with SDLK_6 to get it to work.
Reported on the forum here:
https://forum.orthogonaldevices.com/t/card-player-cant-trigger-after-chain-save/5970?u=odevices
I think the pin set itself is saved/recalled correctly with a .chain preset, but the pins themselves seem to not be. The pin sets are empty when loading the chain back up.
From the forum :
It just seems to attenuate the entire signal when less than ~10 kHz or amplify when above ~10 kHz. It also seems to behave much worse on a stereo track where whatever you put in just looks awful on the output as if some weird DC offset was present which gets worse and worse the more you lower the cutoff towards 0 Hz.
For example, if the ER-301 is powered down while writing to rear:/settings.lua
then boot will fail when it tries to read the corrupted settings file.
[214 13.0401s lua] INFO Attempting to require teletype...
[215 13.0402s lua] INFO teletype returned: Package.Library(teletype)
[216 13.0519s lua] INFO Package(teletype-0.7.0-dev.7): Failed to instantiate.
[217 13.0519s lua] INFO Traceback:/home/clarkson/projects/er-301/xroot/Package/init.lua:183: attempt to call a table value (local 'M')
stack traceback:
/home/clarkson/projects/er-301/xroot/Package/init.lua:183: in function </home/clarkson/projects/er-301/xroot/Package/init.lua:178>
[C]: in function 'xpcall'
/home/clarkson/projects/er-301/xroot/Package/init.lua:187: in function 'Package.getLibrary'
/home/clarkson/projects/er-301/xroot/Package/init.lua:158: in function 'Package.libraryCall'
/home/clarkson/projects/er-301/xroot/Package/Interface.lua:141: in method 'onSelectionChanged'
/home/clarkson/projects/er-301/xroot/ListWindow.lua:168: in function 'LogViewer.setSelection'
/home/clarkson/projects/er-301/xroot/Package/Interface.lua:126: in method 'refresh'
/home/clarkson/projects/er-301/xroot/Package/Interface.lua:179: in local 'handler'
/home/clarkson/projects/er-301/xroot/Base/Widget.lua:190: in function 'Preamp.Interface.broadcastDownHelper'
/home/clarkson/projects/er-301/xroot/Base/Widget.lua:181: in function 'Preamp.Interface.broadcastDown'
... (skipping 4 levels)
/home/clarkson/projects/er-301/xroot/Base/Widget.lua:164: in function 'Preamp.Interface.sendUpHelper'
/home/clarkson/projects/er-301/xroot/Base/Widget.lua:151: in function 'Preamp.Interface.sendUp'
/home/clarkson/projects/er-301/xroot/Base/Context.lua:226: in function 'Base.Context.notify'
/home/clarkson/projects/er-301/xroot/Application.lua:168: in function 'Application.notify'
/home/clarkson/projects/er-301/xroot/Application.lua:312: in function 'Application.defaultDispatcher'
/home/clarkson/projects/er-301/xroot/Application.lua:495: in function 'Application.loop'
/home/clarkson/projects/er-301/xroot/boot/start.lua:54: in function </home/clarkson/projects/er-301/xroot/boot/start.lua:46>
[C]: in function 'xpcall'
/home/clarkson/projects/er-301/xroot/boot/start.lua:65: in main chunk
[C]: in function 'dofile'
[string "dofile('/home/clarkson/projects/er-301/xroot/..."]:1: in main chunk
I have Homebrew installed on my mac, running Catalina 10.15.7 and when trying to install the dependencies I get the following error, I have tried searching for the error, but am unable to locate any troubleshooting tips. Is there an issue with the distribution or is it just me?
$ brew install gcc sdl2 sdl2_ttf fftw swig python3 zip fonts-freefont-ttf
Updating Homebrew...
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 6 formulae.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
Error: No available formula or cask with the name "fonts-freefont-ttf".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching taps on GitHub...
Error: No formulae found in taps.
M$ make emu
make: *** No rule to make target `emu'. Stop.
When trying to compile (after error) I get:
$ make emu
make: *** No rule to make target `emu'. Stop.
Bug reported in v0.6.02 on the forum:
...any unit that uses a buffer (Manual Grains, Single Cycle, Variable Player), after switching the buffer to a different sample 1-3 times will render the unit silent. Sometimes deleting and inserting a replacement unit will fix it, sometimes I need to clear the whole chain...
The behavior ENTER changes when in multi-selection mode. It would be nice to have a more consistent mapping regardless of the mode.
Forum post is here.
Units will respond to control messages. For example:
There will also be a mechanism (possibly specialized units?) to trigger control messages.
https://forum.orthogonaldevices.com/t/pedal-looper-overdub-clicks/5875?u=odevices
Most likely a dependency is not encoded properly in the makefiles that gets exposed when using parallel building.
From forum:
On 0.6.06 pressing Cancel while in Select from Pool causes the ER-301 to freeze. using Up instead works fine. I have confirmed this on Variable Speed Player, Manual Grains, and Grain Stretch. Not sure if this exists on other firmware versions.
Requested here:
https://forum.orthogonaldevices.com/t/v0-7-x-progress-and-feedback/6139/27?u=odevices
@tmfset suggested to do the calculation in the UI thread.
Specifically, we should handle the range calculations (currently done by MinMax and connected permanently) like we do for loudness (i.e. LoudnessProbe and connect/disconnect on notifyVisible/Hidden).
https://forum.orthogonaldevices.com/t/v0-6-x-release-candidate-packages-and-mods/5246/328?u=odevices
The graphic makes it clear that the displayed signal should be before gain and bias.
Crash confirmed but only if in System Settings you have the following configuration:
File Browser:
The user should also be notified when saving unit or chain presets.
Suspect it is counting category entries in toc.lua as units. I currently have 6 units and 5 categories in my toc.lua. Package manager is displaying 11 units.
The current strategy of using app.cpp.swig, core, and teletype to populate the exported symbol table is no where near enough.
Probability seems to depend heavily on the executing environment. Hints at a race condition.
Reproduced in 0.6.13.
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.