SparkBox is a BT pedal for the Positive Grid Spark 40.
- Added banks support. "Banks" are sets of four tone presets, stored in ESP32's flash memory, each bank in a corresponding folder.
- Long pressing BUTTON 2 or BUTTON 4 invokes Bank Select manu, continue using BUTTONS 2 and 4 to decrease/increase bank number. If you stop scrolling for a few seconds, the selected bank will be uploaded to the amp.
- On the first run your current set of hardware presets will be saved to the bank 000.
- Added WiFi support w/file manager. Holding BUTTON 1 during boot will switch the pedal to WiFi mode.
- Initially the pedal will launch a WiFi Access Point (AP), SSID is "SparkBox" by default.
- Connect to this WiFi, using your mobile or PC or whatever.
- Direct your browser to http://192.168.4.1
- Submit your local WiFi network credentials (SSID and password), so the pedal could connect to your home WiFi.
- If everything is done correctly, holding BUTTON 1 on boot again will connect your pedal to your home WiFi network, and the OLED display on the pedal will show the adress of the filemanager site, so you can access the pedal from any device connected to your local wireless network.
- Use the filemanager to upload your tone presets to the banks folders, 4 presets per folder.
- Format of *.json preset files is the same as backed up files, used by the Spark app (usually you can find them zipped in your Dropbox).
- There's a negative impact on the compiled project size. The program won't fit into a standard APP partition. The cure is easy though: in Arduino IDE choose Tools->Partition Scheme->No-OTA(Large APP), or something that gives you around 2MB APP partition along with enough (also 2MB) of SPIFFS space, cause presets are stored there. Note, that some boards in Arduino IDE don't have Partition Scheme settings, in this case it's recommended to choose some other ESP32 board (ESP Dev Module, Heltec WiFi Kit 32, WEMOS LOLIN32, etc.) which has this menu.
- Positive Grid for their Spark 40 Amp. "Positive Grid", "Spark" and other trade marks belong to their respected owners.
- David Thompson for the original pedal code https://github.com/happyhappysundays
- Paul Hamshere https://github.com/paulhamsh/ for his system approach and a great reverse engineering job. This project is based on forked SparkIO, SparkComms and some of his other classes.
- Christopher Cook https://github.com/soundshed for the great desktop app for playing with the amp, and for some code look-up.
- Kevin McGladdery for the pedal example
- Holger Lembke https://github.com/holgerlembke/ESPxWebFlMgr thanks for the filemanager
- Alex Gyver https://github.com/GyverLibs/SimplePortal thanks for the captive portal и вообще
- FB spark programming group for their help and support
- Expression pedal input on GPIO34 for altering the current parameter or on/off switch
- Uses BLE so that it can be used with music function of the Spark app
- Allows connection of the app for full simultaneous control
- Supports the most common DIY display types: SSD1306 and SH1106
- Switch presets either on footswitch, app or Spark to update display
- Switch on and off all four major effects dynamically
- Graphically display the effect state on the display
- Supports 4-button pedals
- Battery level indicator on UI
- Long press (more than 1s) BUTTON 1 to switch between Effect mode and Preset mode
- Long press BUTTON 3 to adjust effect parameters: use BUTTONS 2 and 4 to decrement/increment, BUTTON 1 to cycle thru parameters and long press BUTTON 3 to save your edits back to the amp.
- Now with remote guitar TUNER display! Long press BUTTONS 1 and 2 simultaneously, or turn it ON from the app or on the amp.
- Bypass mode, invoked by long pressing BUTTONS 3 and 4 simultaneously, allows adjusting effect levels to match your raw pickup output.
- Inter-operable with both conventional and Heltec ESP32 modules. Also tested on WEMOS LOLIN32 Lite with battery support.
- Stand-by mode added to reduce power when disconnected - light or deep ESP32 sleep mode will be configured automatically depending on GPIOs of the buttons and logical levels choosen in your build.
Under Files->Preferences->Additional Boards Manager URLs, enter the following:
- https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series/releases/download/0.0.5/package_heltec_esp32_index.json
Under Tools->Board->Board manager ensure that you have some of the following versions:
- ESP Dev Module
- Heltec WiFi Kit 32
- WEMOS LOLIN32 or some other ESP32 module which gives you the "Tools->Partition Scheme" menu
Under Tools->Manage Libraries ensure that you have the following libraries and versions:
- ThingPulse SSD1306 driver 4.2.1 (ESP32)
- NimBLE-Arduino 1.3.6
- LittleFS_esp32 by lorol 1.0.6 (search "core-provided littlefs" , this should bring the only result "LittleFS_esp32 by lorol") someday this lib is promised to be the core component, and may change name from LITTLEFS to LittleFS, or may not, cause it's a little mess.
- define CLASSIC
Uncomment this to use with Android devices that are happier with classic BT code.
- define BATT_CHECK_0
You have no mods to monitor the battery, so it will show empty (default).
- define BATT_CHECK_1
You are monitoring the battery via a 2:1 10k/10k resistive divider to GPIO23. You can see an accurate representation of the remaining battery charge and a kinda-sorta indicator of when the battery is charging. Maybe.
- define BATT_CHECK_2
You have the battery monitor mod described above AND you have a connection between the CHRG pin of the charger chip and GPIO 33. Go you! Now you have a guaranteed charge indicator too.
- define EXPRESSION_PEDAL
Expression pedal define. Comment this out if you DO NOT have the expression pedal mod.
- define DUMP_ON
Dump preset define. Comment out if you'd prefer to not see so much text output
- define HELTEC_WIFI
Uncomment when using a Heltec module as their implementation doesn't support setMTU()
- define SSD1306 OR define SH1106
Choose and uncomment the type of OLED display that you use: 0.96" SSD1306 or 1.3" SH1106
- define TWOCOLOUR
Uncomment if two-colour OLED screens are used. Offsets some text and shows an alternate tuner
- #define STALE_NUMBER
Uncomment if you want preset number to scroll together with the name, otherwise it'll be locked in place
- define NOSLEEP
Uncomment if you'd prefer not to use the power-saving sleep modes
- define RETURN_TO_MASTER
When adjusting the level of effects, always start with Master level settings. Comment this line out if you like it to remember your last choice
- define ACTIVE_HIGH
Comment out if your buttons connect to the GND rather than to VCC, this will engage internal pullup and sleep routines also. If you make a decision on the build right now, it's recommended to connect buttons to VCC and to use ACTIVE_HIGH directive.
- define NUM_SWITCHES 4
How many switches do we have
- uint8_t switchPins[]{25,26,27,14};
GPIOs of the buttons in your setup in the form of switchPins[]{GPIO_for_button1, GPIO_for_button2, GPIO_for_button3, GPIO_for_button4, ... }. Note that GPIOs 25,26,27 and 14 are recommended ones if you want to get the least battery drain in the stand-by mode.
- define ANIMATION_1 or ANIMATION_2
Until one or the other is voted as a winner you can choose between two animations at startup.