Topic: next gen engine ideas

Feeling the itch again to write some new engines, but I'm in need of some fresh ideas. So, if you have any suggestions for features you'd like to see in a beeper engine, please drop them here, no matter how crazy!

Aside from making a converter for Zilogat0r's engine, and hopefully finishing Qchan FX, there are a few things I've got on my list. One thing is to do more with wavetable synthesis. I've been playing around with a new trick I learned from one of the Dragon/CoCo guys, which helps to speed up the code from qoap/yawp by quite a bit, but I'm not terribly thrilled by the results so far.

Another thing is to do more research into volume control. Alone Coder has done some test implementations of my phase shifting idea, but that actually generated a range of new problems that need to be solved.

Furthermore, I really would like to make an engine that mimicks the sound of an overdriven guitar/bass with variable sound characteristics. In theory, that would require a method of outputting band-limited noise. However, I have no clue how to pull that off so far.

In general, I somehow have the feeling there must be more ways of manipulating sound over time. The Phaser engines are certainly a good start, but that can't be everything.

Re: next gen engine ideas

Hi utz

I wondered how long it would be before you were itching to write another engine smile

Here are some ideas I have had, if any are of any use or spark debate.

I like the Qchan type engines but if more bass or better drums were possible this would be great. The best part of Qchan (for me) are the volume envelopes as I think this opens the door for interesting synth effects.

I would like to see an engine where different types are selectable from within the tune itself. A sort of multi-engine that can swap between (for example) a phaser sound to a basic rom beep sound to maybe a PFM sound in the middle of a tune. I think this would enable tunes to have sections in different styles and make them more interesting.

A useful feature would be for a tune to quit back to basic at predetermined points in the music (to maybe allow text to be displayed) and then the user could jump back into the tune at the point it left off.

OK, wacky idea. How about a drum and bass engine with basically mega bass and a selection of drums/hihats etc.  Maybe 2 mega bass channels or even just one with digi-drums ????

Just a thought.

Re: next gen engine ideas

AtariTufty wrote:

How about a drum and bass engine with basically mega bass and a selection of drums/hihats etc.  Maybe 2 mega bass channels or even just one with digi-drums ????

I seriously got the idea to record a (black) metal album with drums only from a ZX spectrum...

I really would like to make an engine that mimicks the sound of an overdriven guitar/bass with variable sound characteristics.

That would be great!

Re: next gen engine ideas

AtariTufty wrote:

I wondered how long it would be before you were itching to write another engine smile

Always itching, just don't always have the time big_smile

Here are some ideas I have had, if any are of any use or spark debate.

AtariTufty wrote:

I like the Qchan type engines but if more bass or better drums were possible this would be great. The best part of Qchan (for me) are the volume envelopes as I think this opens the door for interesting synth effects.

Yup, same here. It would especially be great to have a (pseudo-)white noise channel along the pin pulse channels. Well, as I mentioned I've got an enhanced Qchan version in the works, which will feature full envelope control similar to Stocker. It should have some more bass, too, using introspec's technique from Octode XL. Though perhaps I should start studying Zilogat0r's Squeeker code more closely, as that would allow for even more bass.

AtariTufty wrote:

I would like to see an engine where different types are selectable from within the tune itself. A sort of multi-engine that can swap between (for example) a phaser sound to a basic rom beep sound to maybe a PFM sound in the middle of a tune. I think this would enable tunes to have sections in different styles and make them more interesting.

Yeah, been longing for something like that as well. However, my conclusion is that this is a problem to be solved at the editor end of things. If I'm not mistaken most of Shiru's engines could already be used in that fashion, as they are tuned to 440Hz (unlike mine cause I suck at math yikes). So it's basically Beepola and/or 1tracker that would need to support this feature.

AtariTufty wrote:

A useful feature would be for a tune to quit back to basic at predetermined points in the music (to maybe allow text to be displayed) and then the user could jump back into the tune at the point it left off.

A few engines, like Wham and Music Studio already support this feature. Nevertheless it's a good point for other/new engines, and it isn't even that difficult to achieve.

AtariTufty wrote:

OK, wacky idea. How about a drum and bass engine with basically mega bass and a selection of drums/hihats etc.  Maybe 2 mega bass channels or even just one with digi-drums ????

