Hacker News new | past | comments | ask | show | jobs | submit login
Pico8 Music Synthesizer (johanpeitz.itch.io)
252 points by winkywooster on Dec 22, 2022 | hide | past | favorite | 52 comments



Thanks for the lovely comments! I'm the creator of picoSYNTH and it was a really fun project to work on. I don't have much experience in synths so it was a big learning project for me.

If there are any questions around the program, just let me know!


If you like the picoSYNTH aesthetics I've also made a 3D modeller with similar looks that might be interesting to check out: https://johanpeitz.itch.io/picocad

Nothing I've made has ended up on Hacker News before so I'll also take the opportunity to shamelessly plug my Patreon if someone want to support my work. :D https://www.patreon.com/johanpeitz


This is like VCVrack meets Hainbach in Pico8!


Really impressed! I'll recommend it at once to my musician friends.

Good idea to recommend PicoCAD at the same time, my first thought was, "he does it again!".


Hello Johan!

Beautiful program. I'd love to be able to set different sequence length in the sequencers. then its a great ambient generator.

Really cute!


Thanks! Yeah that’d be nice. It’s a challenge to balance flexibility vs simplicity and I tend to go for the latter. You can always change the speed and make some notes longer to get some of the same effects I guess


That is a gorgeous little project! Lots of fun just to try to figure out how it all goes together.


what were some of the biggest challenges when making a synth?


Weirdly, this project started not from the audio end, but with the physics simulation of the cables. Building a synth came later when I needed something to do with the cables. :)

Biggest challenge was that I basically don’t know anything about how synths work in real life, and made up my own way as I went along. This lead to unnecessary rewrites as I needed to sometimes change assumptions that stopped me from progressing.


Very nicely done! cool!


My first "synth" was the Korg DS-10 software on a DSi.

It was very basic but let me familiarise myself with the basics of subtractive synthesis.

This project instantly made me think of DS-10 and VCV Rack.

Something in between this project and VCV Rack would be a fantastic tool for teaching synths to kids that can't yet be trusted with a real (expensive) synth.

It's a lot of fun to play with! This is a neat project!


> teaching synths to kids that can't yet be trusted with a real (expensive) synth

Over the years I've come to the conclusion that kids are about as trustworthy as adults with expensive gear, as long as you instruct them properly and point out that it is irreplaceable. I give my kids free reign on the stuff here including workshop tools and instruments, usually I'm around in the beginning to help out and keep them safe but once they have the routine and have proper fear of anything dangerous there isn't much point in hovering over them. So far so good, all fingers, toes, eyes and limbs accounted for. And all the stuff also still works. The adults however...


This is very cool!

I've been wanting to play around with synthetizers / trackers (?) for a bit. I played around with TIC-80 (another fantasy console like PICO-8) amazing track + SFX editor, but I'm very lost as to how to actually make... music, instead of noise.

Does anyone have any beginner resources on music theory, specifically oriented to working with synthetizers and trackers?


You might be interested in the Dirtywave M8. If you don’t want to buy or wait for the actual hardware, you are able to install the software yourself and run it in headless mode.

https://dirtywave.com/

https://github.com/Dirtywave/M8HeadlessFirmware

You might also look at Pure Data and Max.

https://puredata.info/

https://cycling74.com/products/max

In terms of actually making music, I think that probably just comes with both practice and experimentation.


Better start with something like Ableton. Tons of tutorials on youtube and the interface makes it much more clear what is actually happening.

These trackers are built around the limitation of old computers, some people prefer working that way because that's how they started but I wouldn't bother with them as a beginner nowadays. Some DAWs like reason try to emulate a real studio with cables and all, simmilar to this pico-8 app, but again, if you never worked in a real studio why would you bother?

The only "real" classical music theory you need to know is Scales, the bigger chunk will be knowledge about digital audio production. Synthesizers, compressors, filters, ... that information is also plenty available on youtube.


If you want to learn to create sounds from scratch then maybe you should try a virtual modular synthesizer like VCVRack. It allows you to connect oscillators, filters, envelope generators together with patch cables.

If you want lower-level stuff and program a synth manually, then you can try PureData, but it might be too low-level for you and require dealing with math equations and algorithms. Also, its GUI is a little outdated.

If you want to know how certain sounds are created, you can look for tutorials or Youtube videos. Or you can take any virtual synthesizer, choose the preset you like and see how it's made. You can disable units one by one and see how it changes the sound. For example, you can take Dexed or Surge, both of which are free.

