Log In  
Follow
ridgek

Author of Downstream Dream, Star Trek: Killer Q'egh, and TMNT: Shredder's PREvenge OST. Sound designer/programmer for Demi Daggers. Currently making poppy little dance tunes.

[ :: Read More :: ]

The upcoming Pico-8 0.2.6 release will introduce wavetable synthesis via "waveform instruments". Any of this may change before release so I will try to update it as I discover new info about the feature. The waveform instruments are stored in the same sfx indices as regular instruments (0-7) and use a similar encoding scheme to regular sfx:

Bytes 0-63

The first 64 bytes of the sfx contain one signed 8-bit sample per byte. Pico-8 uses signed 16-bit numbers, so signed 8-bit values from -128 to -1 are represented as 128 to 255, while 0 to 127 are represented normally. Signed 8-bit values outside the -96 to 96 range will appear cropped in the visual editor, although it does appear to be possible to draw values in the full range by dragging the mouse cursor beyond the border.

Regarding PCM playback, Pico-8's tracker updates at about 120.4918Hz, and at 64 signed 8-bit samples per cycle, the sample rate would be about 7711.4752Hz. However, because the closest playback frequencies available are A#-0 (A#-2 in standard pitch notation @ 116.54Hz) or B-0 (B-2 in standard pitch notation @ 123.47Hz), it appears that smooth PCM playback will not be possible by stringing waveform instruments together, as waveforms would not have the chance to play exactly one oscillation per tick; instead being slightly cropped or slightly looped (and then cropped). This will result in clipping/distortion, and weird tuning artifacts.


Warning! This cart will not work until the BBS player has been upgraded to 0.2.6!

Cart #fadoniyono-0 | 2024-01-18 | Code ▽ | Embed ▽ | No License
9


Byte 64

Used for editor mode and sfx filters. This byte serves the same purpose as regular sfx and the filters introduced in 0.2.2 can be used with waveform instruments.

Byte 65

If the lowest bit is set (1), the "bass" option will be activated and the instrument will be transposed down one octave. I assume this is similar to poking byte 0x5f40.

Byte 66

If the highest bit is set (128), the sfx will be activated as a waveform instrument.

Byte 67

Unused

P#99633 2024-01-18 05:49 ( Edited 2024-01-31 04:43)

[ :: Read More :: ]

Cart #fairwellfairfriend-0 | 2023-11-20 | Code ▽ | Embed ▽ | No License
30

Hi friends, looks like exciting changes are coming soon. I guess this might be the last song I make before 0.2.6 is out so this is my send-off to Pico-8 audio as we knew it. See u on the other side! πŸ™‚

P#137660 2023-11-20 02:48 ( Edited 2023-11-21 05:28)

[ :: Read More :: ]

Hi friends,

Here's the OST for @freds72's upcoming release, Demi Daggers. Trying to recreate the complex sound design of Devil Daggers and its OST in Pico-8 was a massive challenge. I hope I did it justice, and I hope you enjoy it!


"II"

Cart #devildaggersii-1 | 2023-11-19 | Code ▽ | Embed ▽ | No License
4

Originally composed by Sorath


"III"

Cart #devildaggersiii-1 | 2023-11-19 | Code ▽ | Embed ▽ | No License
4

Originally composed by Sorath

P#137647 2023-11-19 21:52

[ :: Read More :: ]

Cart #nightwave-1 | 2023-08-20 | Code ▽ | Embed ▽ | No License
15

P#133544 2023-08-26 04:15

[ :: Read More :: ]

Cart #modernstyle-1 | 2023-08-14 | Code ▽ | Embed ▽ | No License
9

Originally composed by:
Allister Brimble

P#133056 2023-08-14 16:17 ( Edited 2023-08-17 14:06)

[ :: Read More :: ]

Hi Zep! :)

I'm not sure if this is by design, but it seems printh() resolves paths differently than cstore(), reload(), etc; where printh() does path resolution relative to root_path, while the other funcs resolve paths relative to the running cart.

For example, given the directory structure:

project_dir/
|_dist/
  |_foo.p8
  |_log.p8l
|_utils/
  |_bar.p8

and launching with:

project_dir $ pico8 -root_path ./ ./utils/bar.p8

project_dir/utils/bar.p8:

cstore(0, 0, 0x4300, "./dist/foo.p8") --doesn't write to foo.p8
cstore(0, 0, 0x4300, "../dist/foo.p8") --writes to foo.p8

printh("hello world!", "./dist/log") --writes to log.p8l
printh("hello world!", "../dist/log") --bad log error

I'm not sure which way I think all the funcs should behave, but I'm inclined to say printh() should resolve paths relative to the running cart like the other funcs, because it would probably be less surprises for the user that way.

Anyway, thx for your time!

P#132997 2023-08-13 03:56 ( Edited 2023-08-13 03:56)

[ :: Read More :: ]

