Hello there, I've been working on this piece of software called midi2pico
It does what it implies, converts midis into music for pico-8
I've recently just added proper drum support, so in celebration of that I want to release this little demo.
Come checkout midi2pico at github: https://github.com/gamax92/midi2pico
It's a very configurable midi conversion program, with the ability to mute channels, change volumes, and to shift pitches to fit into pico-8's audio range. midi2pico attempts to arrange midi data in a logical way, storing the beginning of a song at sfx 0 and the end of the song near the end of available sfx.
MIDI Format 0, pitch bends, sfx deduplication, silence removal, and now drums are supported. A midi instrument and drum to pico-8 translation table is supported, though not very populated and most instruments use a default conversion. Look for 'Instrument to PICO-8 Map' and 'Drums to PICO-8 Map' inside midi2pico.lua
A separate utility is also included for debugging midi files called midi2note. midi2note shows the end result after midi2opus, opus2score, and score2note conversions that midi2pico also uses.
Installation is easy, all you need is lua 5.2 and the MIDI library, which is available in luarocks as 'luarocks install midi' or download the MIDI library directly here and place it along side midi2pico.lua
lua 5.1 is also supported, but you will need a bit32 backport which is also available in luarocks as 'luarocks install bit32'
stat(32) -> X coord
stat(33) -> Y coord
stat(34) -> button bitmask (1=primary, 2=secondary, 4=middle)
You should probably limit yourself to using the primary button, not everyone has a middle mouse button and dunno how secondary button would work on a touch device. You should also be using the mouse to enhance a program, not for it to be the only control, or else you make it so anyone lacking a mouse on whatever device they're playing PICO-8 on is unable to use your cart.
EDIT: apparently it doesn't work that well on a touch device, atleast PocketCHIP:
"I tested the mouse support on PocketCHIP. It didn't work well. It seems to cannot detect mouse release (touch up)." ~ oinariman
A cheap way to do mouse press/release is to store the result of stat(34) in some variable at the end of the frame so that during the next one you can see if they differ and then respond on that.
Mostin's having a Meltdown, can you help him locate his car keys?
He told me he lost them down out back near the barn gate, but that's a long long hike.
Over massive mountains and deep valleys, but it's all right, because he'll give you a pay of 60 Noblus!
Worth it, ... right? ... right? ...
EDIT: Alright, final p8jam2 version, I think I've gotten down what I wanted to accomplish.
Decided to write an encoder for 128x128, 2 color, 1 pixel scrolling, and one rectangle per frame
After a bit of tweaking, it outputted this. Some parts of the video are entirely unrecognizable and just look like jittery boxes sure, but it's interesting.
Ignored the data for left and right scrolling, it's invalid.
Regenerated a new rectangles version with valid scrolling data + the extra tweaks.
Fixed left/right pixel scrolling: the encoder was outputting garbage due to a typo.
It's a spinning globe.
Brightened things up a bit!
Fixed a warping issue
Increased the horizontal resolution of the map
Added the vertical spherical distortion to go along with the horizontal
Made the globe spherical
Fixed the jittery issue
Got bored and wrote a textured wall renderer.
If you really wanted to you could simply replace sspr with line and have a colored wall renderer.
Still working on it, but it's gotten to the point where all major features have been implemented and it's winnable.
You'll view a grid of 4x5 panels, each corresponding to an element in the number, as you solve circuits, the panels will change to green and represent a part of the number. When you're confident in what the number is, press X and select the number. You can only do this when you've solved two circuits. Each panel must be guessed correctly to win the game, and if you guess incorrectly ... well ...
Pay attention to what flashes briefly, as it won't be said again until you complete a module. Go from 1st to 2nd to 3rd, cutting each side of the module, removing the old one, and soldering the new one on. When you're "cutting out" the modules, you replace the module you're working on with a wire (the grey rectangle), and if you're "replacing" them, you replace it with one of either same shape or same color. It won't be both, and you might have to try either to figure out what the circuit wants. Once you figure it out, every other module will follow the same rule.
No you can't just cut off a side of the circuit and then resolder it, that won't work.
(Havent worked on this in forever so might as well just move it to Cartridges, it's playable at the very least.)
v0.0.2 - 17544:
Fixed bug in number preview causing the wrong sprite to render
v0.0.1 - 17497:
First released version
The object of the game is to blast enemy aircraft out of the sky... and dodge ground missiles!!! Zero in on enemy planes! Bank left, bank right, dive, climb out! Watch your elevation! Keep track of the fuel! Run out of ammo...land and refuel...take off again!
For Your PICO-8 Video Game System
You should download and play it though, the web player seems to break some minor things.
Fixed bug with reset causing the cartridge saving icon to appear.
b: Restore btn on reset
Enemy won't fly so low to the ground
Changed rain effect to lines
Smoothed out rotation
Fixed rain effect when rotating and takeoff
Reduced ground strike effect
Added safe zone
Markers are brightened at night
The original version.