1 (edited by utz 2017-02-14 16:05:50)

Topic: new engine: BeepModular-1

esoteric music plays... Imagine... a beeper engine that can play almost any sound ever played by any beeper engine. An engine that transcends the boundaries between data and code by enabling you to modify any part of the player at runtime. An engine that will revolutionize the way we make beeper mu-record scratch

Ok guys, let's cut the crap wink Here's my latest engine. It picks up where wtbeep left off, and combines the modular concept of it with the simplified volume generation technique I posted for the saw wave demo here. It's insanely powerful, but unfortunately, composing music for it will also drive you insane, as there's no editor available and the data format is rather complex. In theory, the latest MDAL should be able to support the engine, but I need to implement mixing of strings and numeric values before it really makes sense to try.

Anyway, have a quote from Uncle Readme.

BM-1 is an experimental sound routine for the ZX Spectrum beeper. It features a
highly versatile synthesis core that can be modified during runtime, which
makes it possible to generate a near-endless range of different sounds.


Features include:

- 2 tone channels, 12-bit or 15-bit frequency dividers
- patches: on-the-fly modifications of the synthesis algorithm
- volume control (8 levels per channel, availability depends on patch)
- tables: change pitch and fx parameters per tick
- functions: arbitrary code execution/modification once per tick
- customizable click drums
- per-step tempo control
- compact player size (375 bytes, can be reduced by disabling features)
- optimized data format

With patches, you can produce

- variable duty cycles
- phatness/harmonics control
- fake chords
- bytebeat-like glitches
- SIDsound (duty sweep)
- PFM (classic pin pulse sound)
- noise

source: https://github.com/utz82/ZX-Spectrum-1- … aster/bm-1
direct dl: https://github.com/utz82/ZX-Spectrum-1- … p?raw=true


This will be more or less my last engine for the ZX beeper, until a some fundamentally new techniques are discovered. I still have two ideas I want to put into practise, but these will be rather simple (one is an engine with vibrato support, and one is applying the volume technique from BM-1 to wavetables, which will save a huge amount of code compared to the multi-core technique). Not sure when I'll do those, if somebody else wants to pick up these ideas in the meantime, that's fine with me. No worries though, I have no intentions of abandoning the Spectrum, but I have some other unfinished projects that I want to focus on in the coming months. Stay tuned.

Edit: Added an example patch for PFM sound.

Post's attachments

demo.tap 6.65 kb, 9 downloads since 2017-02-14 

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

Re: new engine: BeepModular-1

Wow, another amazing engine and original sound smile

Love the volume control (particularly at the beginning of the demo tune).

Is the low buzz bass at the beginning coupled with volume controlled lead really all beeper or is this a hybrid engine??

Brilliant smile

Re: new engine: BeepModular-1

These drums are something pretty new too, sampled?

Can two SID voices be used at once??

The more I listen, the more impressive this engine becomes!

Particularly the start of the demo tune.

Re: new engine: BeepModular-1

Cheers Tufty wink Both channels are identical, so yes, you can use two SID voices at once. Click drums are synthesized. The drum synth is less advanced than in Phaser1 or Phaser2, but nevertheless you can pass an 8-bit parameter to change their sound. On kicks, you can set the starting pitch, and on click noise, you can select one of two fixed pitches, and set the volume. For really advanced trickery, a completely different drum synth could be swapped in via the "arbitrary code execution" feature, which allows you to literally change any aspect of the engine at runtime. Furthermore, you can of course fake drums via table fx - noise combines nicely with volume envelopes, too, for example.

Re: new engine: BeepModular-1

That's very impressive!
It really sounds like there is an AY interface on it!!

Cool music, as always.