Of course, beforehands you have to learn the basics (what kind of waves are there, what is a spectrum, an envelope, how filters work and so on).

Regarding music theory, I think that tracker or 8-bit music uses standard notes and chords and you don't need any special music theory for it. Also if you can hear the notes then it will help you a lot. A good ear is important because it helps you to hear what is wrong with the sound and how to fix it.

Also, a desktop DAW like Ableton (which is recommended by neighbour comment) might be easier to use than a tracker.

Also, you can listen to the melodies you like and reverse-engineer them, if they are available in a tracker or MIDI format.


I found this video very helpful, since it avoids a lot of the music theory lingo, but at the same time explains the basics very well (while cutting some corners...): https://www.youtube.com/watch?v=qoeHDN2FVTc


Also I find this YT channel very helpful, the video about substractive synthesis is probably a good starting point: https://www.youtube.com/watch?v=JfJ9Dbjz6cs


I haven't worked on it in a while, but you might like textbeat (https://github.com/flipcoder/textbeat). It's a midi tracker and REPL that lets you type in music theory-like terminology and plays it. It's nowhere near a modern DAW but it's cool for tinkering and learning.


Johan Peitz is an amazing creator.


Yay yeah he is! I remember playing Icy Tower for hours! [1]. Love his game designs and aesthetics. If I get it right, I first came in contact with his work when I was learning allegro [2], but TBH I'm not sure now. I think he used to use allegro in some of his games!

1: https://en.wikipedia.org/wiki/Icy_Tower

2: https://www.allegro.cc/


Aw thanks! Yes, allegro was my first foray in to making games in c. Used it extensively 98-02 iirc. :)


I spent countless hours on Icy Tower and Operation Spacehog. Thanks for those. :)

I'll also have to admit I stole a sprite or two from Spacehog for my own little horizontal space shooter as a teenager, hehe...


Haha, youre welcome. Hope you put the sprites to good use!


I had a tendency to not finish most games I started, as my approach to game development was rather unstructured. This was one of those unfinished games. Looking at it 16 years later, it's quite a few sprites that I copied :D https://sagagames.de/bilder/screenshots/fruit4.png I wasn't very graphically inclined, so most of the graphics in that screenshot were actually lifted from a handful of games (which were mentioned in the credits of course). At least the spaceships and enemies I drew myself (which shows)... The screenshot shows a randomly generated endless level. I started building a level editor but that was the point where I stopped developing that game.

So, not sure I put it to good use. But it was a lot of fun. :)


Who knows, your game may become the next internet sensation haha [1].

1: https://www.youtube.com/watch?v=8N5hgp0SMwM


This is super cool! It works well on my M1 Mac.

The example switching seems to be buggy: once I switch on the sound, it cannot be turned off.

BTW I am also developing a music programming language here: https://glicol.org/

It also works as a NPM library for building synth/music apps in browsers: https://glicol.js.org/


This looks so cool!

This alone:

> picoSYNTH 1.1 (Linux) 757 kB

Is really remarkable these days.


Even better is that most of that should be the PICO8 virtual machine itself. A PICO8 cartridge is limited to 32kb.


I don't think it contains the VM at all, but contains a bunch of extra files including an image and a LICENSE file that aren't actually part of the binary.


I've just looked at the binary and it definitely includes a large runtime.

Some strings from the binary:

