Topic: new engine: pytha

Yep, still totally retired from making new beeper engines... ah, damnit.
Alright then, say hello to Pytha, the first beeper engine that can generate triangle waves in realtime, without wavetable lookup. Just two channels, both of them do the same thing. In addition to triangle waves, there's also saw and pulse (rectangle). There's also an LFO-controlled modulator thingy, which does some weird sweep/resonant filter fx. With the LFO turned off, the modulator can also be used to set the duty cycle for the pulse waveform. All the base waveforms can be turned into noise as well. And of course, there's the usual click drums, with variable starting pitch and slide speed for the kick, and variable volume for noise. The LFO runs at a fixed rate. Tried making that variable, but unfortunately it creates too much noise. It'd also be nice to shave a few cycles from the synth loop for better sound. There's actually 10 cycles wasted on timing, however they are in a really bad spot so it's hard to reduce them to 2.

Anyway, won't make an XM converter for this, for obvious reasons. Got a working MDAL config for it, though, just need to polish up a few things on that. For now, the source code is in the github repo, as usual. Short demo tune is attached.

Post's attachments

pytha-demo.tap 1.5 kb, 15 downloads since 2017-06-09 

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

Re: new engine: pytha

Haha, I knew you wouldn't be retired from beeper engine creation for long mate smile

Sounds interesting, I'll check it out later, when home from work smile

Re: new engine: pytha

Whoops, just noticed that I miscalculated the timing, 220 cycles instead of 224. Got a version which runs in 216, but the improvement to the sound is barely noticable so I'll leave the engine as it is for the time being.

Re: new engine: pytha

Wow, love it mate.
Great sound, don't think I've heard Beeper synth like this before.
Even the slight interference sort of adds to it, makes it seem more live.

smile

Re: new engine: pytha

Lots of HF noise, the border stripes visualize the noise.  Does masking the border bits add much time to the routine?

Re: new engine: pytha

Hmm, that shouldn't be the case. There is some noise on the pure triangle, and the modulation effect has a pretty sharp sound, but it should be tolerable (unless my ears are getting bad). Are you running on hardware or Fuse emulator? Most other emulators have problems with this type of fast-switching synthesis.

Border masking would cost a lot of cycles, so unfortunately it's pretty much impossible.

Re: new engine: pytha

Ok, here's a hardware recording: http://irrlichtproject.de/transfer/pytha-demo.mp3
Could be cleaner, yes, but still it's nothing a little equalizing can't solve, I think. I'll have another go at shaving off a few more cycles, though, which should push that HF noise a bit more towards the inaudible range.

Re: new engine: pytha

Thanks utz, sounds great.
Much clearer than on emulators.

Excellent synth on this engine smile

Re: new engine: pytha

another wonderful engine, thanks and congratulations Utz!
You're pushing more and more the boundaries of this damn beeper!

10

Re: new engine: pytha

Cheers guys wink
Ok, here's an updated version in action: http://irrlichtproject.de/transfer/pytha-demo2.mp3
While still not clean (of course, it's beeper, damnit big_smile), there's a slight but noticable improvement I'd say. Btw just to be clear, both recordings are 100% raw, no EQ or filtering applied.

Post's attachments

pytha-demo2.tap 1.5 kb, 11 downloads since 2017-06-10 

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

Re: new engine: pytha

Thanks utz smile

Definitely sounds cleaner on fuse and the real hardware recording.

On Spectaculator I think I still prefer the first version of the engine as the parasite tone is lower pitched and doesn't seem to interfere with the tune as much imo

Re: new engine: pytha

Now that's some black magic is going on here.

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

13

Re: new engine: pytha

You actually deserve some credit on this, since it was you who brought to my attention that we get a saw wave for free from the frequency calculation wink Triangle is basically the same thing, just have to negate the channel accu hi-byte if it's >#80.

14 (edited by garvalf 2017-07-02 22:17:14)

Re: new engine: pytha

I'm working on a tune with this engine (thanks to 1tracker). It has some very interesting effects, and it's quite enjoyable to fiddle with this! The LFO in particular is fun.

15 (edited by garvalf 2017-08-11 08:39:19)

Re: new engine: pytha

I have a question about the 1tracker version of this engine. If I understand well, the last column, for drum, has D, prm and Kp. D set the drum type (1=kick, 2=hihat, 3=snare), prm set the parameter for kick (slide speed), Kp more parameter such as starting pitch.

How can we reset this in 1tracker? I wanted to add some effects to the drum, but if I set let's say 002 in the prm and 64 into Kp, I can't go back to "normal" mode, because 0 (empty) is like no new parameter has been set so it continues to has the effect and there is no way to reset the previous ones.

Also it looks like the volume for noise drums such as hithat (2) is working with a value into prm, but not for snare (3)

It's not in the doc but the little d close to T1 and T2 is for detune. That's convenient.

1        drum configuration
        omitted if bit 2 of word 0 is reset
    0..7    drum parameter
        if mode = kick, set the slide speed
        if mode = noise, set the volume
    8..14    if mode = kick, set starting pitch
    14..15    set drum mode:    00 = kick
                10 = noise hi (hihat)
                11 = noise lo (snare)

16

Re: new engine: pytha

If I'm not mistaken, it's basically a matter of resetting prm and Kp to their default values. Looks like it's 256 for prm, and 64 for Kp.
Seems like the doc is wrong, too - Kp should be in bit 8..13, obviously. My bad wink

Re: new engine: pytha

if I set prm to 256 the value disappear in 1tracker, like for 0. If I set something else (I haven't tried all values though), I get some slides, so after setting it once, I can't cancel it.

Re: new engine: pytha

Default settings for drum is 20 (slide) and 2 (pitch).

On a side note, yeah, there is a little mess with lack of zero value in 1tracker. I didn't thought it could be important when I started the project, now it would be quite difficult to add it, all engine scripts would need a fix to support that. But I'll get to it eventually, as it makes things more obvious (0 to disable something).

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

Re: new engine: pytha

oh yes, I've seen this code several time but I didn't come to the conclusion it would have been the default settings, it was obvious anyway.

    drum_type=0;
    drum_slide=20;
    drum_pitch=2;

thank you, it helps!

20 (edited by garvalf 2017-08-28 06:33:09)

Re: new engine: pytha

Here is my first tune using Pytha:

http://garvalf.online.fr/var/upload/mus … rciere.tap

a rendered version from my ZX (first tune in the list atm): http://garvalf.online.fr/index.php?page=musiques_zx.en

Re: new engine: pytha

Great tune Garvalf, particularly like the first half. Love the sound from this engine smile

Did you use 1-tracker to create it?

Seems to crash at the end though?

Re: new engine: pytha

yes, it's 1tracker, there is the source in the second link. It shouldn't crash at the end, maybe it ends a bit quickly...

23

Re: new engine: pytha

That's a lovely tune, Garvalf!