Commit graph

40 commits

Author SHA1 Message Date
Brian Hrebec
01d193c9b3 Refactored for teensy 4.0, xEvi hardware
- Switched to platformio, ino -> cpp
- MPRLS for pressure sensor
- Added basic ICM support
- Removed widi, battery, other features not supported in xEvi
- Removed legacy options/processing
- Added LED strip support
- Added encoder support
- Reworked menu code to use encoders/be more flexible
2023-08-27 11:52:08 -05:00
John Stäck
f36129d4bb Make IntervalTimer stub so simulator works 2019-10-16 15:28:01 +02:00
John Stäck
fa3f8e8eba Make Simulator Work Again 2019-08-26 16:17:04 +02:00
John Stäck
11cdbc4ec3 Simulator: Print out full sysex message, with very clever line ending 2019-08-15 08:05:27 +02:00
John Stäck
e264b01dfd Use wiring.h with proper case, so building hopefully works on Linux 2019-08-07 17:36:41 +02:00
John Stäck
4dbca53871 Add functionality to use files as MIDI data to send to simulated device 2019-08-05 14:11:25 +02:00
John Stäck
3b405adebb Add example files for sysex commands 2019-08-05 14:10:41 +02:00
John Stäck
1e9b470619 Actually match teensy/arduino signatures 2019-08-04 11:20:17 +02:00
John Stäck
1cdface168 Handle receiving of sysex conig data 2019-08-04 10:51:48 +02:00
John Stäck
075905f7ea Take exception to exceptions to handle argparser errors and help 2019-07-29 17:23:38 +02:00
John Stäck
2741ff5a27 Config management mode, to send/receive config via usb midi sysex 2019-07-29 17:05:10 +02:00
John Stäck
db4e4ac2f7 Needs more whitespace 2019-07-28 14:50:31 +02:00
John Stäck
4966a7ea42 Incorporate Filters code into NuEVI repo for smoother setup. 2019-07-27 16:58:34 +02:00
John Stäck
3ae4147d7e Move all the LED things to a separate file, as mentioned in comments 2019-07-27 00:42:27 +02:00
John Stäck
671dfe9b2c Define constant for "dipswitch" positions 2019-07-25 08:47:58 +02:00
John Stäck
7b179d4343 Add settings for fast boot, bcas mode, 3rd trill, dac out 2019-07-25 08:47:58 +02:00
Mikael Degerfält
4f295a6b52 More correct display simulation
enable/disable works more like the real thing, however not entirely correct. When enabling the display, it takes the current content of the screen buffer instead of the data that has been send to the display controller.
2019-07-01 14:41:39 +02:00
John Stäck
34a3dd0613
Merge pull request #17 from Trasselfrisyr/numenu
Full Menu Refactoring
2019-06-25 13:06:02 +02:00
Mikael Degerfält
7505cd21c2
Merge pull request #16 from Trasselfrisyr/compilerthings
Clever compiler tricks
2019-06-24 18:38:27 +02:00
John Stäck
f5fc086177 Only write to file if value has actually changed. 2019-06-24 16:01:27 +02:00
John Stäck
b0ad504761 Fake some useful compiler flags 2019-06-24 15:39:36 +02:00
John Stäck
2c3df24fc1 Use default eeprom file if none is provided 2019-06-24 14:11:58 +02:00
John Stäck
829c08c031 EEPROM file storage, and argparsing that actually works 2019-06-24 11:56:57 +02:00
John Stäck
3b2f0fa4cf Add argument parsing for eeprom stuff 2019-06-23 20:44:10 +02:00
Mikael Degerfält
699546df8c Handle sub menus in a generic way and moved adjust menu logic to separate file
This is a big one where I can finally reap what I sown. Sub menu entries now provide two functions, one to get the text for the current value and one to apply changes aka save to EEPROM. With this I can replace so much code in the menu() function that handles input, but was _almost_ identical. The process of converting the old menus are not completed, and I can probably remove about 200 lines more code.

The question is still what to do with less general menus like the rotator and fast patch menu.

One problem with the current implementation is that it is RAM heavy. It seems the const MenuEntry structs are placed in ram, because there is a pointer to RAM that I assume is allocated during execution and therefore the address cannot be stored in ROM.

My plan has been to put all the configuration fields (that are stored in EEPROM) into a struct or an array. When that is implemented, I can instead store the offset into the array in the const struct, which should be available at compile time and therefore can reside completely in ROM.
2019-06-23 17:14:17 +02:00
Mikael Degerfält
8723bb8706 Merge branch 'master' into sim 2019-06-23 17:01:16 +02:00
John Stäck
2332f37eca Advanced unusage of parameters 2019-06-23 14:51:31 +02:00
John Stäck
3d38f50d98 Add deeper simulation of USB midi 2019-06-23 14:30:32 +02:00
Mikael Degerfält
315013eb2b Updated readme 2019-06-23 13:34:19 +02:00
Mikael Degerfält
3445c79f23 Press buttons 1-7 for valves and trills and left index input
Also moved bug workaround code to be in the same function for simpler removal at later stage.
2019-06-23 11:38:39 +02:00
Mikael Degerfält
0f8c0ff77e Don't spam digital write output 2019-06-22 23:10:26 +02:00
Mikael Degerfält
d9b18255e5 Initialize touch inputs to untouched 2019-06-22 23:10:03 +02:00
Mikael Degerfält
09a35aa1d9 Added flag to build for release, also set rpath for app bundle 2019-06-22 23:08:39 +02:00
Mikael Degerfält
d564e1b434
Fixed spelling 2019-06-21 18:59:21 +02:00
Mikael Degerfält
5596e0901d Added info on how to get the required submodules 2019-06-21 18:54:25 +02:00
Mikael Degerfält
f900be5306 More globals in UI + workaround for bug in firmware
A bug in the current NuEVI.ino does not write all default values to EEPROM on the first boot, unless menu + enter buttons are pressed. I added a workaround to the simulator that fakes that the buttons are pressed when calling the setup function.
2019-06-21 18:40:07 +02:00
Mikael Degerfält
9357d4b827 More inputs and outputs added in simulator
* Set default value for battery sensor input
 * Show EEPROM values as unsigned.
 * Simulate K1 to K7 inputs (valve and trills++)
2019-06-21 18:13:02 +02:00
Mikael Degerfält
0871b2582d Simulator now uses ImGui for stuff 2019-06-21 18:08:24 +02:00
Mikael Degerfält
1be998153a Fake input and bug fixes
* Press W in simulator to activate (pretty slow shit, do avoid unless compiling with optimisations)
 * Tiny improvement of the EEPROM simulation.
 * Fixed type typo for millis and micros
2019-06-21 18:07:47 +02:00
Mikael Degerfält
266b3334cb Simple simulation code
Builds a native program on MacOS that runs the NuEVI firmware compiled for x86_64.
Only input is arrow keys for menu buttons for now. Only output is console and display.

Copied some more library files into the simulation folder, and renamed the modified *.cpp files from the libraries to *_sim.cpp.
2019-06-13 20:51:45 +02:00