Log In  

New since last time:

  • Antialiased the synth oscillators instead of relying on oversampling + the synth filter to handle the job. This makes high notes much clearer and overall more usable.
  • Toned down the filter aggressiveness. This makes it less fun, I think, but higher resonance ranges were really, really scratchy with all the aliasing that was happening. The less aggressive filter is much better behaved in this regard.
  • Added a file menu with rename/save/open folder/clear. This was so (a) I could move save files off the desktop and into the RP-8 folder, and (b) so if and when I add demo content, the user can easily get a clean start.
  • (beta 9b) Added "paste sound" command that leaves patterns alone
  • (beta 9b) Enabled tooltips by default and started persisting tooltip state to cartdata

I'm down to 60 tokens left and I don't have a lot of ideas for how to get more, so I think we're probably getting close to release here. There are still a few bugfixes / behavior improvements I'd like to make (e.g. make the red kick more 808-ish) but not many - then it's fixing up the docs and putting up an Itch page.

Feedback is always welcome! Here is a link to a demo loop for the new version. Drop it onto RP-8 to load it. (May not work on the web, definitely works on desktop Pico-8.)

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-18 | 2022-09-23 | Code ▽ | Embed ▽ | Forks ▽ | No License
33

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

RP-8 now has in-app tooltips (enable with T) and a hotkey reference / help screen (view with H).

For more info, see the draft manual with updated tutorial section! (Reference section still to come...)

Updates

  • 2022 September 19 (beta 9) - antialiased oscillators, toned down filter harshness, file menu.
  • 2022 September 11 (beta 8) - vastly improved synth filters, secondary drum sounds, help screen, more hotkeys, song naming, paste-to-control, overdrive bias -> overdrive shape, many tweaks and optimizations. (beta 8b) Updated user guide, next/previous bar hotkeys.
  • 2022 August 6 (beta 7) - overdrive bias control, improved kick decay range, improved hat sound, performance optimizations. (beta 7a) Toasts and UI bugfixes. (beta 7b) Visual improvements, better FM ratio knob scaling, better save compatibility, more hotkeys.
  • 2022 July 21 (beta 6) - lots of constant tweaking and sound adjustments. More filter overdrive, more low end, punchier kick, lots more.
  • 2022 July 17 (beta 5) - removed synth attack knob since it's not being used, reduced low cut on the synth oscillators. (beta 5a) Tweaked overdrive gain compensation. (beta 5b) Fixed page button.
  • 2022 July 15 (beta 4) - removed sample loading and playback, save song files to both desktop and clipboard, drop song file to load, improved synth knob graphics, variable pattern lengths (with awful UI), 2-op FM drum track (control ratio with tune knob, control pitch with chromatic drum sequencing), individual drum track FX bypass, chromatic drum sequencing, second synth oscillator with chromatic sequencing.
  • 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
  • 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. (This is much better with the new filter but it's still meh.)
  • Sometimes the mouse drag state will "jump" when you click a new control.
  • Controls that are hidden on page switch do not lose focus as they should.
  • High synth resonance plus high cutoff and high notes can cause awful aliasing.
  • Overdrive sound is sometimes too warm - I'd like to make it a little harsher and colder sometimes, but keep it crisp.
  • Red kick should be more 808-ish.

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.

Code

Since the cart is now minified, I've posted the original source at https://github.com/luchak/rp8 . I have not added a license yet, but if there's anything you want to use please get in touch!

Thanks

... to the #music-sfx channel on the Pico-8 Discord for putting up with me on this one. :) And to @thisismypassport for the now-essential-to-this-project shrinko8 minifier.

P#109822 2022-04-07 09:01 ( Edited 2022-09-23 01:50)

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
1

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
1

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)
1

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
:: Xeonic
1

love it
been having some real fun with this one.

P#114507 2022-07-18 12:42 ( Edited 2022-07-18 13:17)
:: luchak

Really glad you're enjoying it, Xeonic!

One question for anyone who's used this (also asked on Twitter): the first percussion channel ("PC") is a swept sine, like the kick but higher, theoretically usable for tom-ish / rimshot-ish things. But I just don't use it that much. I'm wondering if I should replace it with something a little more interesting:

  • Same thing, but with a square wave?
  • A square wave with a lowpass gate instead of an exponential amplitude envelope?
  • Ring modulation but where the tune knob controls the frequency of the modulator? Very low frequencies, low enough that you just get the falling part of the modulator, could still act tom-ish, though you'd have to control pitch via the pattern sequencer in this case...

Have others found that channel more useful than I have? Is there a controllable-with-two-knobs drum voice that you'd like to have instead of that channel?

P#114518 2022-07-18 17:25
1

I think I used the PC channel in the one piece I made as a bit of sound candy - listening back to it real quick, I remember that being prominent in the mix at one point near the end of the arrangement.

I don't have strong opinions about replacing it with something else if you think that would be more useful, though.

P#114532 2022-07-19 00:13
:: luchak

Good to know, thank you! As I play around with it a bit more I'm leaning towards keeping it - I think some of the non-user-accessible parameters may need a bit of tweaking, though. Something about the frequency sweep range or speed sounds wrong to me as I listen to it more.

It's not an up-front kind of sound, but not every sound should be!

P#114538 2022-07-19 05:50
:: IMLXH
1

Oh my god, I love this. Can I use this to make an entire EP/live set with? Like...I am ASTONISHED at how well the compressor works. Is it dirty? Absolutely. But so's the Alesis 3630. This is...a legitimately useful musical tool. Great job omg

P#115257 2022-08-05 00:47
:: luchak
2

@IMLXH Please use this for whatever you like! I've made whole tracks with it, so an EP seems possible. (Have I made good tracks with it? Let's not get ahead of ourselves...)

