Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
I haven't really worked out the sequencer fully. I think I know how I want it to work, but haven't written the code to make it work that way. I think the lib is still useful as it is, to make things (I have all the known sysex commands worked out, etc) but it will need some more work to be a functional sequencer.
This is a command-line program to make the Arturia BeatStep work in different ways than the firmware is meant to.
The Arturia BeatStep is a really nice-feeling device, that is pretty cheap (~$100 new.) The built-in firmware for the device is OK, but a bit wonky for sequencing complex drum-patterns. Since I don't have access to the firmware's source, I made this so I'd have a sequencer that works how I want.
It starts a virtual midi device that can be plugged into other software.
IMPORTANT Using the sequencer will set your device up with specifc mappings and stuff, so make sure to back up your beatstep settings in the MIDI Control Center (from Arturia) program, or use
STORE
/RECALL
buttons on device, or usesave
/load
in CLI, if you care about them.
npm i -g beatstep
You can also run it without installing:
npx beatstep list
beatstep <command>
Commands:
beatstep load <file> Load a .beatstep preset file
beatstep save <file> Save a .beatstep preset file
beatstep list List MIDI devices
beatstep seq Start sequencer
Options:
--help Show help [boolean]
--version Show version number [boolean]
Commands have more options. If you want to know more about it, run beatstep <command> --help
I am still working on this part. Here is how it currently works:
beatstep seq
to start the sequencerCNTRL
mode (red) and turn on EXT SYNC
(blue)SHIFT
to chose patternSTOP
to choose trackPLAY
will play/stop the current patternThe notes it sends out are based on hydrogen drumkits, which is a common mapping for drumkit-instruments starting at C1
with a kick drum. Eventually, I can make this a configurable option (like a CLI flag that you can tell it the notes it can use for each track.)
You can also use this as a nice BeatStep interface, in your own code
The class constructor has 2 params, which are the names of input and output device (you can get with require('easymidi').getInputs()
and require('easymidi').getOutputs()
.)
import { getOutputs, getInputs } from 'easymidi'
import { BeatStep } from 'beatstep`
const beatstep = new BeatStep(
getInputs().find(d => d.includes('Arturia BeatStep')),
getOutputs().find(d => d.includes('Arturia BeatStep'))
)
beatstep.on('noteon', console.log)
beatstep.on('noteoff', console.log)
Eventually, I'd like to reprogram the chip on the controller to acheive a fully custom standalone sequencer.
It uses a stm32f103 chip, with some supporting circuitry to multiplex all the buttons, leds, and knobs. It looks like they are using hc574 to multiplex rotoary-encoders, somehow. It looks like it has programming pins on board (JP1
) but firmware updates over sysex would be preferrable. This might give me some ideas for reversing the firmware to the point that I can read inputs, output LEDs, and eventually just write my own interface.
Ideally, I could compile my own code, create my own led file (appears to be hex) and send over sysex.
RATE
knob for BPMCHAN
so I can use that to switch tracks and use SHIFT
to do something else (commands like copy/paste and sequencer controls would be cool)STORE
/RECALL
for something other than intended. Would be good to fire save/load (maybe combined with SHIFT
and STOP
for track/pattern/song)I couldn't have made this without the awesome hacking in this blog post.
FAQs
Intercept beatstep and make it work in different ways
We found that beatstep demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.