KindlingControl User guide ← Home

Using KindlingControl

KindlingControl talks to your Positive Grid Spark amp over Bluetooth. It works with the Spark 40, MINI, GO, 2 and NEO. This guide walks through everything in the app, from first connection to saving your own presets.

Getting started

What you need

  • The app: the desktop app (Windows, macOS, Linux) or the Android app, from the releases page. An iPad and iPhone app is planned.
  • Bluetooth switched on, and on macOS, Bluetooth permission for KindlingControl (System Settings → Privacy & Security → Bluetooth).
  • Developers can also run KindlingControl in Chrome or Edge from the source code (npm run serve, see the README). Safari, Firefox and every browser on iPhone and iPad can't do Bluetooth.

Connecting

  1. Close the official Spark app on your phone or tablet, or switch that device's Bluetooth off. The amp only talks to one app at a time.
  2. Switch the amp on.
  3. Press Connect in the top bar, choose your amp from the list (for example "Spark 40 BLE" or "Spark 2"), and confirm.
  4. KindlingControl reads the amp's name, firmware, serial number and battery status, then shows the tone the amp is playing right now.
  5. The Bluetooth symbol next to the logo shows the connection: grey when not connected, flashing amber while connecting, green when connected, red if connecting failed. On wider screens it also shows the amp's name; on a phone, touch and hold (or hover) it to see the text.

Seeing "Paired" next to the amp in the list is normal: it just means your computer already knows the amp, for example from Bluetooth audio.

Press Disconnect when you're done, or simply close the app.

Trying it without an amp

KindlingControl has a built-in simulated amp for developers. Run it from the source code and add ?mock=Spark%202 to the address, for example http://localhost:8787/?mock=Spark%202, then press Connect. Use ?mock on its own for a Spark 40. The desktop app starts with the simulator with npm run desktop:mock. Nothing you do there reaches a real amp.

The Tone screen

This is where you play. From top to bottom: the preset buttons, the signal chain, the amp, then the pedals.

Presets and banks

  • Buttons 1–4 switch between the presets stored on your amp. The lit button is the current one, and the preset's name and description appear next to the buttons.
  • On the Spark 2, which stores eight presets in two banks, a Bank 1 / Bank 2 switch appears above the buttons. Changing bank keeps your position: if you're on preset 3, you go to preset 3 in the other bank.
  • If you change preset or bank on the amp itself, the app follows.
  • Refresh reads the current tone from the amp again, which is handy if something looks out of sync.

The signal chain

The strip under the presets shows your guitar's path through the effects, from IN to OUT: noise gate → compressor or wah → drive → amp → modulation or EQ → delay → reverb. A red light means that block is on. Tap a block to jump to its controls.

The amp

  • Choose the amp model from the menu on the left of the amp head. Under the name you'll see which real amp it's based on, where that's known.
  • The knobs are laid out like the amp's top panel: Gain, Bass, Middle, Treble, Volume.
  • ON/OFF bypasses the amp model; the red jewel light shows when it's on.
  • Turning a knob on the amp itself moves the matching knob on screen.

The pedals

The other six blocks are shown as pedals, in two rows that follow the signal order:

  • Into the amp: noise gate (1), compressor or wah (2) and drive (3).
  • A badge between the rows marks the amp (4). Tap it to jump back to the amp controls.
  • After the amp: modulation or EQ (5), delay (6) and reverb (7).

On each pedal:

  • The footswitch at the bottom turns it on or off. The red light at the top shows its state, and a switched-off pedal is dimmed.
  • The nameplate is a menu: pick a different model of the same type, say a Tube Drive instead of a Booster. It also shows the real gear the model is based on.
  • Some settings are switches (like a delay's BPM sync) or selectors (like the delay mode or the reverb type) instead of knobs.

Using the knobs

  • Drag up or right to turn a knob up, down or left to turn it down. Hold Shift while dragging for fine adjustments.
  • Double-click (or double-tap) a knob to reset it to the middle (5).
  • With the keyboard, Tab to a knob and use the arrow keys. Page Up and Page Down make bigger steps.
  • Values run from 0 to 10, as in the official app. Changes are sent to the amp as you turn.

Creating and saving presets

New

Press New, give the preset a name, and choose to start from the current sound or a clean, blank preset. The new preset goes straight onto the amp so you can hear it while you shape it, and it's marked not saved. It uses the amp's temporary slot, so nothing stored on your amp changes yet.

Save…

When you like what you hear, press Save…. You can change the name, add a description, and choose where it goes:

  • Save to My presets on this device keeps it in the app's library (see the Presets tab).
  • Store on the amp puts it in one of the amp's preset slots (on a Spark 2, in either bank). This replaces what's stored in that slot, and the app warns you before it does.

You can do either or both. Save always uses what the amp is playing at that moment, including any knobs you turned on the amp itself.

If you try to switch presets while a new preset isn't saved, the app asks first, so you don't lose it by accident.

The Presets tab

Your saved presets, kept on this device. Each one shows its name, description, amp model and when you saved it.

  • Load plays the preset on the amp, using the temporary slot. Your stored presets aren't touched. To make it one of the amp's presets, press Save… and choose a slot.
  • Export downloads the preset as a .json file, for backups or to share.
  • Delete removes it from this device only; presets stored on the amp aren't affected.
  • Import JSON… adds preset files, including ones from other open Spark tools such as Ignitron. You can pick several at once.
  • Export current tone saves whatever the amp is playing right now as a file.

The library lives in this browser or app. It isn't shared between devices, and private or incognito windows forget it when they close (the tab tells you if it can't store data). Export anything you want to keep safe.

Sharing presets online