Do save the exact cart version for any tracks you're working on - I have a couple changes coming that might break the save format. Hopefully: global overdrive tone control, some more knob parameter range/behavior changes, and probably letting you switch the pattern for each drum track independently instead of lumping all drums into the same pattern? I'm desperately trying to get myself to stop making breaking changes and call this 1.0 but I'm not very good at that.

Also, I'm so happy you called out the compressor. That code is a borderline crime against music, it is 100% linear and has never heard of a decibel, but it does (mostly) work! An improved log-scale compressor might barely, barely be inside the CPU budget if I generate some tables on startup, but there is so little CPU left... Hm. Like I said, I'm not good at locking down the spec. :)

P#115263 2022-08-05 04:02
:: IMLXH
1

@luchak hey, I'm not gonna blame you for that. I made a crappy little "vaporwave generator" in Max/MSP once that I put on my itch.io, and once people started coming in with suggestions I was just like "dammit, I can't implement these without basically entirely revising the code", so I Get It. I've also played around a bit with the original version of ReBirth, and I know some parameters have a "legacy mode" so that older projects can sound the same as they did even after DSP revisions. Maybe that would be worth putting in for the compressor? Though I have no clue whether the EXTREMELY small space of P8 carts would allow that.

https://soundcloud.com/imlxh/rp-8-beta-6-1 By the way, here's a track I made with it yesterday. Mixing live with a mouse is...not ideal for someone who generally uses MIDI controllers, but honestly you made it work a LOT better than I'd have imagined. Like...you COULD play live with this, with some practice.

P#115272 2022-08-05 16:56
:: IMLXH

Also if you're taking suggestions, I'm...not the biggest fan of the sound of the hi-hat, but I also realize that Pico-8 can't really produce the highest frequencies. But that said, I'd kinda like some way to sequence the decay control so that I can do closed/open hat patterns tbh

P#115273 2022-08-05 17:43
:: luchak
1

@IMLXH Oh nice, that's a different track than the one you posted on Discord? Really love what you're doing with it!

The hihat sound is really hard to improve, between sample rate and CPU limitations. If you run hihat samples through Defy, most of them will basically disappear, so some creative liberties are basically necessary at this sample rate. I have one more idea (saturate/clip the noise) to make them a little fizzier and less tonal but it definitely won't be a total fix, if it works at all.

Legacy sound modes probably won't happen either due to token limits, sadly.

P#115314 2022-08-06 16:03
:: IMLXH

@luchak Hm. Has anyone made any sort of documentation about Pico-8's DAC? Because all I know about the sample rate is that it's sooomewhere under 8kHz, no clue about bit depth but I'd imagine it's Not Much.

P#115317 2022-08-06 18:40
:: luchak
1

5512 Hz 8-bit mono!

P#115320 2022-08-06 19:36

Got a crash when trying to drag & drop the demo song:

P#115653 2022-08-12 13:43
:: luchak

@freds72 Thanks for pointing that out! I've updated both the current cart version and the save file so they should work together. The cart should hopefully also break the save format less going forward....

edit: whoops, had wrong permissions on new sharing link. Fixed!

P#115658 2022-08-12 15:53 ( Edited 2022-08-12 17:43)
1

Damn, what a great tool! Somebody should do a live show with it. Maybe output the clock via GPIO and use it as a master clock in a midi setup?
Great fun!

P#117570 2022-09-17 10:41
:: luchak
1

@taxicomics Thank you! Absolutely nothing would make me happier than hearing about someone doing a show with this. :)

I'd love to find a way to get this syncing to other software. Unfortunately I feel like the web experience isn't great - no pointer lock, flaky audio on some platforms, inconsistent copy/paste - and as far as I understand GPIO isn't surfaced for native builds other than Raspberry Pi and PocketCHIP.

I guess I could overwrite a file every frame? Seems hacky and I'm worried I'd hit a PICO-8 too-many-files limit... Maybe though?

Also, if I'm wrong about GPIO and it is available on the desktop somehow, I'd love to know!

edit: Or, as @merwok pointed out on Discord, I could just use serial output and/or printh. Files and pipes!

P#117579 2022-09-17 17:17 ( Edited 2022-09-17 17:48)

This project is really impressive. Keep it up!

Feedback version 9B:
the newly added menu on web does not work properly, I must press start and then again to be able to move once up and down (and then I must repeat the process or I have no control over the synth anymore).

Suggestion:
Is it possible to add a button to "jam"? The ability to select the notes and press them to hear the sound without a loop or while the loop runs? Combining sequencer and live jamming would be mindblowing. Just a thought :). If I'm not mistaken you use 3 of the 4 max. channels for the synth?

How the project goes further is kinda a guess, but what you've done with it already is pure gold!

P#117896 2022-09-24 08:16 ( Edited 2022-09-24 08:19)
:: luchak
1

@Fumetsujo thanks for the feedback! I can't reproduce the menu problem you're seeing on the web version - pressing enter on "go back" works for me? Also, unfortunately, web compatibility is not great on a number of other fronts for reasons mostly out of my control, so if you have a copy of Pico-8 it might be better to download the cart and run it there.

The jam idea is great! I might be too low on tokens right now to make it work but I'll think about whether there might be a way.

> If I'm not mistaken you use 3 of the 4 max. channels for the synth?

This is all using the PCM output, none of the built-in audio machinery. Very close to the CPU and token limits now though.

P#117959 2022-09-25 19:50 ( Edited 2022-09-25 20:49)

[Please log in to post a comment]

Follow Lexaloffle:        
Generated 2022-09-28 13:46:49 | 0.113s | Q:56