DrumMachinePO
A downloadable tool
DrumMachinePO
Demo video:
Older demo video: https://www.youtube.com/watch?v=MFBodQwCgpo
A simple 16-step sequencer with multi-pattern chaining and Teenage Engineering Pocket Operator sync ability.
DrumMachinePO is an enhanced version of Playdate SDK example - DrumMachine - which is just a single-pattern 16-step sequencer.
It adds the following features on top of the DrumMachine example:
- Save/Load project
- Multi-pattern (up to 18).
- Pattern chaining (up to 12 different pattern chains).
- BPM/Swing adjustment
- Pocket Operator (e.g. PO-33 KO!) sync ability.
- User-defined samples (instead of built-in sounds, must be done while connected to PC and requires pre-compiling)
- Retriggers/Note length modifiers per note
How to install
Download the "drummachinepo.pdx" folder or "drummachinepo.pdx.zip" file, then sideload it into the Playdate console.
Use https://play.date/account/sideload/ page for zip file, and use usb connection to sideload the program directly to Games folder.
Grid view - Pattern editor
Control info:
D-PAD: Move around the grid.
A: Add/remove note.
- Hold A+up/down to adjust velocity of each notes.
- Hold A+right to change the retrigger value (displayed as Rtrg: num). Cycles through 1-2-3-4-6-8.
- Hold A+left to change the note length value (displayed as Len: num). Cycles through 1-2-3-4-5-Full. 1:1/3 step, 2:1/2 step, 3:1 step (default), 4: 2 steps, 5: 3 steps, Full: Full sample length
- If the focus is on the track name (e.g. "KickDrum"), the A-button press will mute the selected track.
- If the focus is on the track name, Hold A+up/down controls the track volume
B: Start/Stop playing. Double-tapping B while it's playing makes the play head go all the way to the first position.
Crank:
- No modifier: change the pattern
- Hold A + crank: change BPM
- Hold B + crank: change Swing amount
- (track name selected): change the user sample
Patterns/Settings view
You can access the patterns/settings menu via Playdate System menu.
Control info:
D-PAD: Move around the settings.
A: Select options, or hold to copy pattern (cursor should be on the source pattern. While holding A, press left/right to desired destination patterns)
B: Go back to grid view, or hold to clear pattern/delete the pattern chain.
Performance mode
In "performance mode", you can play each "pattern chains" that is assigned to each directions of the D-pad.
Control info:
D-PAD:
- Tap: Play the currently assigned pattern chain (queue to the pattern end).
- Double Tap: Play the assigned pattern immediately
- Hold Direction+Crank: Change the assigned pattern chain
A: Cycle through "effects". BPM/Swing/Filter(LPF/HPF)/Bitcrusher/Delay
- Crank: Adjust current FX
- Hold A+Crank: scroll through FXs
- Double-tap A: reset current FX (reset ALL FX if "no effects" is selected)
B: Start/Stop playing
- Double-tap B: go all the way back (rewind).
- Hold B: queue the stop operation. Sequencer will stop after playing the current pattern.
If "KEEP PERF FX" setting is on, FXs that are changed in the performance mode is also applied in the grid mode.
Using user samples
DrumMachinPO looks for the user sample files when starting up.
To use user samples, you would need to pre-convert the .wav sample files into .pda files!
Use included "pda_conv" tool to convert all the .wav files in a current folder (where the executable is located) to .pda files.
Put sample files in Shared/DrumMachinePO/Samples folder to use it instead of the built-in ones.
Sample names should match the ones in the following list.
'KickDrum', 'SnareDrum', 'HHClosed', 'HHOpen', 'TomHi', 'TomMid', 'TomLow', 'Clap', 'Clav', 'Rimshot', 'Cowbell', 'Maraca', 'CongaHi', 'CongaMid', 'CongaLow'
If suffix numbers are added on the file name, e.g. KickDrum1.pda, KickDrum2.pda... DrumMachinePO will add all of them for each banks.
Alternatively, you can name your samples like this:
'Bank1_mySample.pda'
Then it will be shown up in the Bank 1 - which is the KickDrum - with names shown as 'mySample'
You can see the names in the figure, I've loaded a sample with name 'Bank15_Crash.pda', then changed its bank number so it shows up as such.
Use crank on the track name, then use the crank to select the sample for the bank. It also plays the current sound when you crank on the track name.
Syncing with Pocket Operator
When Sync mode is enabled, DrumMachinePO shifts all the drum sounds to the right channel.
Left channel is reserved for the sync signal, which is just a click sound that fires 1,3,5,7... steps.
This is equivalent of Pocket Operator sync mode 1. (SY1)
Since there are no "stereo in" in Playdate, Playdate should be the first one in the chain.
You can access the Sync mode by holding "Function" key and pressing "BPM" key on your Pocket Operator.
Sync mode of Pocket Operators work like the following (from https://www.reddit.com/r/pocketoperators/comments/4h3l8k/sync_modes_explained/):
mode input output
SY0 stereo stereo
SY1 stereo mono/sync --> Playdate runs in this mode
SY2 sync stereo
SY3 sync mono/sync
SY4 mono/sync stereo --> Pocket Operator should be in this mode, if it's the last one in the Sync Chain.
SY5 mono/sync mono/sync --> Pocket Operator should be in this mode, if it's in the middle of the Sync Chain.
As the sync signal is just a mono sound, if the volume is too low it might not get detected by the Pocket Operators!
Set the volume of the Playdate (accessible on the "menu" button" higher, and use "Drum Track Overall Voume" option to adjust drum sound level.
Also, SY4/SY5 only appears when you connect the line-in cable to the PO.
Sampler
Using the mic on Playdate (or mic-attached headphones), you can record the samples and use them as one of the "user samples".
Sampler has two tabs: "Record", "Browse".
In Rerocd menu, you can record sounds using A button (maximum 30s).
You can also choose to go to the "Browse" menu after recording, or to stay at the "Record" menu so that you can record multiple sounds.
If you done recording, you can browse/delete/modify the sounds.
You can also press B on files to delete/duplicate the file.
Using the crank, you can trim the start/end point of the sample and modify the pitch/gain of the sample.
"Auto trimming" tries to remove the beginning/end silent parts automatically.
You should trim the beginning part aggressively since the step sequencer cuts the audio per step sharply!
Naming convention for the samples is: R1, R2... for raw recordings, and R1T1, R1T2, R2T1... for modified sounds.
Resampling is also supported, and it will have the next available name (i.e. R1T1 resampled->R1T2)
If you selected the sample and turned the crank, "B1"~"B15" would be shown, which represents the current bank status for that sample. "-" means unassigned.
You can see that the sample "R1T1" is assigned to the "Bank11".
Source code / GitHub
https://github.com/signfang/DrumMachinePO
License info
Original SDK example of DrumMachine was distributed in 0BSD license. This project - DrumMachinePO - is distributed under MIT license.
| Updated | 10 days ago |
| Status | Released |
| Category | Tool |
| Rating | Rated 5.0 out of 5 stars (1 total ratings) |
| Author | signfang |
| Tags | Music, Music Production, Open Source, Playdate |
| AI Disclosure | AI Assisted, Code |
Download
Click download now to get access to the following files:
Development log
- V2.1 - Sampler UI tweaks and auto trimming10 days ago
- V2.0 - Sampler!11 days ago
- V1.5 - Per-track volume adjustments / Overall volume settings16 days ago
- V1.4 - Performance mode button overhaul and bugfixes21 days ago
- V1.3 - Compromises and retriggers23 days ago
- V1.2 - More fixes and press+hold to navigate grid25 days ago
- V1.1 - Back to update() calls again27 days ago
- V1.0 - More FXs, Metronome, and bugfixes33 days ago










Comments
Log in with itch.io to leave a comment.
๐๐๐๐๐๐ซ I want you to know how very much appreciated you are for making this. Can't wait to try it out with my POs