qoap and yawp would be capable of doing that. But again, the problem is that there aren't any editors yet that support the full feature set of these engines. And unfortunately the whole editor business is a bit over my head, can't even figure out how to do plugins for 1tracker.


garvalf wrote:

I seriously got the idea to record a (black) metal album with drums only from a ZX spectrum...

Hehe, I do my live performances with some black metal vocals big_smile So +1 for your idea!

5 (edited by garvalf 2016-01-11 20:29:43)

Re: next gen engine ideas

utz wrote:

Hehe, I do my live performances with some black metal vocals big_smile So +1 for your idea!

This one is not 1-bit with black metal voices but 8-bit with death metal voices wink  =>  https://mattcreameraudio.bandcamp.com/album/anomaly

Re: next gen engine ideas

How about kind of groovebox for ZX of for instance qaop engine ? I will be playing my first ever chip gig in March here in Finland, would be really cool to play 1-bit realtime engine smile !!

Re: next gen engine ideas

Yeah, I've been wanting to make something like this for a long time. However, it's no trivial project, I'm looking at at least 2-3 months of work here. I still know near to nothing about Spectrum graphics, so I'd need to learn a lot of new things. I'm afraid I won't get around to it in 2016.

Re: next gen engine ideas

Yes, thought so. I am planning (but not sure if I am able to finish) to make a version without graphics, ie. without display at all, just CPU/keyboard, 16 steps, all controls from keyboard, changing samples/beats and pitches during performance. Let's see, I need to write in C/Basic (z88dk, Boriel) and include assembly as inline, not exactly something I am competent smile

Re: next gen engine ideas

Doing this without display output would indeed save a lot of time. Why do you need to write it in C/Basic with inline asm though? I think just asm might be easier even if you don't know a lot of asm.

Re: next gen engine ideas

Yes, it would, and makes things easier many ways (including traveling etc). To write all in asm would take too much time, I would need to learn more in short span of time, not much time to the gig, and I really would like to play 1-bit stuff there (too, I am also writing programs to Gameboy and possibly to some third device as well). I thought to put engine as inline asm, write rest, timing, realtime mods etc, with C or Basic. Like music.asm part in realtime, possible to modify pitch/drum data on the fly.

11

Re: next gen engine ideas

In the worst case you could still use my rom2pwm craptility, though it's definately not very useful.
My website is down again so I'm attaching it just in case.

Post's attachments

rom2pwm.tap 309 b, 3 downloads since 2016-02-03 

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

Re: next gen engine ideas

Coool, thanks utz ! Can I ask source code for this, might be useful as it contains keyboard reading etc, I could learn some assembly same way smile !

13

Re: next gen engine ideas

Sure thing, here you go. May not be the most useful thing though as it's hardly commented.

If you want to learn the basics about keyboard reading and such, check out the wonderful "How to Write ZX Spectrum Games" by Jonathan Cauldwell: http://www.sendspace.com/file/alhxcq

Post's attachments

rom2pwm.zip 1.68 kb, 2 downloads since 2016-02-04 

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

Re: next gen engine ideas

Thanks utz, very cool small code, undestand it mostly, need to check few opcodes I don't know. The sendspace link doesn't work, possibly date limit expired.

smile !!

15 (edited by Shiru 2016-03-06 01:23:36)

Re: next gen engine ideas

Not really next gen, but something that I think hasn't been tried yet: mix a FuzzClick-like PFM engine with Music Box-like engine.

