rndpatch/keystep37-research

Arturia KeyStep 37 firmware research project

C

3

1 commits

updated Sep 20, 2026

See the code

See what people are saying

SourceMessageScoreDate

Arturia KeyStep 37 firmware research project

1

Sep 24, 2026

README

KeyStep 37 Research

Independent firmware research for the original Arturia KeyStep 37, version 1.1.6.579. An address map, local analysis and patching tools, and the complete source of an additional hardware generator mode. Other KeyStep models and firmware revisions are not compatible targets.

No firmware images, vendor binaries, device backups or full disassemblies are distributed. Obtain the original firmware from Arturia's product downloads.

What you can do

GoalAvailable resultStart here
Understand the native firmwareChecked addresses, call relationships, sequence format and input/output pathsArchitecture, map
Make a small data changeA guarded patch recipe, both checksum layers and exact diff verificationColor example
Build the additional GEN modeFull C/Thumb sources and local image construction; basic operation observed on one deviceSetup, device build
Change GEN behaviorEdit its C algorithms, defaults, controls or display and rebuild the existing integrationFirst GEN change
Add reverse/ping-pong to the native sequencerResearch route and traversal/release contracts; implementation still requiredSequencer
Change the native arpeggiatorRecovered mode behavior and concrete investigation targets; proposed changes are not implementedArpeggiator

GEN provides independent rhythm, motif and accent cycles, eight development operators, Chord note capture, Scale controls, Commit/Reset, native transport, and display/key LED integration. Its algorithms can be edited without creating another set of native hooks. New native hooks require a separate integration review; this is not a general firmware plugin loader.

First run

Follow setup and expected results for the compiler, linker and local image. Python tools use only the standard library. From the repository root, these checks need no firmware or connected keyboard:

python3 -B -m unittest discover -s tests -v
make -C device/tests test
python3 -B map/render.py --check
python3 -B tools/check_publication.py

Then create local/ and put your own unmodified 1.1.6.579 image there:

mkdir -p local
export KS37_STOCK=local/keystep37_Firmware_Update_1_1_6_579.led
python3 -B -m ks37 inspect "$KS37_STOCK"
python3 -B -m ks37 verify "$KS37_STOCK"
python3 -B map/check.py --firmware "$KS37_STOCK"
python3 -B device/build.py --stock "$KS37_STOCK"

The last command needs Clang with the ARM target and ld.lld. It compiles the additional mode, checks placement and hooks, and constructs the modified image in memory. Writing a new local image requires --output. See the device build and controls. The tools do not download firmware, open MIDI/USB ports or flash the device.

For a first independent change, follow the major-to-minor startup pool example, then choose a specific algorithm or native behavior to investigate.

Contents

PathPurpose
map/index.mdCurated address index, evidence and conditional call relationships
map/firmware.jsonMachine-readable research facts and evidence hashes
docs/architecture.mdStartup, input, sequence, arpeggiator and output boundaries
docs/sequencer.mdRoute for adding native reverse/ping-pong playback; not implemented
docs/arpeggiator.mdExisting traversal modes and routes for changing native behavior
device/Full additional mode: C/Thumb sources, placement, hooks, build and independent verification
docs/new-mode.mdIntegration boundaries for adding another mode
ks37/Container inspection, validation, guarded local patch planning and packing
docs/research-method.mdEvidence levels, address conventions and validation procedure

Limits

The map is partial; recovered names are provisional. Static findings, host tests and hardware observations are distinct evidence. The color modification was observed on one device with a successful return to official firmware; this is not a general recovery guarantee. The generator build has run on a device and basic operation was acknowledged; extended controls, stress testing and musical acceptance remain incomplete. A checksum match does not establish boot acceptance or stability of a changed build.

See contribution rules and provenance. Original repository code and documentation use the MIT license. Vendor firmware is not part of this repository.

Contributors

kirillqwer

1 commits

rndpatch/keystep37-research

