anteater - new beeper engine
Just letting y'all know about a little project I did yesterday, called "Write a beeper engine in 1 day".
Download (includes XM converter)
Sound example (recorded from 48K with minimal EQ applied)
Features: nothing special, just
- 1 channel square wave, 1 channel PWM wave (like Phaser1 with mult 0, detune 1)
- 3 interrupting click drums
- manual detune
- per row tempo setting
- fairly compact size (266 bytes)
You will need Perl to use the XM converter.
For compiling the tap file, you need pasmo (or adapt the sources to an assembler of your choice, of course).
The name "anteater" is a reference to Ant Attack, which was probably the first game to use pulse interleaving beeper sound on the Speccy.
Download (includes XM converter)
Sound example (recorded from 48K with minimal EQ applied)
Features: nothing special, just
- 1 channel square wave, 1 channel PWM wave (like Phaser1 with mult 0, detune 1)
- 3 interrupting click drums
- manual detune
- per row tempo setting
- fairly compact size (266 bytes)
You will need Perl to use the XM converter.
For compiling the tap file, you need pasmo (or adapt the sources to an assembler of your choice, of course).
The name "anteater" is a reference to Ant Attack, which was probably the first game to use pulse interleaving beeper sound on the Speccy.
Post edited by utz on
Comments
Bugfixes:
- tuning/timing is now stable
- IO contention workaround
- pattern list end marker now works safely on all RAM locations
Improvements:
- per row tempo setting
- now includes an XM converter (needs Perl)
Download
Sound example (recorded from 48K)
Right now, Im using Windows XP (I know, I know...) with slow dialup looking for ways to download all that I might need to turn those Perl XM converter scripts into direct Windows .EXE executable files... ...If anyone out there with Perl installed on their Windows system is able to compile (or wrap for portability) those two Perl scripts and post them, Id be deeply greatful!!!!! ... :)
Either way,
Thank you sir for a fine contribution!!!
Regarding standalone executables for the converters - I've looked into it before, but ran into 2 problems: A, I can't compile Windows .exes on my Linux system (if anybody knows how to do it, let me know please). B, the executables would end up being around 3-4 MB each, which imo isn't really worth it, especially considering I'll probably write more engines/converters in the future.
Both are near the top of the list for implementation in a future Beepola at some undisclosed point in the future, should I ever get the motivation to crank out another version! :)
Download the latest version of Bomb Munchies Ver2210 4th July 2020
https://dl.dropboxusercontent.com/u/33485444/Xm2Tap.zip
Basically, if your a WindowsXP user, you can drag and drop .XM and .MOD music files on to the appropriate .BAT file and it will convert that music into several different Beeper forms (2, 3, 4, 6 & 8 channel beeper tunes... Can you can guess the names of the various beeper engines used? Ha!)...
Its packaged in a way that is convinient for me, so I apologise if its not userfriendly enough for others, but thought I would put it here for anyone else who often finds the need to convert music for quick projects...
:lol:
Thanks again for creating this!!!!
(Of course credit also goes to those behind Pasmo, SJAsm, the mod2XM converter and TinyPerl and other creative sorts who are responsible for the tools enclosed therein - all I did was put them together badly!)...
MatGubbins, thanks to you, too.
kgmcneil: Awesome! How did you get the .exes so small? And do I have your permission to package them with the engine downloads?
I might just have a crack at another Beepola release in a few weeks time, when I've finished my current little project then.
http://tinyperl.sourceforge.net/downloads.htm
Wrapping a script is as easy as:
tinyperl -bin script.pl script.exe
...You'll need to include lib.zip (262k), perl58.dll(355k) & tinyperl.exe(93k) in the same folder as your executable file to run it, but that's still a small price to pay for such a small distribution...
And yes, take anything you like - all I did was compile it with the above and package it....
Thanks again for your fine work there! :)
PS: Updated it slightly to make it a little less bug free when dragging music files across from other drives... {http://dl.dropboxusercontent.com/u/33485444/Xm2Tap.zip}
I've done some minor improvements to the XM converters, so it's no longer necessary to manually optimize the XMs before converting. Download addresses are the same as before.
I've pretty much given up on the idea of rewriting/refactoring Beepola to tidy up all of the messy stuff that has "evolved" over time, and clean up the *.bbsong file format, as it's just too dull a prospect and seems too much like real work. So I'm just gonna keep hacking away at the existing codebase, haphazardly bolting on new things until it all collapses in a big heap :)
I only miss some selection/copy/paste tools and transpose / replace for individual channels.
It would be nice if some sort of dumb MOD import was possible.
Just get the note sequence and the patterns would speed things up for me.
Thanks again for it!..
And Im delighted to hear that Beepola might get a few more additions before it implodes!!!!... :)
Thanks for sharing! Both engines are really neat and compact and they sound great. I just wanted to mention a couple of things: In the ntropic engine, when checking for a keypress, bit 2 of A is always set before the in a,(#fe) is done (it's either #04 or #e5), so the row Q-T is never checked for a keypress. Also, because you're using PUSH and POP a fair bit, the sound is a bit dirty because the stack is in contended memory. CLEARing to a value in the upper 32K makes things sound much better and in tune.
Cheers!
Xm2Tap scripts updated: Download from the same place:
https://dl.dropboxusercontent.com/u/33485444/Xm2Tap.zip
...Now its my turn to apologise, Iv added some bloat, and broke the Beeper only rule by adding a YM converter...
...to be more precise, Iv resurrected an old old (1998 ) XM to YM converter found laying around the rubble of an Atari forum... Its a wonderful XM2YM converter without a website, without a source script and without a system now (its pre-XP, using DOS, hence the extra bloat is the addition of the DosBox application needed to run it)... Its capable of some very good conversions, but has to be scaled down to YM3b format to produce anything useful for the humble ZX (Iv bolted a YM2MYM to Tap script in there from better programmers than I, too)...
Basically, as well as producing the usual beeper engines, it will also now output a tap using this YM engine too...
As usual, this assemblage was written with only myself in mind, so I don't apologise if it doesn't work on anyone elses XP system... :grin:
...Now thats probably enough time wasted on that, I really should be doing some more nightshift paperwork... (Or perhaps make a start on Climacus level data!!!! ) ;)
:lol:
PS: If anyone knows of a minimal or stripped down version of DosBox that I can use to wrap around this old old dos converter tool, Id love to hear of it!!!!??
rawp (aka reasonable accurate waveform player)
Features:
- 2 tone channels + interrupting hihat
- 16 different waveforms + sampled kick drum
- pitch slide fx (kind of...)
- per row tempo setting
- manual detune
- loop point support
download (includes XM converter)
sound example
In other news, unfortunately there were still some bugs in the anteater and ntropic converters. So, these bundles have been updated again.
BTW. Went up to your page to see if there is something more - just more of pure awesomeness!
For example, you can't play a crash cymbal along with the kick.... even if the engine has suitable sounds for that. But you need that to play drums!
>> xm2ant spits out problems on line 124, 135, 136... etc... Iv found the basis of those problems - namely a missing comma... If you got to line 124, you'll see the line read as follows:
my ($rows, $cpval, $temp, $temp2 $mx, $jx, $nx);
Notice that there should be a comma after "$temp2" above... If you insert the comma, then it compiles and works fine...
>> xm2ntropic spits out errors on line 201,202,203 & 204.. All these errors pertain to Global symbol "$temp2"... Lines 201-204 read as follows:
sysread(INFILE, $temp2, 1) == 1 or die $!;
$temp2 = ord($temp2);
if (($cpval&16) == 16 && $temp2 <= 0x20) {
$speed[$rows] = $temp2 * 2; #setting speed if bit 4 is set
...basically, it doesn't like $temp2... Now Im no programmer, but if I do a simple replace all, with notepad and replace all "$temp2" with "$temp", then it compiles fine... Im guessing that probably breaks something, but for now, it seems to work...
>> Concerning xm2rawp, I have to say, Im well pleased with that... I particularly like its ability to play samples, but I haven't put in the time to fully understand it yet.... Needless to say, no problems encountered with that...
Concerning the xm2tap script tools, Iv updated them, but Im not able to upload them due to dropbox treating me like a leper lately!!!!... Ill figure it out in the next few days, but till then, the tool remains unchanged at the above address... :(
Wow, that's fantastic!
Just one thing, the download link on the soundcloud page is broken (you've put "rwap" instead of "rawp") ;)
Hahaha, a typical 'ZX person' mistake. ;)
@leespoons: Thanks for letting me know!
@Yerz: Haha true. You don't want to know how many times I've mis-typed that.
Download the latest version of Bomb Munchies Ver2210 4th July 2020
https://dl.dropboxusercontent.com/u/33485444/Xm2Tap.zip
Also, while Im here... [Thread hijack], Ill also mention an update to ModPlug2VT, a bridging tool between Vortex Tracker and OpenModPlug... The update to that is minor - basically its been adjusted to avoid breaking compatibility with newer versions of OpenMod Tracker (it also retains compatibility with the older versions however, so will work with both old and new)...
https://dl.dropboxusercontent.com/u/33485444/ModPlug2VT.zip
Again, I apologise for the size of these files... Im not very efficient... and mixing up $temp with $temp2 is exactly the sort of mistake I would make!!!!
:lol:
- http://battleofthebits.org/arena/Entry/La+moisson+d%27hiver/16415/ (sorry for the self-promotion ;) )