head cart not found download timed out downloading.. cancelled /temp- catsub could not find cart could not fetch cart downloading.. ok loaded #%s (%d chars) could not connect to bbs could not load cartridge data is corrupted * failed to save screenshot saved screenshot to desktop set video starting point * failed to save video joystick %d connected joystick %d disconnected %d %d %d %d %d %d %d %d %d %d %d %d %d // Location of pico-8's root folder // Location of cartridge save data // Specify which player index joystick control begins at (0..7) // Custom keyboard scancodes for buttons. player0 0..6, player1 0..5 // Play notes as they are plotted in frequency mode // iff 1: when using keyboard cursor, snap to closest pixel / map cel // 0 default 1 dark blue background in code editor 2 black background in code editor 3 gray background in code editor // scale of screenshots and gifs // 2 means 256x256 // maximum gif length in seconds (0..120; 0 means no gif recording) // when 1, reset the recording when pressing ctrl-9 (useful for creating a non-overlapping sequence) // 0 for off. 1 for auto. 2 to allow control of a cart's framerate due to host machine's cpu capacity // 0 off 1 on (exclude cartridge tagged as 'mature' by community) // tab display width (1 ~ 4 spaces) // 0 off 1 on: draw tab characters as small vertical lines // 0 off 1 on: record the current cartridge and editor view every 3 seconds (see [appdata]/activity.log.txt) // 0 off 1 on: allow F6..F9 (alternative: ctrl 6..9) // 0 off 1 on: automatically check for a newer version of a BBS cart each time it is run. // hide mouse cursor for n seconds when typing. // 0 off 1 on: backup with a new timestamped filename on every run // normally not needed -- was used for debugging crash-on-run // back up cartridge in editor every n minutes when not idle (0 for no periodic backups) // global screen transformations: // 134 rotate CW 180 degrees // 135 rotate CW 270 degrees // 0 off > 1: colour to draw pixel grid in the gfx editor at zoom:8 and zoom:4 (16 for black) stopped. press button to exit future version. please update! no video recorded (rec: ctrl-8) saved %d second gif to desktop reset cart volume: 01234567update cart volume: (ctrl-/+) legacy: 0.1.1 api injected print("archeos",98,34,7) %s%s.p8%s %s%s%s.p8 found not found could not compress code hexdump %d bytes to clipboard writing %d bytes (code only) writing %d bytes pico-8 cartridge last_run.p8 loading future cart version future version: %d


It does.


This is amazing. I love how the cables are animated


Thanks! That’s actually where this project started. The synth part was added to get some meaning to it :)


That is hilarious.


Intel only or arm support for linux?


pico8 has a raspberry pi release so most arm linux setups should work. I've gotten pico8 running using AmberELEC (https://github.com/AmberELEC/AmberELEC) + RG351 (https://www.amazon.com/Handheld-Console-Portable-Classic-350...) which is arm linux.


picoSYNTH is made with pico8 which (afaik) only supports intel. Haven't tested anything else myself.


unfortunately don’t have permission to download, but love the style very much! hopefully i’ll remember to try it out in the future when i get a chance


What's up with the difference in name? Program seems to be called picoSYNTH not pico8?

Pico8 if meant to be like perculate is actually a nice pun for modular style synthizers.


Pico8 is a platform for game development, it emulates a fictional 8 bit console with era-typical limitations on memory, display resolution and colors, etc...


Ah that's ashame for the indy dev that they promoted the platform in the link and not the actual application.


Amazing, sharing with students now


Impressive.


This is such a backward way to make music. Sorry to be critical but the point of musical software is to help the musician, and not hinder him with complications

For example take a look at ableton live, it changed the music panorama worldwide because even a 12 year old kid from united kingdom can create grime music with it

It's not pixelated, like yours.


I suspect a free modular synth app developed for an 8-bit fantasy console is not really aiming to replace a $500 professional DAW.


Are you trolling? It's just a toy for messing around, it's not that serious


Not everything has to be simpler/better/faster/easier.

Music makers/artists need constrains/influences and some times to mix things up by taking a harder/weird approach.


Right? Why would people even learn to play the trumpet, violin or clarinet these days if they can just simulate it on fruity loops...


I am not a user of Pico8, and probably never going to use this app, but wanted just to comment on usability.

Judging by demo videos, I think that the UI is not very efficient. For example, let's count how many gestures an user has to make to add an oscillator and connect it to a speaker:

- click "+"

- carefully read the menu, locate and click "oscillator"

- maybe drag the oscillator to a desired location

- click "+"

- carefully read the menu, locate and click "cable"

- drag the cable to the oscillator

- catch another end of the cable, which is swinging and trying to escape from your mouse cursor

- drag it to a tiny speaker's socket

This takes too much time. I believe the UI can be significantly improved. Or maybe this can be turned into a game where the devices are playing against you, jump and crawl trying to escape from you (but you can bind them with cables), and so on.

Also, "+" button is too close to a trash button, and it is easy to accidentally click it.


Thanks for the feedback, appreciate it.

I can totally understand where you’re coming from, but the program is not designed to be efficient. I think of it more as a toy, or and interactive machine that you can figure out how it works. The fact that you can make loops and beats with it is almost a bonus.


Oh this is a trash ... I thought it was a keyboard icon that would allow me to setup a midi keyboard but was non-functioning.

Yeah adding a cable is a bit frustrating instead of just adding one when you click on a jack input (like in Reason IIRC).




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: