
pikocore is…
- a lo-fi music mangler based on the Raspberry Pi Pico (brother of the nyblcore).
- capable of holding 8 minutes of 8-bit 33 kHz monophonic samples.
- powered by a single AAA battery for up to 3 hours or by powered by USB-C.
- tempo-synced with a selectable BPM between 60 and 300, with samples mangled by beat-synced effects (stutter, retrig, gate, tunneling).
- loaded with real-time effects like a resonant filter, timestretching, volume, and wavefolding.
- sequenced with a 128-step sequencer with recording/playback
- saved and loaded via EEPROM for instant patch recall.
- able to load custom firmware, new samples, all through USB-C.
- sync-compatible with Pocket Operators.
- open-source, wonderfully hackable.
for more info, check out my interview with Studio Brootle and a review by DJ Iceman.
demo
original audio:
pikocore:
buy
in addition to my store, you can buy assembled devices from Perfect Circuit: click here to go to Perfect Circuit. also, if you are in the UK, diy kits are available from Thonk: click here to go to Thonk.
sign up for the mailing list to get notified about updates and new things.
usage
full instructions are available here: download pdf
bom
there is an alternative build guide developed from noise.kitchen available here: download pdf
Click here to view schematic.
Click here to view the full BOM.
item | quantity |
---|---|
Pico w/ RGB | 1 |
5V DC-DC step-up | 1 |
1.8mm LED | 8 |
Audio jack (PJ-320B straight) | 3 |
6x6x4.5 button | 8 |
AAA Battery holder (45 mm between pins) | 1 |
SPDT switch | 1 |
1x3 male header | 1 |
10k potentiometer (RV09, 12.5 mm) | 4 |
1x20 female header | 2 |
1x20 male header | 2 |
0.1 uF capacitor | 2 |
1 uF capacitor | 1 |
10 kohm resistor | 3 |
1 kohm ressitor | 9 |
100 ohm resistor | 3 |
2N3904 NPN transistor | 1 |
tutorial
basics
there are eight buttons and four knobs that can be used to manipulate the pikocore. there are two outputs and one input. make sure to plug in only stereo cables to any outputs or inputs.
i/o
the top left jack is for incoming trigger signal (e.g. from a pocket operator in SYN1 mode or a pikocore). the top right jack sends out audio. the bottom right jack sends out trigger signal and audio signal (for syncing to pocket operators using SYN4 mode).
buttons
The buttons on the device can be used to jump to samples and retrigger audio in real time.
jumping: Press any of the eight buttons to jump to that relative position in the sample.
retriggers: Press and hold a button and press another button to create a retrigger effect. The retrigger speed is based on the position of the second button press. Random effects add added to the retriggers, such as changes in speed, pitch, filter envelopes, or volume envelopes.
stop/play: press the two leftmost buttons and the two rightmost buttons simultaneously to stop/play.
Button mashing is encouraged.
knobs
The rightmost knob is a filter/volume knob that controls the output level. The leftmost knob is the selector knob, which can choose between eight different positions. Each position changes a different pair of parameters, which can be changed using the middle two knobs, knob A and knob B.
selector pos | knob a | knob b |
---|---|---|
1 | sample | break |
2 | filter | stretch |
3 | gate | gate prob. |
4 | jump prob. | retrig prob. |
5 | tunnel prob. | reverse prob. |
6 | sequencer rec. | sequencer on |
7 | save | load |
8 | volume/fold | tempo |
- sample changes the sample being played (holds >100 samples totaling ~8 minutes).
- break modifies all probabilities simultaneously using varied easing functions.
- filter is a resonant low-pass filter that attenuates higher frequencies.
- stretch performs a lofi timestretch effect.
- gate controls the amount of gating on the sample.
- gate prob. controls the probability of gating.
- jump prob. controls the likelihood of jumping to a different step in the current sample.
- retrig prob. controls the likehood of retriggering.
- tunnel prob. controls the likelihood of jumping to a different sample.
- reverse prob. controls the probability of reversing direction.
- sequencer rec will record sequences, up to 128 steps (cw = record, ccw = erase).
- sequencer on turns on the sequencer (cw = on, ccw = off).
- save saves probabilities, sample, volume, and tempo (cw = save).
- load recalls the last save (cw = load).
- volume/fold changes the volume and adds a wavefolding effect.
- tempo controls the tempo in steps of 5 bpm (50-305), encoded in binary.
syncing
pikocore uses a audio click signal to sync and is fully compatible with sync signals coming from other devices, like the teenage engineering pocket operators. The pikocore syncing operates at 2 PPQN and has max input/output voltages of 3V.
The upper left audio jack takes in a PO sync signal (SYN1
on Pocket Operator) and will automatically sync the pikocore. The output sync is separate from the main audio output jack, situated below the Pico mcu. When using a pocket operator, set the receiving device to SYN4
(or SYN5
if the chain continues.
tempo
Set the tempo by turning the selector knob fully CW to the eighth spot and then turning knob b. The BPM available is between 50 and 305, and the current value is displayed using binary encoding. Instead of memorizing the binary encoding, you can use tool below to visualize the tempo you want to match. Change the slider and then on the pikocore move knob b so that the lights match up to get this bpm. Because of the clock in the pikocore, BPMs are only accurate to 2%.
update
Updating the pikocore is easy. Simply press the “boot” button and plug in a USB-C cable, or press and hold “boot” while pressing “rst” when the USB-C cable is already plugged into your computer.
Then download the .uf2
file (either from factory reset firmware, or customized firmware, see below) and drag-and-drop it to the drive that pops up in your computer (usually named RPI-RP2
). Visual instructions are available with this YouTube video that explains the process for uploading firmware.
factory reset
firmware
download these to get the pikocore back to the “stock” image or upgrade it to a newer image.
- Sept 6th, 2023: pikocore-ad319a8.uf2 (v1.0.1, no RGB led)
- July 4th, 2023: pikocore-1ca6156.uf2 (v1.0.1)
customized firmware
Use this tool to change the audio on the pikocore. This will automatically utilize the latest firmware of the pikocore.
Uploaded audio is automatically converted to the base sample rate (33 kHz) and to the base BPM (165 BPM). If you know the BPM of your sample, you can help the server detect it by including it in the filename somewhere as bpmX
. For example, my_drum_bpm150.wav
will automatically be registered as 150 BPM. You can also include the number of beats in the filename somewhere as beatsY
. For example, my_drum_bpm150_beats4.wav
will be registered as having 4 beats. If no information is included, the server will do its best to detect the BPM and then determine the number of beats to be used for beat syncing.
remixing
send me your remixes! they light up my day (literally!). there are some amazing ingenuity with creating enclosures for pikocore:
- arcade box! and button box by 2ononen
- arcade box by ground_grown_circuits
- printable case w/ 3D step files available (regular case, expanded case)
troubleshooting
Here are some fixes for issues that may crop up when using pikocore.
The audio is really quiet. This happens if you plug in a mono cable to the audio output. Make sure to use only 3.5mm stereo cables and make sure they are pluggined in all the way.
There is a high pitched sound. This seems to happen sometimes while powered by the AAA battery and the potentiometers are in a certain position. Try turning the potentiometers CCW to eliminate the noise. If that doesn’t work, try rotating the battery in is holder. If it is still a problem, try powering from a USB powerbank.
There is no sound, or the sound is muffled sounding. This can happen if the filter gets set fully closed, or the timestretch is at 100%, or the volume if fully down. The best thing to do is to reset these three parameters. Move the selector knob to the second position and turn knob a fully CW and turn knob b fully CCW. This will reset the filter and the timestretch. Now move the selector knob to the eight and last position and try to turn knob a until you can hear something (the volume). This should fix it 90% of the time.
If you still have issues: Please feel free to send me an email at zack@infinitedigits.co.