Cart #always-3 | 2023-06-22 | Code ▽ | Embed ▽ | No License
22

P#99631 2023-06-23 21:16

[ :: Read More :: ]

Cart #betteroffalone-0 | 2023-06-15 | Code ▽ | Embed ▽ | No License
28

Originally composed by:
Jürgen "DJ Jurgen" Rijkers,
Sebastiaan "Pronti" Molijn,
Eelke "Kalmani" Kalberg,
Judith Anna Pronk

P#90470 2023-06-16 17:07

[ :: Read More :: ]

Cart #galaxyrobo-0 | 2023-06-09 | Code ▽ | Embed ▽ | No License
14

P#80294 2023-06-09 16:31

[ :: Read More :: ]

Cart #hearts_cracked-0 | 2023-04-05 | Code ▽ | Embed ▽ | No License
14

The idea for this cart was inspired by a comment @Liquidream made to me a few months ago. πŸ˜‚ Enjoy your week, everyone!

P#79229 2023-04-05 01:02 ( Edited 2023-04-05 01:15)

[ :: Read More :: ]

Cart #i_wanna_be_okay-0 | 2023-03-30 | Code ▽ | Embed ▽ | No License
24

I hope everyone is taking good care of themselves. Be safe and have a great weekend! πŸ™‚

P#79228 2023-03-30 08:25 ( Edited 2023-03-30 11:24)

[ :: Read More :: ]

Hi friends,

@Wolfe3D recently asked me to do the soundtrack for his fan game, Teenage Mutant Ninja Turtles in: Shredder's Prevenge. With such an ambitious and impressive project shaping up, how could anyone say no? I'll be posting music here and on radico8 as Wolfe3D releases the corresponding game content. The soundtrack will feature seven songs plus assorted jingles. I'll lead off here with a couple covers I couldn't resist trying to make. I hope you like them!

(This is a totally free, totally non-commercial fan project, all intellectual property contained within the content below belongs to its respective owners. Please don't sue me.)

11/15/2023: Added Super Smash Turts, Shinobi Sentai Shellranger, lowercase technodrome, Tin Grin.


Tracklist


Title Theme πŸŒƒ

Cart #tmntsptitletheme-1 | 2023-05-28 | Code ▽ | Embed ▽ | No License
14

Contains arrangements of the 1987 Teenage Mutant Ninja Turtles theme, originally composed by Chuck Lorre and Dennis Challen Brown.


Main Menu: Go Green Machine! πŸ›Ί

Cart #gogreenmachine-1 | 2023-05-28 | Code ▽ | Embed ▽ | No License
14

Contains arrangements of the 1987 Teenage Mutant Ninja Turtles theme, originally composed by Chuck Lorre and Dennis Challen Brown. Cover art is a scan of the NES box art for TMNT II: The Arcade Game.


Arena Menu: Super Smash Turts πŸ’₯

Cart #supersmashturts-0 | 2023-04-11 | Code ▽ | Embed ▽ | No License
14

Cover art is a scan of the Japanese Sega Mega Drive box art for TMNT: Tournament Fighters.


Level 1: Uptown Cat Blues 🎸

Cart #uptowncatblues-1 | 2023-05-28 | Code ▽ | Embed ▽ | No License
14

Contains arrangements of the 1987 Teenage Mutant Ninja Turtles theme, originally composed by Chuck Lorre and Dennis Challen Brown. Cover art is from a Pizza Hut promotional poster for the Coming Out of Their Shells tour.


Boss Theme: Battlehead πŸ’€

Cart #battlehead-2 | 2023-04-09 | Code ▽ | Embed ▽ | No License
14

Controls:

β¬…οΈβž‘οΈβ¬†οΈβ¬‡οΈπŸ…ΎοΈβŽ: Play victory jingle

Contains arrangements of boss themes from the arcade games Teenage Mutant Ninja Turtles and Turtles in Time, originally composed by Mutsuhiko Izumi. Cover art is a scan from the Mirage Studios TMNT comics.


Arcade Theme: Turtle Tokens πŸ•Ή

Cart #turtletokens-1 | 2023-04-09 | Code ▽ | Embed ▽ | No License
14

Contains arrangements of the 1987 Teenage Mutant Ninja Turtles theme, originally composed by Chuck Lorre and Dennis Challen Brown. Cover art is a screenshot from the 1987 animated series.


Level 2: Sewer Surfin' πŸ„‍♂️


Originally composed by Mutsuhiko Izumi. Cover art is a screenshot from the arcade game, Turtles In Time.


Level 3: Shinobi Sentai Shellranger πŸŽ‡

Cart #shinobisentai-0 | 2023-03-17 | Code ▽ | Embed ▽ | No License
14

Cover art is the poster for the 1993 film, Teenage Mutant Ninja Turtles III.


Level 4: lowercase technodrome 🌐

Cart #lowercasetechno-2 | 2023-05-28 | Code ▽ | Embed ▽ | No License
14

Cover art is a screenshot from the 1987 animated series.


Final Boss Theme: Tin Grin πŸ‘£

Cart #tingrin-0 | 2023-05-28 | Code ▽ | Embed ▽ | No License
14

Cover art is a scan from the IDW Publishing TMNT comics.


End Credits: Pizza Power πŸ•

Cart #pizzapower-2 | 2023-04-09 | Code ▽ | Embed ▽ | No License
14

Originally composed by Bob Bejan and Godfrey Nelson. Cover art is a scan of the Coming Out of Their Shells CD insert.

P#79227 2023-02-20 08:20 ( Edited 2023-11-15 15:35)

[ :: Read More :: ]

Hi Zep! :)

