packbat [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=40166 midi 005 FM Piano <p>Wikipedia said that the Electric Piano 2 slot is often an FM piano patch, so I went in and tried to make something with a similar vibe:</p> <p> <iframe src="sfxp.php?id=40166_21" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_21"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_21.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_21"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_21" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> https://www.lexaloffle.com/bbs/?tid=49405 https://www.lexaloffle.com/bbs/?tid=49405 Mon, 19 Sep 2022 23:44:45 UTC midi 040 Violin <p>This one ended up being really simple:</p> <p> <iframe src="sfxp.php?id=40166_19" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_19"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_19.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_19"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_19" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>...but there's a couple tricks to using it in a way that feels violin-y.</p> <p>First, you have to think about what exactly the violinist is doing at any given moment in order to navigate the notes they're being asked to play. For those who do not know violin performance well: the way a violin produces sound during normal play is by using a tensioned stick with hair coated in rosin attached to it - the aforementioned bow - to scrape along a string, imparting energy to the string that then causes it to vibrate and make sound. And, crucially, the bow is only so long, and can only be moved so slowly across the string ... so, as the violinist plays, they regularly have to stop and change direction.</p> <p>Plus, the way a violin creates a <em>specific</em> note is not, as with a piano, by pressing a key, but by pressing a finger on a string to hold it against a fingerboard - there are no frets, and to change a note, the violinist has to move their finger to a new position.</p> <p>So, in my demo of it:</p> <p> <table><tr><td> <a href="/bbs/?pid=117417#p"> <img src="/bbs/thumbs/pico8_yodonakafi-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=117417#p"> Violin demo</a><br><br> by <a href="/bbs/?uid=40166"> packbat</a> <br><br><br> <a href="/bbs/?pid=117417#p"> [Click to Play]</a> </td></tr></table> </p> <p>...I use a lot of glides to represent places where a single stroke of the bow is being used to play multiple notes, and at the part at the end of the loop where the notes jump around a bunch, I chop off (sorta) the ends of the notes to give the impression of the gaps between notes from when the violinist had to move quickly.</p> <p>Oh, and the second trick to it.</p> <p>This SFX has built into it a point where the violinist runs out of bow and has to do another downstroke. (This is something I copied from the <a href="https://github.com/sgossner/VSCO-2-CE">VS Chamber Orchestra</a> sample I referenced when designing the note - it's not included in soundfonts like FluidR3.) If you're holding a note for a long time - 341 ticks, 2.83 seconds - the volume will drop off and there will be a moment like at the start of the SFX where the texture of the note roughens ... because the fictional violinist playing the note ran out of bow and had to do a second stroke. If you don't want that, you can change the loop points to stop before the repeat; if you <em>do</em> want that, you can adjust things to make it happen at the right tempo for your specific piece of music.</p> https://www.lexaloffle.com/bbs/?tid=49334 https://www.lexaloffle.com/bbs/?tid=49334 Wed, 14 Sep 2022 15:34:09 UTC Custom SFX instruments not transferred when copy+pasting patterns <p><strong>Steps to reproduce:</strong></p> <ol> <li> <p>Create a custom SFX instrument.</p> </li> <li> <p>Create an SFX using this instrument.</p> </li> <li> <p>Add the latter SFX (but not the former) to a music pattern.</p> </li> <li> <p>Select the pattern and copy.</p> </li> <li>In a new PICO-8 cart, select a pattern and paste.</li> </ol> <p><strong>Expected behavior:</strong></p> <p>All necessary data to reproduce the original pattern should be transferred. (Notably, this occurs when pasting into the BBS.)</p> <p><strong>Observed behavior:</strong></p> <p>The SFX instrument is not copied, and only the SFX specifically included in the pattern are copied.</p> https://www.lexaloffle.com/bbs/?tid=49316 https://www.lexaloffle.com/bbs/?tid=49316 Tue, 13 Sep 2022 01:29:49 UTC midi 008 Celesta <p>I'm gonna be honest: did this one next because I remembered my opening a soundfont in LMMS for the first time, browsing around, and going &quot;wait, did that say <a href="https://www.lexaloffle.com/bbs/?tid=2145">Celeste</a>?!&quot;</p> <p>(It did, but it's a case of shared etymology - it means the heavens. Or the sky.)</p> <p> <iframe src="sfxp.php?id=40166_18" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_18"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_18.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_18"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_18" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>In keeping with the real-world version, this is a transposing instrument - plays an octave above the note entered. There is some artifacting on D#6, however.</p> https://www.lexaloffle.com/bbs/?tid=49310 https://www.lexaloffle.com/bbs/?tid=49310 Mon, 12 Sep 2022 20:04:13 UTC midi 001 Bright Acoustic Piano <p>This is a duplicate of <a href="https://www.lexaloffle.com/bbs/?tid=49269">this earlier piano SFX</a> as far as <a href="https://www.lexaloffle.com/bbs/?tid=49265">the midilib project</a> is concerned, but I wanted to share my attempt at replicating ... I think the sample I was referencing was an upright piano? As best as I could.</p> <p> <iframe src="sfxp.php?id=40166_17" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_17"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_17.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_17"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_17" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>As with the others, this is free to use, although credit is appreciated; <a href="https://www.lexaloffle.com/dl/docs/pico-8_manual.html#SFX_Instruments">the manual entry on custom SFX instruments</a> should explain how to use it.</p> https://www.lexaloffle.com/bbs/?tid=49278 https://www.lexaloffle.com/bbs/?tid=49278 Sun, 11 Sep 2022 01:30:48 UTC midi 013 Xylophone <p>No cart preview right now, but posting the SFX so people can use it: my latest best shot at a xylophone sound:</p> <p> <iframe src="sfxp.php?id=40166_16" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_16"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_16.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_16"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_16" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>Free to use, credit appreciated; <a href="https://www.lexaloffle.com/dl/docs/pico-8_manual.html#SFX_Instruments">manual section on SFX instruments is here</a> if it's not something you're familiar with.</p> https://www.lexaloffle.com/bbs/?tid=49277 https://www.lexaloffle.com/bbs/?tid=49277 Sun, 11 Sep 2022 01:21:43 UTC midilib custom SFX instrument project <p>So, PICO-8's built-in tracker has a startling amount of customization, but it can be kinda tricky actually making a <a href="https://www.lexaloffle.com/dl/docs/pico-8_manual.html#SFX_Instruments">custom SFX instrument</a> when you want one - so a few of us on the Discord, me and <a href="https://www.lexaloffle.com/bbs/?uid=45958"> <a href="https://www.lexaloffle.com/bbs/?uid=45958"> @jo560hs</a></a> and <a href="https://www.lexaloffle.com/bbs/?uid=49583"> @bikibird</a>, were thinking it might be interesting to look at <a href="https://pjb.com.au/muscript/gm.html">the list of General Midi 1 instruments</a> as a shopping list and see how many we can knock off.</p> <p>And as a bonus, if we can complete the list, <a href="https://www.lexaloffle.com/bbs/?uid=45958"> <a href="https://www.lexaloffle.com/bbs/?uid=45958"> @jo560hs</a></a> was talking about possibly making an sf2 soundfont for folks who like playing with those.</p> <p>So, if you wanna jump in and add stuff to the catalog, the guidelines we decided on for convenience of people hunting down instruments afterwards are these:</p> <ul> <li>tag the post with <code>midilib</code></li> <li>use a subject line of the format <code>midi [number] [name]</code></li> <li>(ideally, each instrument should be posted in its own thread, so specific ones can be found more easily)</li> <li>embed your SFX there so people can hear it and copy it</li> <li>let folks know if you have any special requirements (I generally assume something akin to CC-BY, where people can use them freely if they credit you, but let us know!)</li> </ul> <p>As people create more instruments, we'll try to look in the <a href="https://www.lexaloffle.com/bbs/?cat=7#tag=midilib">midilib tag</a> and update everyone on what people have been doing, so folks who feel like doing whatever can see what's missing.</p> <p>I've made <a href="https://www.lexaloffle.com/bbs/files/40166/GM1%20list.txt">a text file with a list of all the GM-1 instruments and their numbers</a> - feel free to ask questions, promote your threads, and so on here.</p> <h3>Instruments as of 2022-09-17</h3> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></p> <p><a href="https://www.lexaloffle.com/bbs/?tid=49266">midi 000 acoustic grand piano</a> by jo560hs<br /> <a href="https://www.lexaloffle.com/bbs/?tid=49269">midi 001 bright acoustic piano</a> by jo560hs<br /> <a href="https://www.lexaloffle.com/bbs/?tid=49278">midi 001 Bright Acoustic Piano</a> by packbat<br /> <a href="https://www.lexaloffle.com/bbs/?tid=49273">midi 002 electric grand piano</a> by jo560hs<br /> <a href="https://www.lexaloffle.com/bbs/?tid=49263">midi 003 Honky-Tonk Piano</a> by packbat<br /> <a href="https://www.lexaloffle.com/bbs/?tid=49279">midi 006 harpsichord</a> by jo560hs</p> <p><a href="https://www.lexaloffle.com/bbs/?tid=49310">midi 008 Celesta</a> by packbat<br /> <a href="https://www.lexaloffle.com/bbs/?tid=49277">midi 013 Xylophone</a> by packbat</p> <p><a href="https://www.lexaloffle.com/bbs/?tid=49264">midi 029 Overdriven Guitar</a> by packbat</p> <p><a href="https://www.lexaloffle.com/bbs/?tid=49334">midi 040 Violin</a> by packbat</p> <p><a href="https://www.lexaloffle.com/bbs/?tid=49282">midi 073 flute</a> by SmellyFishstiks</p> <p><a href="https://www.lexaloffle.com/bbs/?tid=49321">midi 122 Seashore</a> by jasondelaat<br /> <a href="https://www.lexaloffle.com/bbs/?tid=49320">midi 125 Helicopter</a> by jasondelaat<br /> </div></div></div></p> https://www.lexaloffle.com/bbs/?tid=49265 https://www.lexaloffle.com/bbs/?tid=49265 Sat, 10 Sep 2022 20:53:19 UTC midi 029 Overdriven Guitar <p>For anyone who wants it, an SFX imitating an electric guitar with overdrive:</p> <p> <iframe src="sfxp.php?id=40166_15" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_15"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_15.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_15"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_15" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>Free to use, credit appreciated.</p> <p>(If you are not already familiar, <a href="https://www.lexaloffle.com/dl/docs/pico-8_manual.html#SFX_Instruments">the manual has a brief explanation of how custom SFX instruments work</a>.)</p> https://www.lexaloffle.com/bbs/?tid=49264 https://www.lexaloffle.com/bbs/?tid=49264 Sat, 10 Sep 2022 20:41:02 UTC midi 003 Honky-Tonk Piano <p>A group of us on the Discord were talking about how it'd be useful it'd be to have a big library of SFX instruments, so here's one I made a while ago to act as a ragtime piano:</p> <p> <iframe src="sfxp.php?id=40166_14" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_14"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_14.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_14"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_14" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>Free to use, credit appreciated.</p> <p>(If you are not already familiar, <a href="https://www.lexaloffle.com/dl/docs/pico-8_manual.html#SFX_Instruments">the manual has a brief explanation of how custom SFX instruments work</a>.)</p> https://www.lexaloffle.com/bbs/?tid=49263 https://www.lexaloffle.com/bbs/?tid=49263 Sat, 10 Sep 2022 20:39:06 UTC Interrupting pause when key is held (Edit: cause identified) <p>So, I'm working on a toy musical keyboard program, and I want to use SDL scancodes to detect which keys are being held - but I know that PICO-8 will pause if you hit the &quot;P&quot; key (whatever key that happens to be in the user's keyboard layout). So I want to detect when a &quot;P&quot; input is being received and stop it...</p> <p>...but my current code:</p> <div> <div style="max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>--interrupt pause on P while stat(30) do if stat(31)==&quot;p&quot; or &quot;◆&quot; then --suppress pause poke(0x5f30,1) end end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>only works for the <em>initial</em> press - when the key starts repeating, stat(30) doesn't detect the input but PICO-8 pauses anyway.</p> <p>Any suggestions? I'd rather not interrupt <em>all</em> pause inputs - that makes things difficult for Splore users.</p> <p><strong>Edit:</strong> Apologies to <a href="https://www.lexaloffle.com/bbs/?uid=15232"> @dw817</a>, whose explanations I apparently completely failed to parse: <a href="https://www.lexaloffle.com/dl/docs/pico-8_changelog.txt">in the changelog for 0.2.2b</a> it is noted that holding the pause button will <em>always</em> bring up the hardware pause menu, even when pause would otherwise be suppressed. This rules out any solution that involves the player holding down P that I can implement as cart programmer. (Shoutout to <a href="https://www.lexaloffle.com/bbs/?uid=42963"> @cubee</a>'s <a href="https://www.lexaloffle.com/bbs/?tid=49257">description of a related bug</a> which cued me in.)</p> https://www.lexaloffle.com/bbs/?tid=49241 https://www.lexaloffle.com/bbs/?tid=49241 Thu, 08 Sep 2022 21:20:11 UTC lag on updating for stat(46) &amp;c. <p> <table><tr><td> <a href="/bbs/?pid=109257#p"> <img src="/bbs/thumbs/pico8_zebijinota-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=109257#p"> zebijinota</a><br><br> by <a href="/bbs/?uid=40166"> packbat</a> <br><br><br> <a href="/bbs/?pid=109257#p"> [Click to Play]</a> </td></tr></table> </p> <p>I was updating a cart I was working on to use stat 46-56 instead of 16-26 and noticed that new bugs were introduced in the change. It looks like stat(16) updates immediately when a music() command is called, but stat(46) will sometimes show an erroneous value (e.g. -1) on the frame of the update.</p> https://www.lexaloffle.com/bbs/?tid=47126 https://www.lexaloffle.com/bbs/?tid=47126 Sun, 27 Mar 2022 15:08:26 UTC Performance issue in thread with lots of embedded SFX <p>Something I noticed today, browsing the PICO-8 forums on my iPhone 6: when I opened the <a href="https://www.lexaloffle.com/bbs/?tid=45515">Tell me about how you compose music</a> thread, it would always crash the browser. Safari and Chrome would report that the tab had repeated errors, Opera would crash out entirely.</p> <p>I'm guessing here when I suggest the embedded SFX music player is related to this, but I wonder if all the scripts are overloading the limitations of the device. Granted, this is a device that will sometimes struggle to run a PICO-8 cart at all, but it makes me wonder if some kind of click-to-activate option for SFX previews might be worth implementing.</p> https://www.lexaloffle.com/bbs/?tid=46902 https://www.lexaloffle.com/bbs/?tid=46902 Tue, 08 Mar 2022 14:56:59 UTC Scrolling in music editor during playback randomly stopping <img style="" border=0 src="/media/40166/210407_minnows_1.gif" alt="" /> <p>There seems to be some kind of flaw on my system when playing music via the music pattern editor: it'll start playing normally, with the display scrolling, but despite my making no input with mouse, keyboard, or controller, it will abruptly stop scrolling and leave the cursor behind.</p> <p>My first thought was that perhaps the active SFX in the SFX editor had started, but that wasn't the case in any of my tests. There's no obvious pattern to it - it's not after a fixed duration, after a fixed number of patterns, or after a specific pattern appears - but in each of the files I tried, it stopped on the same places in two separate tests.</p> <p>The music continues playing as normal and correctly - it's as if, at an unpredictable point, PICO-8 decided I clicked on the SFX or the cursor or something to edit the current SFX.</p> <p>Edit: I posted below that this seems to happen when the SFX in the selected channel changes from one pattern to the next; doing a quick test on 0.2.4, I didn't see it happen there. It looks like this may have been introduced in 0.2.4b.</p> <p>Edit: Fixed in 0.2.4c!</p> https://www.lexaloffle.com/bbs/?tid=46570 https://www.lexaloffle.com/bbs/?tid=46570 Sun, 13 Feb 2022 18:41:07 UTC Erik Satie - Gymnopedies 1 <p> <iframe src="sfxp.php?id=40166_12" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_12"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_12.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_12"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_12" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>This was an exercise I was doing in transcribing music from sheet music - in this case, <a href="https://imslp.org/wiki/3_Gymnop%C3%A9dies_(Satie%2C_Erik)">the first Gymnop&eacute;dies from Erik Satie's 3 Gymnop&eacute;dies</a> - and it actually turned out to contain a really interesting little technical challenge.<br /> <div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;">The thing about Gymnop&eacute;dies 1 from a PICO-8 perspective is that there are simply too many voices in the harmony to contain in four channels. So, obviously, arpeggios.</p> <p>...but also, Gymnop&eacute;dies 1 is a very <em>calm</em> piece of music - tormented (one is instructed to play this &quot;Lent et douloureux&quot;, or roughly &quot;slow and painful&quot; in English), but emotionally quiet. The plodding beat of the piece is the low bass note on the downbeat, not the middle chords between them, and launching directly at full volume into an arpeggio is far too dramatic and disruptive. So the question becomes: how do you simultaneously fade in and out an arpeggio while arpeggiating?</p> <p>Which, I mean, custom SFX instruments, of course. But I actually accidentally played myself initially, because the first thing I always do looking at a piece of sheet music is ask, &quot;how large can I make the subdivisions?&quot;, and the piece is entirely in quarter notes, so I made my subdivision a quarter note. And if each measure of 3/4 is three lines, then I can't use arpeggios in the music SFX because they overlap - I <em>have</em> to use arpeggios in the custom SFX instruments.</p> <p>...and there are more distinct chords in the piece than I have custom SFX instrument slots. So I have to compromise. And I can't do much shaping of the notes, because I don't have any subdivisions within them. It <em>functioned</em>, but I was not happy.</p> <p>This version makes each line an eighth note. Because each line is an eighth note, each block of two quarter notes where I want my arpeggios lands either on the border between two four-line blocks containing no other notes or in a four-line block by itself...</p> <img style="" border=0 src="/media/40166/gymnopedies_subdivide_0 1_0.png" alt="" /> <p>...and therefore I can build my arpeggios directly in PICO-8 and let custom SFX instruments handle the fade-in and fade-out. I have six custom SFX instruments and all the arps are, very nearly, the exact notes in the score.</p> <p>And I can do more shaping of the other notes, because they cover twice as many lines.</div></div></div></p> <p>There's more polish I could and probably should do of this - I have twenty-five empty SFX to work with - but I'm happy with it. It was a really good exercise.</p> https://www.lexaloffle.com/bbs/?tid=45646 https://www.lexaloffle.com/bbs/?tid=45646 Fri, 10 Dec 2021 17:14:06 UTC SFX editor keyboard shortcuts on non-US QWERTY keyboards <p>So, using PICO-8 with a <a href="https://commons.wikimedia.org/wiki/File:KB_United_States-NoAltGr.svg">US QWERTY keyboard</a> (Wikimedia Commons image link), there's a kind of virtual music-keyboard embedded in it when you're editing SFX, with the bottom row from Z to M being the white keys of the octave below the one selected and the top row from Q to P being the white keys of the octave and a third above, and the black keys being on the lines above their adjacent white keys. C1 = z, C#1 = s, D1 = x, and so on.</p> <p>For people using PICO-8 with other keyboard layouts, in the default keybindings, is this physical arrangement the same, or are the key names the same instead? Or some other situation?</p> https://www.lexaloffle.com/bbs/?tid=45221 https://www.lexaloffle.com/bbs/?tid=45221 Tue, 02 Nov 2021 01:53:58 UTC Feature request: duration parameter for export foo.wav <p>As of 0.2.3, if you want to export a music composition in the tracker at the PICO-8 command line, the length of export caps at 32768 music ticks, or about four minutes and thirty-two seconds. To export something longer requires doing it in real time, be that five, ten, or seventy minutes, which is a pain and is slow.</p> <p>Other exporters - sprite sheet, web application, binary - have flags to change how the export works; would it be possible to do something similar with the music/SFX exporter? Number of patterns played (or number of repeats, for a looping SFX) would seem the most intuitive for the end user, and (unlike music ticks) would involve numbers of a reasonable size, but I'm not attached to any specific solution.</p> https://www.lexaloffle.com/bbs/?tid=44614 https://www.lexaloffle.com/bbs/?tid=44614 Tue, 14 Sep 2021 04:00:14 UTC Spurious &quot;m&quot; on commandline when Ctrl+M is pressed during boot <p>Weird tiny bug I've noticed in 0.2.2c on Windows 7: if, either when PICO-8 is booting or rebooting, I hit Ctrl+M to toggle mute before the commandline appears, the M appears at the commandline after boot.</p> <img style="" border=0 src="/media/40166/untitled_1_0.gif" alt="" /> https://www.lexaloffle.com/bbs/?tid=43564 https://www.lexaloffle.com/bbs/?tid=43564 Sun, 27 Jun 2021 17:04:02 UTC Undocumented change in retriggering behavior of custom SFX instruments <p> <iframe src="sfxp.php?id=40166_9" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_9"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_9.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_9"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_9" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>In versions of PICO-8 prior to 0.2.2, and according to the manual:</p> <div> <div style="max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>SFX instruments are only retriggered when the pitch changes, or the previous note has zero volume. This is useful for instruments that change more slowly over time. For example: a bell that gradually fades out. To invert this behaviour, effect 3 (normally 'drop') can be used when triggering the note. All other effect values have their usual meaning when triggering SFX instruments.</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>However, in version 0.2.2, these SFX <em>also</em> retrigger when they have exceeded their total length.</p> <p>The SFX up top demonstrates this: in 0.2.1b,</p> <ul> <li>SFX 03 plays a single 16-tick note three times, 128 ticks apart, and</li> <li>SFX 04 plays eight 16-tick notes at equal 32-tick intervals;</li> </ul> <p>but in 0.2.2c,</p> <ul> <li>SFX 03 plays a 64-tick note, two 16-tick notes, and then two 16-tick notes, and</li> <li>SFX 04 plays eight 16-tick notes at a syncopated rhythm, alternating 48 and 16 ticks.</li> </ul> <p>This will break some pre-0.2.2 compositions.</p> <p>p.s. Slight edit correction: the manual is <em>also</em> incorrect in the opposite direction, because <a href="https://www.lexaloffle.com/bbs/?tid=38331">custom SFX instruments do <em>not</em> retrigger if the previous note has zero volume but uses the same pitch and instrument</a>.</p> https://www.lexaloffle.com/bbs/?tid=43506 https://www.lexaloffle.com/bbs/?tid=43506 Thu, 24 Jun 2021 19:58:17 UTC stat 20..23 documentation bug <p>This is the most minor thing ever, but <a href="https://www.lexaloffle.com/pico8_manual.txt">the manual</a> currently says under <code>stat x</code></p> <div> <div style="max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>20..23 Note number (0..31) on channel 0..3</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>...but if the LEN of the SFX or LOOP endpoint of the SFX is greater than 32 and the SFX plays that long, then stat(20..23) will display numbers greater than 32 just fine.</p> <p>I don't know if this is worth fixing, but something like &quot;(normally 0..31)&quot; would be technically accurate and still probably convey the desired information.</p> https://www.lexaloffle.com/bbs/?tid=43043 https://www.lexaloffle.com/bbs/?tid=43043 Mon, 24 May 2021 02:07:03 UTC J.S. Bach, Cello Suite No.1 in G major: Prelude <p> <iframe src="sfxp.php?id=40166_5" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_40166_5"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/40166_5.txt", function (retdata){ var el = document.getElementById("sfxcode_40166_5"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_40166_5" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>For reasons, I loaded up <a href="https://imslp.org/wiki/Cello_Suite_No.1_in_G_major%2C_BWV_1007_%28Bach%2C_Johann_Sebastian%29">the IMSLP page for Bach's first cello suite</a> yesterday and downloaded one of the scores - Shin-Itchiro Yokoyama's, I think it was - to transcribe into PICO-8.</p> <p>I don't know if anyone on here has a dire need for more PICO-8 J.S. Bach beyond <a href="https://www.lexaloffle.com/bbs/?tid=30992">Gruber's arrangements of Bach's 2-Part Inventions</a> from a couple years ago, but it was pretty rewarding to do and I like the results.</p> https://www.lexaloffle.com/bbs/?tid=41628 https://www.lexaloffle.com/bbs/?tid=41628 Wed, 17 Feb 2021 17:01:02 UTC