Log In  

Cart [#37156#] | Copy | Code | 2017-02-04 | Link

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'

midi music tool
P#37155 2017-02-04 17:46 ( Edited 2018-05-17 16:47)


Cart [#34978#] | Copy | Code | 2017-01-05 | Link

P#34979 2017-01-05 02:44


Cart [#32485#] | Copy | Code | 2016-11-15 | Link

P#32486 2016-11-15 02:51


Cart [#22286#] | Copy | Code | 2016-06-04 | Link

poke(0x5F2D, 1)

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.

P#22278 2016-06-04 16:17 ( Edited 2018-03-23 06:34)


Cart [#21625#] | Copy | Code | 2016-05-29 | Link

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.

P#21056 2016-05-21 23:05 ( Edited 2016-06-21 12:04)


Cart [#20057#] | Copy | Code | 2016-04-29 | Link

Cart [#20069#] | Copy | Code | 2016-04-29 | Link

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.
8% better

Added circles
Fixed left/right pixel scrolling: the encoder was outputting garbage due to a typo.

P#20028 2016-04-27 23:29 ( Edited 2017-04-29 15:23)


Cart [#19319#] | Copy | Code | 2016-03-19 | Link

Old versions:

Cart [#19303#] | Copy | Code | 2016-03-19 | Link

Cart [#19297#] | Copy | Code | 2016-03-18 | Link

Cart [#19295#] | Copy | Code | 2016-03-18 | Link

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

P#19296 2016-03-18 22:28 ( Edited 2016-12-12 00:43)


Cart [#17561#] | Copy | Code | 2015-12-06 | Link

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.

P#17562 2015-12-06 16:27 ( Edited 2016-05-06 17:17)


Cart [#17544#] | Copy | Code | 2015-12-06 | Link

Still working on it, but it's gotten to the point where all major features have been implemented and it's winnable.


You're solving a bomb with a certain number of digits (depending on how many you choose), by rewiring and replacing modules. How hard could that be?

Panel overview:
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 ...

The circuit:
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

P#17498 2015-12-04 21:53 ( Edited 2017-03-30 01:24)


Cart [#21201#] | Copy | Code | 2016-05-23 | Link

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.


Update 1.0.2b:
Fixed bug with reset causing the cartridge saving icon to appear.
b: Restore btn on reset

Update 1.0.1a:
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

Update 1.0.0:
The original version.

Older Versions:



P#16866 2015-11-21 23:37 ( Edited 2016-05-23 20:07)

:: More
About | Contact | Updates | Terms of Use
Follow Lexaloffle:        
Generated 2018-11-14 00:08 | 0.604s | 1835k | Q:139