Topic: new engine: PhaserF

As promised, here it is, Phaser with filters.

- 2 Phaser channels, XOR/OR/AND mixing
- variable duty for both oscillators (channel 2 only)
- volume control (up to 6 levels)
- filters with variable cutoff (6 levels for lo-pass, 5 levels for hi-pass)
- sample rate 9114 Hz
- interrupting PWM sampled drums at 27343 Hz with 7 pitch and 3 volume levels
- player size 3333 bytes (when assembled at a 256b border)

Channel 2 can be split into two independent pulse wave channels that are mixed
Squeeker-style (OR mixing). Beware that changing channel 2's mixing mode is slow
(~200t), so avoid doing so if you are concerned about transition noise.

source code

This one was quite a challenge, and I'm not entirely sure if it was worth the effort. Somehow it sounds muddier than ulasyn. Part of it is because length counter updates are slower, but there might also be a bug lurking in one of the volume cores. I've checked them all multiple times in various ways though, and can't spot any obvious culprits.

PWM drums are slightly different from ulasyn - higher sample rate, but less volume resolution. There's no noise mode in this engine, so the samples need to make up for it.

Post's attachments

phaserF-demo.tap 7.96 kb, 8 downloads since 2024-02-05 

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

Re: new engine: PhaserF

Still, it is very impressive. I wouldn't say the sound quality is any bad, we've had worse, and it is certainly on a new level.

This one feels to be tough to make into 1tracker, but anyways, I'll try.

website - 1bit music - other music - youtube - bandcamp - patreon - twitter (latest news there)

Re: new engine: PhaserF

What would be the challenge for adding it to 1tracker? The data format is quite similar to ulasyn's. In terms of interface, it could be shown as 4 channels, perhaps calling them 1A, 1B, 2A, 2B.

Btw forgot to mention in the readme that row length is 6-bit only, due to using the I register for counting.

Re: new engine: PhaserF

Another great new engine. Very cool sound

5 (edited by Shiru 2024-02-17 14:13:17)

Re: new engine: PhaserF

I expected the challenge to be the flexible channel layouts and PWM drums, but in fact yeah, I forgot I already handled such configurations. However, there is a less expected issue, both ulasyn and phaserF use a macro to calculate their filter tables. My assembler is certainly not up to parse that, so I guess, I'll have to offload table generation into the engine script. Anyways, seems to be doable.

website - 1bit music - other music - youtube - bandcamp - patreon - twitter (latest news there)

Re: new engine: PhaserF

I could also pre-generate the tables, if that helps.