Topic: new engine: PhaserX
Surprise! Was a bit bored today...
PhaserX is an experimental 2-channel beeper engine for the ZX Spectrum. It uses
a new type of effect called "duty modulation". As the name suggests, this effect
modulates the duty cycle setting over time. Its operating speed is synced to the
affected tone generator, so despite the similarities with the tone generation in
engines like Earth Shaker, it does not affect pitch.
Each of the two tone channels has a different set of effects. Channel 1 produces
a simple square wave. In addition to the aforementioned duty modulation, it
features a SID-like duty cycle sweep effect, and can generate pseudo-white noise
instead of square waves.
Channel 2 uses two oscillators to produce Phaser-style sound. Each of the
oscillators can have it's own duty modulation settings. This allows for very
complex timbres. Oscillator frequencies can of course be configured
independantly, and can run at different phases. The channel mixer supports XOR
(Phaser1 standard), OR, and AND mixing methods. When using the OR method, the
oscillators can be decoupled and used as 2 independant channels, Squeeker style.
Credits go to Shiru for inventing the original Phaser effect.
No XM converter obviously, and no mp3 render either for the time being.
Source is on my github, as usual.
I also made a 3-channel core with this effect (Tritone style, no phaser fx), but I don't have time/motivation to finish it atm. Might try to squeeze a few more cycles from that one so I can add it to beepertoy. Or maybe I'll add it to this engine, got an unused flag bit which could be used for switching cores on the fly. Not sure yet.