0.2.5g: In non-C-style for loops, if a multi-line comment is opened/closed before the first variable declaration, without trailing whitespace before the variable name, it will throw a syntax error. All other situations seem to be okay:

--[[ok]]foo = --[[ok]]{1}

--ok
for --[[ok]]i=0,1 do
    print(foo[i])
end

for --[[ok]] v in all(foo) do
    print(v)
end

for --[[ok]] k, --[[ok]]v in pairs(foo) do
    print(v)
end

for --[[ok]] k, --[[ok]]v in ipairs(foo) do
    print(v)
end

--not ok
for --[[oops]]v in all(foo) do
    print(v)
end

for --[[oops]]k, --[[ok]]v in pairs(foo) do
    print(v)
end

for --[[oops]]k, --[[ok]]v in ipairs(foo) do
    print(v)
end
P#125822 2023-02-13 21:00 ( Edited 2023-02-13 21:02)

[ :: Read More :: ]

On 0.2.5e, the following message is printed to stdout whenever a cart containing any arbitrary meta section is run:

$ pico8 -run test.p8 
codo_free fail 21 0

test.p8:

pico-8 cartridge // http://www.pico-8.com
version 39
__meta:foo__
bar

Carts seem to run fine, so there don't seem to be any other negative effects.

P#124003 2023-01-10 01:44

[ :: Read More :: ]

Cart #runningout-0 | 2023-01-05 | Code ▽ | Embed ▽ | No License
42

Hi, friends!

Here's a demo featuring 5 glorious channels of lo-fi audio! Making a chipbreak-style tune in Pico-8 has been in the back of my mind ever since @carlc27843 discovered the undocumented PCM channel, and now I can finally check this off my list! After almost 2 years! πŸ˜…

All the drums are samples, triggered by watching the tracker with stat(56). The samples are then fed to the PCM channel by monitoring the buffer with stat(108). I'd originally planned on building a 5-channel tracker from this demo, but I had a tough time getting the samples to sync consistently. I'm not sure if that's because of my own shortcomings, or maybe because as @zep literally said, the sync is "not perfect".

For the gfx, the star animations are also triggered by stat(56), whenever a snare sample is played. The road is just one gigantic image using a palette cycle. It looks like this:

Anyway, I had a lot of fun putting this together. I hope you like it! πŸ˜ƒ

Special thanks to @pahammond for GEM, which helped keep this cart under the compressed limit!

P#123686 2023-01-05 01:09 ( Edited 2023-01-09 09:34)

[ :: Read More :: ]

Cart #ruwezumuwu-0 | 2022-12-19 | Code ▽ | Embed ▽ | No License
3

Hi Zep! :) I think I found a bug in one of the more esoteric stat calls?

Bug:
According to the manual, stat(56) should return the number of ticks played in the current pattern. Currently (0.2.5e), it seems to poll the leftmost sfx in the pattern for the count. That makes sense bc the overall pattern length is determined by the leftmost sfx which is not a loop, but as the title says, stat(56) will reset back to 0 early if the leftmost sfx is a loop.

Expected behavior:
stat(56) should return the number of pattern ticks played regardless of looped sfx

Thanks for your time! :)

P#76244 2022-12-19 23:41 ( Edited 2022-12-19 23:43)

[ :: Read More :: ]

Cart #strangersagain-0 | 2022-12-15 | Code ▽ | Embed ▽ | No License
15

I was going to wait to post this until the weekend, but I have no self-control. πŸ˜… Enjoy the rest of your week, everyone!

P#121314 2022-12-15 23:43

[ :: Read More :: ]


P#122267 2022-12-12 01:42

[ :: Read More :: ]

Cart #hangingon-1 | 2022-12-13 | Code ▽ | Embed ▽ | No License
20

Here's another new song! Have a great weekend! πŸ˜ƒ

P#122103 2022-12-09 17:16 ( Edited 2022-12-13 10:51)

[ :: Read More :: ]

Cart #beautifulrunaway-0 | 2022-11-27 | Code ▽ | Embed ▽ | No License
22

This one is short but sweet. I hope you enjoy it! 😊

P#121486 2022-11-27 18:17

View Older Posts