Commit graph

57 commits

Author SHA1 Message Date
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
6f976ea14d Use proper 3rd trill value for readTrills() 2019-07-27 00:02:25 +02:00
John Stäck
c8e96343d0 Move EEPROM read/write functions to settings 2019-07-25 11:07:41 +02:00
John Stäck
def0dcacd0 Remove global var for wireless power, add wl channel menu 2019-07-25 08:48:28 +02:00
John Stäck
33bfc9ea08 Use settings flag for DAC output mode (remove CVSCALEBOARD define) 2019-07-25 08:48:28 +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
John Stäck
66b782da16 Menu option to set midibeam power level 2019-07-20 10:38:23 +02:00
Johan Berglund
ed7db007eb Removed SR and SR+ from CC list 2019-07-18 14:07:52 +02:00
Johan Berglund
597991c968 Added possibility to use bite sensor for vibrato. 2019-07-18 13:58:28 +02:00
Johan Berglund
8159a4ec16
Merge pull request #27 from blind/subblink
Flush screen buffer when sub cursor is black
2019-07-17 12:23:12 +02:00
Mikael Degerfält
faff2dcfe9 Flush screen buffer when sub cursor is black
Fixes issue #25
2019-07-17 12:19:53 +02:00
Johan Berglund
1cc50cff63 Added secondary breath CC setting (free 1-127) with a rise multiplier to make this CC rise faster than primary CC, for example to get a fast rising VCA control together with a less steep VCF slope. Changed portamento sensor name to BITE. Put SNS dots for MPR121 and Teensy touch keys on separate rows to avoid blanking when redrawn. Note: Update resets to factory settings. 2019-07-15 13:46:34 +02:00
Johan Berglund
1d34681c40 EXTRAS menu page added, with items LEGACY PB, LEGACY BR, GATE HOLD and SPECIAL KEY to enable/disable these special functions. 2019-07-15 07:51:44 +02:00
Mikael Degerfält
73e6db7686 Only handle scrolling if there are items to scroll 2019-06-27 16:00:05 +02:00
Mikael Degerfält
0e32077042 Support scrolling in menus
Menus can now have more than 6 entries. There is now an almost empty ABOUT entry in the main menu.
2019-06-27 12:57:49 +02:00
John Stäck
4755b15cd7
Merge pull request #19 from Trasselfrisyr/curves
Curves!
2019-06-27 10:13:45 +02:00
Mikael Degerfält
c2a15441a4 Fixed regression bug for patch select
After the menu refactoring, switching patch with up/down buttons when screen was off didn't work correctly. Now it should work like before i.e. switch patch on first press of button and not requiring a second press.
2019-06-26 18:04:06 +02:00
Mikael Degerfält
faf4f528b3 Custom draw function for curve to show the form and not just name
Draw the curve as well as the name of curve. Could be optimised a bit by not evaluating the curve every pixel, but something like every third pixel. Could also draw dots instead of lines if we need extra speed.
2019-06-26 17:52:43 +02:00
Mikael Degerfält
b061084f1f Fixed som redraw issues 2019-06-24 17:55:37 +02:00
Mikael Degerfält
91b2a69d21 Fixed text alignment for sub values with units 2019-06-24 00:17:27 +02:00
Mikael Degerfält
9561556302 No need to set text color all the time
Since the cursor blinking is handled a bit differently now, there is no need to set text color all the time since we know it should always be white. But just to be certain, lets set it to WHITE first thing in the updatePage function.
Also moved the code from plotMIDI into a custom render function for midi sub menu.
2019-06-23 21:28:35 +02:00
Mikael Degerfält
7a2b70c38d Moved code from a function into where it was called
and some minor cleanup
2019-06-23 21:02:08 +02:00
Mikael Degerfält
5b59b4cd0f Final push to unify all menu states
All states are now handled by the new menu system, although some are flagged to have a custom handler that does everything by itself.

I replaced most reference parameters to pointers to be able to typecast in a nicer way.

