Log In  

Hello! If you're coming here from Twitter, the song I posted there uses the buggy dev version at the bottom of this post. I'll try to have a cleaned-up update out this weekend.

This update to RP-8 brings a number of minor improvements to the sound, along with a partial draft of a user manual.

NOTE: This cart plays best on native Pico-8. See the Web section under Compatibility Notes below for more info. Be careful with your ears and keep the volume down at first!

Cart #rp8-3 | 2022-04-25 | Code ▽ | Embed ▽ | No License
22

RP-8 is a demake of ReBirth RB-338, one of the earliest commercial attempts at software emulation of classic synthesizers. Like ReBirth v1, RP-8 includes two (emulated) analog monosynths and a drum machine, each with an integrated 16-step pattern-based sequencer, along with effects to spice up the sound design, and a song mode to record and play back both pattern changes and parameter tweaks.

Usage

See the draft manual! (Reference section still to come...)

Short demo loop - to load, copy this text, paste it into RP-8, then select "load from clip" from the pause menu:

rp80{pat_store={b0={1={st="@@[email protected]@@@[email protected]@[email protected]@@[email protected]",nt="⁙⁙⁙⁙⁙⁙⁙■⁙⁙⁙⁙⁙⁙◀⁙",},2={st="@@[email protected]@@@[email protected]@[email protected]@@[email protected]",nt="⁙⁙⁙⁙⁙⁙⁙‖⁙⁙⁙⁙⁙⁙◀⁙",},7={st="[email protected]@[email protected]@[email protected]@@[email protected]@@",nt="⁙⁙⁙⁙⁙⁙¥‖⁙⁙⁙◀⁙⁙⁙⁙",},11={st="[email protected]@[email protected]@@@@@@@@@",nt="、‖‖‖▮‖‖‖‖‖‖‖‖‖‖‖",},8={st="[email protected]@[email protected]@[email protected]@@[email protected]@@",nt="「⁙⁙⁙⁙⁙⁙⁙⁙◀⁙⁙¥⁙⁙⁙",},12={st="[email protected]@[email protected]@@@@@@@@@",nt="。◀◀◀■◀◀◀◀◀◀◀◀◀◀◀",},9={st="[email protected]@[email protected]@[email protected]@@[email protected]@@",nt="「⁙⁙⁙⁙⁙¥◀⁙⁙⁙‖⁙⁙⁙⁙",},10={st="[email protected]@[email protected]@@@@@@@@@",nt="¥⁙⁙⁙\1⁙⁙⁙⁙⁙⁙⁙⁙⁙⁙⁙",},},dr={1={cy="@@@@@@@@[email protected]@[email protected]@@",bd="[email protected]@@[email protected]@[email protected]@[email protected]@",pc="@[email protected]@[email protected]@[email protected]",sp="@@@@@@@@@@@@@@@@",sd="@@@[email protected]@@[email protected]@[email protected]@[email protected]",hh="[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@",},2={cy="@@@@@@@@@@@@@@@@",bd="[email protected]@@[email protected]@@[email protected]@@[email protected]@@",pc="@@@@@@@@@@@@@@@@",sp="@@@@@@@@@@@@@@@@",sd="@@@@@@@@@@@@@@@@",hh="@[email protected]@[email protected]",},3={cy="@@@@@@@@@@@@@@@@",bd="[email protected]@@[email protected]@@[email protected]@@[email protected]@@",pc="@@@@@@@@@@@@@@@@",sp="@@@@@@@@@@@@@@@@",sd="@@@@[email protected]@@@@@@[email protected]@@",hh="@[email protected]@[email protected]",},4={cy="@@@@@@@@@@@@@@@@",bd="[email protected]@@[email protected]@@[email protected]@@[email protected]@@",pc="@@@@@@@@@@@@@@@@",sp="@@@@@@@@@@@@@@@@",sd="@@@[email protected]@@@[email protected]@[email protected]@@",hh="@[email protected]@[email protected]",},5={cy="@@[email protected]@@[email protected]@@[email protected]@@[email protected]",bd="[email protected]@@[email protected]@@[email protected]@@[email protected]@@",pc="@@@@@@@@@@@@@@@@",sp="@@@@@@@@@@@@@@@@",sd="@@@[email protected]@@@[email protected]@[email protected]@@",hh="@[email protected]@[email protected]",},6={cy="@@[email protected]@@[email protected]@@[email protected]@@[email protected]",bd="[email protected]@@[email protected]@@[email protected]@@[email protected]@@",pc="@@@@@@@@@@@@@@@@",sp="@@@@@@@@@@@@@@@@",sd="@@@@[email protected]@@@@@@[email protected]@@",hh="@[email protected]@[email protected]",},},b1={1={st="@@[email protected]@[email protected]@[email protected]@@[email protected]@",nt="\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*",},2={st="@@[email protected]@[email protected]@[email protected]@[email protected]@",nt="\*\*\*\*\*\*\*\*\*⁙\*\*\*\*\*\*",},3={st="@@[email protected]@[email protected]@[email protected]@[email protected]@",nt="\*\*\*\*\*\*\*\*\%⁙\*\*\*\*\*\*",},4={st="@@[email protected]@[email protected]@[email protected]@[email protected]@",nt="\,\,\,\,\,\,\,\,\,‖\,\,\,\,\,\,",},5={st="@@[email protected]@[email protected]@[email protected]@[email protected]@",nt="\-\-\-\-\-\-\-\-\-◀\-\-\-\-\-\-",},},},pat_patch=":\/@\&@#@\$^\$\*\#█@゛█@#@8_\$\$\$\#'/[email protected]@@\#\#\$\[email protected]|@@[EO[[email protected][email protected][email protected]@@\'fj゜\)D",song_mode=true,samp="\#",tl={loop_len=4,bars={1={t0="8▮@\&@#9\$^\$\*\#█9゛Ik#@'_\$\%\$\#'/[email protected]@@\#\#\$\&@|@@[@A?K,'[email protected]@@@\'fj゜\)D",ev={},},2={t0="8▮@\&@#9\$^\$\,\#█9゛Ik#@'_\$\%\$\#'/[email protected]@@\#\#\$\&@|@@[@A?K,'[email protected]@@@\'fj゜\)D",ev={},},3={t0="8▮@\&@#9\$^\$\*\#█9゛Ik#@'_\$\&\$\#'/[email protected]@@\#\#\$\&@|@@[@A?K,'[email protected]@@@\'fj゜\)D",ev={},},4={t0="8▮@\&@#9\$^\$\+\#█9゛Ik#@'_\$\%\$\#'/[email protected]@@\#\#\$\&@|@@[@A?K,'[email protected]@@@\'fj゜\)D",ev={},},},loop=true,loop_start=1,def_bar={t0="@\#@\&@█@\#\#\$\$\[email protected]@@@@@@\#\#\$\$\[email protected]@@@@@@\#\#\$\[email protected]○@@@@@@@@@@@@@@@@@@\%@@█\$█",ev={},},},}

