Topic: 7 days, 7 (new) beeper engines

As promised, I'll go a bit crazy this week (well, more than usual anyway) and release a new beeper engine every day. So let's get right to it big_smile


Day 1: qaop, aka Quite Accurate Overdriven Player

- 2 channel PCM WAV playback
- uses looped 256 byte samples
- up to 3 bit sample depth, downmixed to 3-bit output (silence + 6 volume levels)
- 16-bit frequency resolution
- 3 interrupting click drum sounds
- per-row speed control
- 15.6 KHz mixing

example tune
download (includes XM converter, Perl required as usual)
source

This one I'm quite proud of. It basically fixes all the issues in my earlier rawp engine. qaop fast enough to hide the discretion noise, and has stable tuning due to using proper 16-bit frequency counters. And there is a bonus: When mixing two loud enough samples, the engine will overdrive, which will give you some extra crunch, as heard on the kick drums in the example tune.

The downside is that the XM converter is very basic - if you want to use any additional samples (which is the whole point of this engine), you'll have to hack them in yourself.

Re: 7 days, 7 (new) beeper engines

Nice. At first I thought it was an attempt at PDM what's with the OUTI's and all, then I realized it was a clever way to set the PWM 'level balance' depending on where you begin in the memory. Overall, this technique is strangely underused. My Vvv (the saw wave player) is based on a similar idea albeit realized with a set of routines

Looking forward to your other entries, too smile

Re: 7 days, 7 (new) beeper engines

A new day, a new engine.

Day 2: quattropic

- 4 channels of square wave sound
- full duty cycle control
- one of the channels can play noise or fast pitch slides instead of regular tone
- said channel also supports note cut
- 16-bit frequency resolution
- 15.6 KHz mixing

example tune
download
source (includes XM converter)

quattropic is the big brother of ntropic - twice as many channels, and you can even vary the sound of the noise. This comes at a small price, however: There is no per-row speed control in this engine. (It could be easily implemented, but would take another 2 bytes of song data per step.)
quattropic is a little easier to simulate in XM, but still you won't get the full range of sounds out of the template, unfortunately.

Re: 7 days, 7 (new) beeper engines

Two great engines so far Utz smile

I love the lofi sound and volume control of qaop (btw any chance of including the xm / tap of the demo tune from soundcloud ? Would be great to know how it sounds on a real Speccy and how you wrote it)

Quattropic is really great too, I love the sound, general tone, bass and balanced percussive sounds.


Can't wait for the next five smile

Re: 7 days, 7 (new) beeper engines

quattropic is wonderful! A very deep and clean sound, I'll sure make something with it wink

Re: 7 days, 7 (new) beeper engines

Thanks for the cheers, guys wink

I've found and (hopefully) fixed a few bugs in the qaop and quattropic XM converters, so please re-download.
Also, I've added a standalone executable converter to the quattropic package, so now you can do things without using Perl. However, I just started to learn C++ yesterday, so it's probably loaded with bugs. But I'd still appreciate if you guys gave it a try and let me know if you run into any problems with it.

New engine for today is coming in a couple of hours, stay tuned wink

Re: 7 days, 7 (new) beeper engines

Yo Tufty, here's the .tap for the qaop demo track. It was hand-coded in asm so there's no XM for this one wink

Post's attachments

test.tap 6.24 kb, 2 downloads since 2015-09-16 

You don't have the permssions to download the attachments of this post.

Re: 7 days, 7 (new) beeper engines

Eyyup, here we go again:

Day 3: xtone

- 6 channels of square wave sound
- limited duty cycle control
- 16-bit frequency resolution
- 3 interrupting click drum sounds
- per-row speed control
- 16.2 KHz mixing

example tune
download (includes XM converter as usual)
source

Now we're getting serious wink xtone is basically like Tritone, but with 6 channels. Inevitably, the sound is quite a bit grittier though, and duty cycle
control is less accurate, though you still get at least 4 different settings.

9 (edited by garvalf 2015-09-16 18:04:11)

Re: 7 days, 7 (new) beeper engines

yikes

again, a very powerful and deep sound

(the .xm template was not included with xtone)

10

Re: 7 days, 7 (new) beeper engines

Ouch... xm template added. I have a hard time staying focussed these days sad

Re: 7 days, 7 (new) beeper engines

Cheers utz.

Another great engine with another unique sound smile

Thanks for the xm template, oh and thanks a lot for the .tap version of the qaop soundcloud tune.


Look forward to tomorrow's instalment  smile

12

Re: 7 days, 7 (new) beeper engines

Day 4: Octode 2k15

- 8 channels of PFM sound
- 16-bit frequency resolution
- 3 interrupting click drums
- per-row speed control
- 15.6 KHz mixing

example tune (think I overdid the EQing a bit on this one, sorry)
download (includes XM converter of course)
source