Key input is not passed as a parameter to the menu functions instead of having global variables they all access. I think I broke one thing by doing this, since there is no way to propagate key input changes to the next frame.
2019-06-23 17:14:18 +02:00
Mikael Degerfält
9a595c0ffc WIP on making menues even more generic in handling 2019-06-23 17:14:18 +02:00
Mikael Degerfält
be0d08d8d6 Renamed some stuff for clarity 2019-06-23 17:14:18 +02:00
Mikael Degerfält
f2e2b7d33f Tiny adjust menu redraw bug fix
Had forgotten to redraw adjust menu after normal update, it was only redrawn when the sensor pixels were to be updated.
As a bonus I cleaned up some code.
2019-06-23 17:14:18 +02:00
Mikael Degerfält
bddbffd51d Moved over the rotation menu to new system
Had to change how the values where stored in RAM from singed to unsigned to be able to use the generic menu features. Also had to add the MenuEntrySub as a parameter to the menu callback functions to be able fo display and store the correct values.

Did some major cleanup now that the special case of rotator menu is gone together with all uses of the old version of the sub menu struct.
2019-06-23 17:14:18 +02:00
Mikael Degerfält
6c721e8b65 Removed code duplication
Also fixed bug were I reset the active sub menu when then sleep timer kicks in.
2019-06-23 17:14:18 +02:00
Mikael Degerfält
65aa0f4dab Converted more of the sub menus to the new sub definitions
Found out that it’s the lambda functions used for pointer that forces the structs to be in ram instead or rom.
2019-06-23 17:14:18 +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
ca5b2b9484 Removed unnecessary display.display() call 2019-06-23 17:14:17 +02:00
Mikael Degerfält
3df78f6598 Same as before 2019-06-23 17:14:17 +02:00
Mikael Degerfält
3de5dd2b37 Even more places to use helper functions 2019-06-23 17:14:17 +02:00
Mikael Degerfält
aec3ef9fc7 Use helper function to plot velocity 2019-06-23 17:14:17 +02:00
Mikael Degerfält
b156a5935d Moved status led blink to function 2019-06-23 17:14:17 +02:00
Mikael Degerfält
f2eabd7d37 Minor cleanups 2019-06-23 17:14:17 +02:00
Mikael Degerfält
1ac1b67732 Small bug fix 2019-06-23 17:14:17 +02:00
Mikael Degerfält
6e0786bccb Missed a few spots for sub menu redraw 2019-06-23 17:14:17 +02:00
Mikael Degerfält
8087f93677 Use helper function for midi channel as well 2019-06-23 17:14:17 +02:00
Mikael Degerfält
8772e28907 Pass button state instead of accessing global variable 2019-06-23 17:14:17 +02:00
Mikael Degerfält
2ed201ed04 Helper function to draw centered number in sub box 2019-06-23 17:14:17 +02:00
Mikael Degerfält
0c7bb7cc13 Pass *currentPage to functions instead of the original page data
This way it will be easier to break out even more functionality into more general functions.
2019-06-23 17:14:17 +02:00
Mikael Degerfält
5aafab684e Unified sub menu redraw 2019-06-23 17:14:17 +02:00
Mikael Degerfält
2ea76d96d3 Unified sub menu cursor blink 2019-06-23 17:14:17 +02:00
Mikael Degerfält
bd84f16b1a Removed an unused function 2019-06-23 17:14:17 +02:00
Mikael Degerfält
4c4d0e8b5a Unified main and patch menu input handling
Now all menu pages are handled the same way, which is great because now I can implement scrolling in the menu pages.
2019-06-23 17:14:17 +02:00
Mikael Degerfält
0d0ea5051d Made the sensor adjust menu driven by data
* Moved menu titles and option names into data structures.
 * Unified select menu option code
 * Also unified handling of menu selection, although main and rotator menus are still handled the old way.
 * Moved struct definitions to numenu.h
 * Grouped functions and variables together based on usage.
2019-06-23 17:14:17 +02:00
Mikael Degerfält
9a0bb369ac Menu selection is now data driven
Some major refactoring has been going on.
Added simple structs of data containing info about what action to take when a menu item is selected.

Finally removed all but one call to display.display() in menu-function. There might still be more than one call to it on a frame though, since some functions still calls it internally.
2019-06-23 17:14:17 +02:00
Mikael Degerfält
6a8e36635e Avoid calling display.display() twice in an update.
Moved functions around to have a better overview of draw function. This will make it easier for me to continue with the next part, which probably will be a more generic handling of menus.
2019-06-23 17:14:17 +02:00