Updates

  • 2022 April 25 (beta 3) - better handling of changing delay time, level compensation for filter resonance, drum sound tweaks, minor UI improvements, early draft of a manual!
  • 2022 April 16 (beta 2) - fixes to overdrive, output saturation, and the synth filters. Filter resonance goes much higher now, overdrive kicks in more smoothly, and output saturation is gentler.

Features

  • Two vaguely 303-inspired monosynths
  • One vaguely 808-inspired drum machine
  • 16 step pattern-based sequencer with slide and accent steps
  • Pattern mode for real-time tweaking and song mode for recording your work
  • Almost every control on the screen can be automated in song mode
  • Per-synth overdrive insert effect
  • Tempo-synced delay with 16th, triplet, and dotted-16th lengths
  • Routable pattern-controlled lowpass/bandpass filter (like ReBirth's PCF)
  • Master compressor to get the most out of your 8 bits of dynamic range
  • Soft saturation on the output in case you try to get too much dynamic range
  • Drum machine includes a sample playback channel
  • Audio export
  • Save/load functionality using the system clipboard (doubles as an easy checkpoint feature)
  • Tooltips for most controls (can be turned on/off)
  • Pico-8's PCM output filter is disabled so you can pretend that you have high frequencies

Requests

If you're willing to give feedback:

  • What sorts of help, docs, or learning material would be most helpful? I know Rebirth's model may not be the most intuitive, but I'd still like to smooth the path as much as I can.
  • Are there any small-to-moderate-size features or usability tweaks you'd find helpful?
  • Any notes on parameter tuning or scaling? Any dials with ranges that are too high, or too low, or with weird curves?
  • Sound quality is always going to be, uh, limited in this context, but if you notice anything that seems like it should be fixable (obvious bugs, compressor's hardcoded attack/release times are awful, etc.) I'd love to know.
  • Are there patterns I should add to the filter? Not all the existing ones are good, and I think there are some other possibly-useful patterns or categories.... If you want to hack things in, search the code for svf_pats.
  • Tell me about bugs!
  • Share your songs!

Known Issues

  • On my machine (arm64 Mac) Pico-8 audio can become choppy because of all kinds of things - it's most notable when the Pico-8 window is completely obscured by other windows. It can also happen if the Pico-8 window is on an external display with certain refresh rates. I assume this is out of my hands but it'd sure be nice to fix.
  • The synth accents don't behave very much like 303 accents, and I'd like to fix this.
  • Some control scalings are wonky - the resonance on the routable filter is one of the worst culprits, it's too insensitive at low values and way too sensitive at high values.
  • Sometimes the mouse drag state will "jump" when you click a new control.
  • Saving/loading files with large samples can be slow.

Compatibility Notes

Web

This works mostly fine for me on Chrome on Windows - I can't get pointer lock to work, so drags are confined to the window boundaries, and audio export is no good, but otherwise it seems fine.

Chrome, Firefox, and Safari on my arm64 Mac are all not great - PCM output is glitchy (this is true for other PCM carts too) and Pico-8 interprets pasted documents as keypresses instead of loading them into its clipboard buffer.

Future RP-8 Versions

Do not expect your songs to sound the same, or even to load, in future versions of RP-8! I might change all kind of things. The cart is very small, please save it if keeping access to your work is important to you.

Buggy and Incomplete Dev Version

Here's the very-most-up-to-date cart as of April 28, 2022. Not everything works, and there are bugs (try the accent knobs). Saves are not compatible with the beta above, and if I add independent oscillator sequencing this weekend that might break the save format again. Hopefully the format can stabilize for a bit after that though.

Cart #rp8-4 | 2022-04-28 | Code ▽ | Embed ▽ | No License
22

Thanks

... to the #music-sfx channel on the Pico-8 Discord for putting up with me on this one. :) Especially @packbat for consistent encouragement and @bikibird for the very useful Defy tool.

P#109822 2022-04-07 09:01 ( Edited 2022-04-28 14:09)

1

Okay, that's very cool. Haven't seen much audio playback around here. I wanna use it in one of my songs. (if I had motivation right now of course)

P#110245 2022-04-14 17:38
:: luchak

@aKidCalledAris Thank you! If you end up making anything with it let me know, I'd love to hear it.

P#110338 2022-04-16 22:28
:: luchak

I'm pretty happy with this little sketch. More oscillators = more possibilities! Hoping to have the version in this video out this weekend.

P#110987 2022-04-28 07:15 ( Edited 2022-04-28 07:29)

This is amazing, do you have the source code hosted anywhere?

P#112052 2022-05-19 19:50
:: luchak

Thanks! You should be able to grab source out of the carts - it's not the most readable code I've ever written unfortunately. I'll probably put up a Github repo or something at some point, especially since I'll have to start running the cart through a minifier soon, but for now just looking at the cart is probably the best thing.

P#112062 2022-05-19 23:33
:: Xeonic

i love it! love the way it sounds, want to use it's music in my games.

P#113027 2022-06-11 17:40
:: luchak

Thanks! Unfortunately it’s pretty heavy on both token count and CPU, as you’ve probably noticed. I’ve considered trying to pull out the playback engine but even with significant sound quality sacrifices it’d probably be at least 3k tokens and 30ish percent CPU, which I’m not sure is worth the effort (the code factoring could be better).

P#113119 2022-06-13 14:39 ( Edited 2022-06-13 15:58)
:: Xeonic

unfortunate, thank you for the reply.
i wish pico's built in music was this.

still absolutely impressive work.
and you can hardly tell the low fidelity in most cases

P#113120 2022-06-13 14:47 ( Edited 2022-06-13 16:38)

I have no clue what I am doing but I have been playing this game for the entire night. 10/10

P#113515 2022-06-23 01:57

[Please log in to post a comment]

Follow Lexaloffle:        
Generated 2022-06-26 02:40:44 | 0.019s | Q:26