Git Product home page Git Product logo

firmware's Introduction

Electra One base firmware

Building

The following steps will compile ElectraOne base firmware with the Demo application compiled in:

  1. Download the ARM GNU Toolchain. You can get it at GNU Arm Embedded Toolchain Downloads.
  2. Install it or make symlinks so that the bin, lib, share, arm-none-eabi directories are located in the /usr/local/arm directory. If the location is not suitable, provide Makefile with alternative COMPILERPATH variable.
  3. Switch to the project root directory and run ./scripts/install-tools. On windows, you will most likely encounter compilation errors. I am working on it. Ignore it for now.
  4. Build the firmware with make all
  5. Make sure your ElectraOne is connected to the computer with a USB cable and run make upload.

If you got compilation errors when running ./scripts/install-tools, the make upload will fail. In that case you can upload the firmware image using the ElectraOneConsole app. You can find the firmware.img file in the build directory.

Building custom app

If you were able to compile and run the firmware with the default Demo app, you can compile a custom app by taking following steps. Minimal HelloWorld application will be used to demonstrate that.

  1. Download or clone the Demo applications from the GitHub.
  2. Place the demos directory next to the firmware directory.
  3. Switch to the firmware directory and create a symlink to the app, ln -s ../demos/helloworld
  4. Run make APPPATH=helloworld upload. This will build the firmware with the HelloWorld compiled in and the firmware will be uploaded to the ElectraOne controller.

firmware's People

Contributors

farcaller avatar thetechnobear avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

firmware's Issues

Touch Gestures

Since the Electra One has a touch screen, I was wondering if it would be possible to implement some touch gestures (as known from phones and tablets).
E.g.:

  • swipe left / right could be used to switch pages
  • swipe up could show the pages menu
  • swipe down could show the presets menu

Improve addressing elements for updates

Currently, the ID of an element needs to be known to update its' parameters. This is problematic since these IDs tend to be not stable, e.g. if the order of pages needs to be changed or elements get moved/copied in/between pages.

As an alternative elements could be addressed by their page, row and column.

Missing file or write issue on initial Make?

Install error on MacOS Big Sur 11.5.1

Dominic@Pooh-2 firmware % ./scripts/install-tools
Installing firmwareloader...clang: error: no such file or directory: 'CODE/firmware/tools/firmwareloader/CODE/firmware/tools/firmwareloader/build/firmwareloader'
make: *** [firmwareloader] Error 1
Installing hex2k66img...clang: error: no such file or directory: 'CODE/firmware/tools/hex2k66img/CODE/firmware/tools/hex2k66img/build/hex2k66img'
make: *** [hex2k66img] Error 1
Installing SendMIDI...  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   631  100   631    0     0   2513      0 --:--:-- --:--:-- --:--:--  2513
100  219k  100  219k    0     0   504k      0 --:--:-- --:--:-- --:--:--  504k
Dominic@Pooh-2 firmware % 

Sysex command to select a preset by name

Currently, the whole preset list needs to be retrieved from the device to find the index of a preset to select.
This requires currently 2 asynchroneous messages which are a bit tricky to implement and includes the transmission of a large sysex message.

Therefore, a sysex command which contains the name of a preset as only parameter would be helpful. This command would look up the preset by the given name and activate it.

Buttons become inactive on page change

When a page change is issued via sysex sometimes the hardware buttons become inactive or the device freezes completely.

Note: You can make them work again if you long press a fader and then close the fader overlay again.

Setting of value labels

Currently, a formatter (LUA function) can be set to format a value on the device.
For DAW support in contrast the formatter is normally provided by the DAW and a script developer already gets the finalized text. Therefore, it wouldbe helpful to have either a setter for the label in LUA or (preferred) extend the already existing element update sysex command with a value label.

Support for VU meters

VU meters are pretty helpful to see playback activity of the channels in a DAW.

This could be done as a variant of a group header. Here is a rough sketch:

grafik

Send notification events for knob touch / release

The controller should send out a notification sysex message when a user touches or releases one of the knobs.
This is escpecially necessary to record automation in touch automation mode in a DAW.

Relative knobs

Allow knobs to send relative values. Since the encoding of relative values is already available in the editor, a switch to choose between absolute/relative should be sufficient.
If the knobs can detect speed it would be nice if this could be encoded too.

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.