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
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
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.
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...
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.
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
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.
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!
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. :)
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
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...
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
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.
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.
If there are any questions around the program, just let me know!