I realized I hadn't written a PFM engine in ages, so something needed to be done... Octode 2k15 is a rewrite of Shiru's Octode which fixes the detuning issues of the original by using 16-bit counters. The sound has also been improved, and resembles that of Octode XL with all channel volumes set to like ~5-6 or so. Unlike with Octode XL, volumes can't be changed though. To somewhat make up for it, I added per-row speed control.
Another downside is that the song data is huge, so the maximum song length would be about thirty 64-step patterns. That goes for yesterday's engine, too, btw.
You can feed original Octode XMs into Octode 2k15, but you'll need to adjust speed and pitch. XMs from Octode XL will not be compatible, though.

13 (edited by AtariTufty 2015-09-17 18:21:04)

Re: 7 days, 7 (new) beeper engines

Wow utz, you have been busy !!


I never expected a new version of octode, and with the tuning issues fixed too. Brilliant smile


(The download link is pointing to the Quattropic package btw)

14

Re: 7 days, 7 (new) beeper engines

Ah, thanks Tufty, I'll fix the links right away. In the meantime...

Day 5: Octode PWM

- 8 channels of square wave sound, sort of
- 16-bit frequency resolution
- 4 octaves note range
- 3 interrupting click drums
- per-row speed control
- 19 KHz mixing

example tune
download (yes, includes converter)
source

Another, more experimental version of Octode, with a different sound. It's quite noisy though, I guess mixing 8 square wave channels is a little too much for our beloved Speccy. Well, at least it can serve as a bad example wink

15

Re: 7 days, 7 (new) beeper engines

Getting closer to the finish line of this code run...

Day 6: yawp, aka Yet Another Wave Player

- 3 channel PCM WAV playback
- uses looped 256 byte samples
- 2 bit sample depth, mixed to 4¼-bit output (silence + 9 volume levels)
- 5 octaves note range
- 16-bit frequency resolution
- per-row speed control
- 16.2 KHz mixing

example tune
download (includes the usual converter)
source

Why settle for 2 channels of sample playback when you can have 3? Sound is not as good as in qaop, but still less fuzzy than SampleTracker's output. The 3 channels have slightly different volume levels, and are also not 100% equal in sound.

16

Re: 7 days, 7 (new) beeper engines

Ok, one last engine release...

Day 7: nanobeep

- 2 channels of PFM sound
- ~3 octaves range
- 8-bit frequency resolution
- 1 interrupting click drum
- player size 86 bytes

example tune
download (includes XM converter, surprise surprise)
source

Not the most useful engine on the planet, but hey, I had to fill up the 7 days of the week somehow big_smile This is my attempt at making an engine with a size below 100 bytes. As the counters are 8-bit, there are of course detuning issues, but unlike with Huby, they occur at both ends of the note range. Notes from the middle of the first octave onwards to mid-4th should be reasonably stable though. Also, a few bass notes (C, D, G) are safe to use.
The keyhandler doesn't check the whole keyboard (only Space,A,Q, and 1), if you find this to be unacceptable it'll cost you 2 additional bytes to fix that.


And thus ends the "7 days, 7 engines" project. Thanks everybody for checking it out smile

Re: 7 days, 7 (new) beeper engines

Cheers utz smile


A great challenge and some amazing new engines smile

Re: 7 days, 7 (new) beeper engines

thanks for all of those new engines. With them we have matter for creating new amazing sounds and tunes!

19

Re: 7 days, 7 (new) beeper engines

Cheers guys, I'd love to hear some tunes made with these wink

There's still some more concepts I want to explore. For example recently I learned a new trick for speeding up sample playback by quite a bit which isn't implemented in either qaop or yawp. So higher quality digi players are definately possible. Also I would love to try and pull off some sort of fake FM synthesis, though that's currently still a bit over my head.

Re: 7 days, 7 (new) beeper engines

For xtone, in the doc "Drums may be in any channel, but you cannot set more than one per row." => I noticed if the drums are not in channel 7 or 8, but in channel 1 to 6, then in addition to the drum sound, you'll get extra notes, probably it's not wanted.

21

Re: 7 days, 7 (new) beeper engines

Well spotted, thanks. This concerns nanobeep, too. I've updated the docs.

Re: 7 days, 7 (new) beeper engines

You are on fire, mate smile

I missed a lot!

Re: 7 days, 7 (new) beeper engines

This was so awesome (along with the HT2 launch) that I had to join this forum smile

Keep it up!

Re: 7 days, 7 (new) beeper engines

Hi johnl

Welcome aboard, great to see you here smile

Thanks a lot for the bandcamp support too smile

25

Re: 7 days, 7 (new) beeper engines

Hello, and welcome from me, too (and also thanks again for the support).
I'm just listening to your beautifully soothing "Music To Drift Away To", and I'm wondering what you would come up with using 1-bit sounds wink