FuzzClick has two 50t delays between channels, so there is quite a lot of time to add extra channels, but adding the same PFM channels adds serious cross-detune. However, adding a Wham-like channel (xor'ing an output at counter overflow) won't introduce detune, as it is fixed-time code that could be added instead these delays.

How to add it is the question. I experimented with it, and it seems this will give interesting result:


sound loop

first counter and pulse on overflow (as in FuzzClick)
50-t delay (as in FuzzClick)
second counter and pulse on overflow (as in FuzzClick)

third counter and the extra chnanel output flip on overflow
output third channel to #fe
short delay (affects the volume, to make proper volume balance)
output 0 to #fe


This gives quite clean square tone and still-recognizeable timbre of FuzzClick-like engine for the other two channels.

Unfortunately I can't provide example code at the moment, it is complete mess, but here is what it sounds like. Of course it is not something as impressive as latest utz's wavetable engines, but still, interesting mix of two kinds of the 1-bit sound.

http://shiru.untergrund.net/temp1/pfm_square.wav

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

Re: next gen engine ideas

Like the sound in the example. As you say, a pretty clean sound but still retaining the synth timbre from a pfm engine. Could be a very interesting new engine !  smile

17

Re: next gen engine ideas

Very interesting and pleasant sound! Wavetables are nice and good, but this is something that's uniquely 1-bit/beeper sounding while at the same time moving forward in terms of technique. Would definately use an engine with this.

18 (edited by utz 2016-04-05 14:48:04)

Re: next gen engine ideas

A new breakthrough! Just implemented a low-pass filter. Check out the attached .tap - first pattern is without the filter, second with low-pass enabled.

The low-pass is implemented with this simple algo:

y[i] = a(x[i] - y[i-1])

where y is the actual output volume level, x is the unfiltered output, and a is a (time-related) constant, in this case 0.25. Using a = 0.125 gives better results, but I'd need to implement more volume levels to use it.

I tried implementing a high-pass, too, but so far no luck on that, because the algo for that can produce negative values (unlike the low-pass one where the result will always be >=0). The high-pass algo I have is

y[i] = a(y[i-1] + x[i] - x[i-1]) 

Any idea how to modify it so it'll always produce positive results? I could probably invert the output but that'd be too slow I think.

EDIT: Nevermind, got it. The current implementation is ugly as hell, but hey, it works wink

Post's attachments

test.tap 6.74 kb, 12 downloads since 2016-04-05 

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

Re: next gen engine ideas

Very interesting sound and variation smile

Re: next gen engine ideas

Very impressive. There is like 100 engines already, but beeper continues to amaze. So does utz.

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

21

Re: next gen engine ideas

Cheers guys! Yes, I'm pretty sure there's more that can be done with the beeper. I'm just kind of running out of (feasible) ideas again.

Right now I'm doing some tests with dynamic duty cycles, but that seems to be surprisingly unuseful. I mean you can do some nice chords with it (Earth Shaker style), but other than that implementing an extra counter for the duty cycle seems to have little advantage over just incrementing the duty setting once per sound loop, like I do in Houstontracker. The extra registers needed for full duty cycle control can be put to better use elsewhere imo.

One thing I'm still pondering about is the Jan Deak's buffer based method. I mean it's blazingly fast, but what uses could it have besides generating a truckload of pin pulse channels?

Also, Shiru, did you get any further with your Fuzz Click/Music Box hybrid?

22 (edited by Shiru 2016-04-07 16:06:53)

Re: next gen engine ideas

Not yet, did some experiments, wasn't really satisfied, but I'm going to try some more.

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

Re: next gen engine ideas

utz wrote:

A new breakthrough! Just implemented a low-pass filter. Check out the attached .tap - first pattern is without the filter, second with low-pass enabled.

The low-pass is implemented with this simple algo:

y[i] = a(x[i] - y[i-1])

where y is the actual output volume level, x is the unfiltered output, and a is a (time-related) constant, in this case 0.25. Using a = 0.125 gives better results, but I'd need to implement more volume levels to use it.

I tried implementing a high-pass, too, but so far no luck on that, because the algo for that can produce negative values (unlike the low-pass one where the result will always be >=0). The high-pass algo I have is

y[i] = a(y[i-1] + x[i] - x[i-1]) 

Any idea how to modify it so it'll always produce positive results? I could probably invert the output but that'd be too slow I think.

EDIT: Nevermind, got it. The current implementation is ugly as hell, but hey, it works wink

Great job, as always!! Well done!
Next step, to play .SIDs through an unexpanded 48k Speccy!!
big_smile big_smile

24

Re: next gen engine ideas

Thanks mate!

Seems I omitted part of the formula for the low-pass. It should be

y[i] = y[i-1] + a(x[i] - y[i-1])

In any case it's a lovely algorithm, because with the multi-core digi synthesis I'm using lately it can be implemented without using any extra registers.

Re: next gen engine ideas

it sounds great... it seems the is no limit to your talent and creativity!