The presets hub on kindlingcontrol.app is where players swap tones. Browsing and downloading needs no account.

Get a preset

  1. Find one on the hub and press Download. You get a .json file.
  2. In KindlingControl, open the Presets tab and choose Import JSON….
  3. It appears in My presets. Load it to hear it; nothing stored on your amp changes until you choose Save….

Share one of yours

  1. In the Presets tab, press Export next to the preset (or Export current tone).
  2. On the hub, choose Share a preset and sign in with your email address. You'll get a sign-in link by email; there's no password.
  3. Upload the file, add a description if you like, and agree to share it under CC0, which lets anyone use and change it.

Your email address is only used to send sign-in links and is never shown. Other players see the display name you choose. You can delete your shared presets at any time. If a preset looks wrong or offensive, use Report this preset on its page; presets with several reports are hidden until a moderator checks them.

Reordering the chain (experimental)

The Spark appears to use a fixed effect order. KindlingControl lets you try a different order and tells you what your amp does with it.

  1. Press Reorder chain under the signal chain.
  2. Drag the blocks into a new order. Or tap a block and use the ← → keys.
  3. Press Apply, or Cancel to leave everything as it was.

The new order is tried in the amp's temporary slot, so nothing stored changes. The app then reads back what the amp is playing and tells you whether the amp kept your order or put it back to the standard one. If it was kept, listen to check the sound really changed. The amp may store an order it doesn't actually use.

Tuner

On the Tuner tab, switch Tuner mode on and play a single string. The big letter is the nearest note; the needle and the cents read-out show how far off you are, and the needle turns green when you're in tune. Switch it off to go back to playing.

The tuner works on the Spark GO, MINI, 2 and NEO. The Spark 40 doesn't send tuner readings to apps.

Console

For the curious: a live list of every message between the app and the amp, decoded into plain words. Tap a line to see its raw bytes. Tick Hide param / tuner spam to hide the constant stream of knob and tuner messages.

On the web and desktop apps, Pop out opens the Console in its own window, so you can watch the messages while you turn knobs on the Tone screen. Close that window, or press Bring it back on the Console tab, to return it. It closes along with the app.

You can also send a message yourself. That's mainly for people working out the amp's protocol. Messages starting with 02 only ask the amp for information. Messages starting with 01 change settings on the amp, so use them with care.

Capture

Decodes an Android Bluetooth log (btsnoop_hci.log) recorded while the official Spark app was connected, so you can see exactly what it sends. Everything is decoded on your device, and nothing is uploaded. That's how features the app doesn't support yet get worked out.

The capture guide explains how to record the log on your phone.

Troubleshooting

My amp doesn't appear in the list
Make sure the amp is on and the official Spark app is closed. Every device that could be connected to the amp needs it closed, or Bluetooth off. Then try again. On macOS, check that your browser has Bluetooth permission.
"This browser has no Web Bluetooth"
Use Chrome or Edge, or install the desktop or Android app. On iPhone and iPad no browser supports Web Bluetooth.
Connection failed
Open the Console tab: the lines starting with bluetooth: show each step, and the error says which one failed. Switch the amp off and on, close other apps that might be connected to it, and press Connect again. On a Mac, if it keeps failing, disconnect the Spark as an audio device in System Settings → Bluetooth (don't choose "Forget"), then try again.
"GATT operation failed for unknown reason"
Usually seen on macOS. The app already retries with a different write mode by itself. If it still fails, power-cycle the amp and reconnect. If you report it, include the Console lines.
The screen doesn't match the amp
Press Refresh to read the current tone from the amp again.
My saved presets disappeared
The library is stored per browser and per app, and private windows don't keep it. Clearing site data removes it too. Export presets you want to keep.

Settings and About

The gear button in the top bar opens Settings. In released apps it holds the Send anonymous error reports switch (see Privacy and error reports). The About part shows which version and which app you're using (include both when you report a problem), with links to the source code, the issue tracker and this guide.

Privacy and error reports

KindlingControl has no accounts and keeps your presets on your device. The desktop and mobile apps can send a short, anonymous error report when something goes wrong, so the problem can be found and fixed. They only do this if you agree.

The first time you open the app, it asks Help improve KindlingControl? Choose Send error reports or No thanks. Nothing is sent before you answer, and if you close the question without choosing, it asks again next time. To change your answer later, open Settings (the gear in the top bar) and tick or untick Send anonymous error reports. The setting is kept on this device.

What a report contains: which app it is (desktop, Android, iPhone/iPad), the desktop operating system, the app version, the error message and the place in the code where it happened, and whether this is the first time your app has reported that particular error. Before anything is sent, names in quotes, IDs, serial numbers, addresses and file paths are removed from the message.

What is never sent: any ID for you, your device or your amp, your IP address or location, preset or amp names, or anything you play. To tell whether an error is new for your app, the app remembers which errors it has already reported, on your device only. Development builds and the simulated amp never send reports.

When the same error is reported by more than one app, it is posted as a public issue on the project's GitHub page so it can be fixed. That issue contains only the report contents above.

Getting help

Found a bug, or something doesn't work with your amp? Please open an issue on GitHub.

Include your amp model, your device, the app version (in Settings → About), and any red lines from the Console.

If KindlingControl is useful to you, you can support it with the yellow Buy me a coffee button in the top bar of the web and desktop apps.

© 2026 blueDog Consulting and Jeremy Meiss. KindlingControl is designed, built and maintained by blueDog Consulting and is free software under the GNU General Public License v3 (or later). It is an independent project, not affiliated with or endorsed by Positive Grid. "Spark" and "Positive Grid" are trademarks of their owner and are used only to describe compatibility.