Arturia KeyStep 37 firmware research project

C

3

1 commits

updated Sep 20, 2026

See the code

See what people are saying

SourceMessageScoreDate

Arturia KeyStep 37 firmware research project

1

Sep 24, 2026

README

KeyStep 37 Research

Independent firmware research for the original Arturia KeyStep 37, version 1.1.6.579. An address map, local analysis and patching tools, and the complete source of an additional hardware generator mode. Other KeyStep models and firmware revisions are not compatible targets.

No firmware images, vendor binaries, device backups or full disassemblies are distributed. Obtain the original firmware from Arturia's product downloads.

What you can do

GoalAvailable resultStart here
Understand the native firmwareChecked addresses, call relationships, sequence format and input/output pathsArchitecture, map
Make a small data changeA guarded patch recipe, both checksum layers and exact diff verificationColor example
Build the additional GEN modeFull C/Thumb sources and local image construction; basic operation observed on one deviceSetup, device build
Change GEN behaviorEdit its C algorithms, defaults, controls or display and rebuild the existing integrationFirst GEN change
Add reverse/ping-pong to the native sequencerResearch route and traversal/release contracts; implementation still requiredSequencer
Change the native arpeggiatorRecovered mode behavior and concrete investigation targets; proposed changes are not implementedArpeggiator

GEN provides independent rhythm, motif and accent cycles, eight development operators, Chord note capture, Scale controls, Commit/Reset, native transport, and display/key LED integration. Its algorithms can be edited without creating another set of native hooks. New native hooks require a separate integration review; this is not a general firmware plugin loader.

First run

Follow setup and expected results for the compiler, linker and local image. Python tools use only the standard library. From the repository root, these checks need no firmware or connected keyboard:

python3 -B -m unittest discover -s tests -v
make -C device/tests test
python3 -B map/render.py --check
python3 -B tools/check_publication.py

Then create local/ and put your own unmodified 1.1.6.579 image there:

mkdir -p local
export KS37_STOCK=local/keystep37_Firmware_Update_1_1_6_579.led
python3 -B -m ks37 inspect "$KS37_STOCK"
python3 -B -m ks37 verify "$KS37_STOCK"
python3 -B map/check.py --firmware "$KS37_STOCK"
python3 -B device/build.py --stock "$KS37_STOCK"

The last command needs Clang with the ARM target and ld.lld. It compiles the additional mode, checks placement and hooks, and constructs the modified image in memory. Writing a new local image requires --output. See the device build and controls. The tools do not download firmware, open MIDI/USB ports or flash the device.

For a first independent change, follow the major-to-minor startup pool example, then choose a specific algorithm or native behavior to investigate.

Contents

PathPurpose
map/index.mdCurated address index, evidence and conditional call relationships
map/firmware.jsonMachine-readable research facts and evidence hashes
docs/architecture.mdStartup, input, sequence, arpeggiator and output boundaries
docs/sequencer.mdRoute for adding native reverse/ping-pong playback; not implemented
docs/arpeggiator.mdExisting traversal modes and routes for changing native behavior
device/Full additional mode: C/Thumb sources, placement, hooks, build and independent verification
docs/new-mode.mdIntegration boundaries for adding another mode
ks37/Container inspection, validation, guarded local patch planning and packing
docs/research-method.mdEvidence levels, address conventions and validation procedure

Limits

The map is partial; recovered names are provisional. Static findings, host tests and hardware observations are distinct evidence. The color modification was observed on one device with a successful return to official firmware; this is not a general recovery guarantee. The generator build has run on a device and basic operation was acknowledged; extended controls, stress testing and musical acceptance remain incomplete. A checksum match does not establish boot acceptance or stability of a changed build.

See contribution rules and provenance. Original repository code and documentation use the MIT license. Vendor firmware is not part of this repository.

Contributors

kirillqwer

1 commits

Languages

C

66.3%

Python

25.8%

Assembly

6.6%