226

(135 replies, posted in Sinclair)

The super fine volume/duty effect is certainly real and can be used, that's what I was referring to as having potential (will do something in this regard a bit later).

As for harmonics, yes, I suspect most of it comes from the downsampling filter in emulators, seems to be some unwanted oscillation at high frequencies. Still not clear if there is more to it.

227

(135 replies, posted in Sinclair)

Yeah, seems this technique has potential that is worth to explore further.

For now, the same thing with two channels and slides, demonstrates tons of harmonics.

228

(135 replies, posted in Sinclair)

I suspect I'm actually rehashing some old idea, just been experimenting with the phase shift to control volumes yet again. This snippet produces interesting harmonics as the volume rises very smoothly:

    ld hl,0
    ld bc,1200    ;frequency
    ld ix,0
    ld a,0
    
loop1
    ld d,0
loop

    add hl,bc
    jp nc,$+5
    xor 16
    add ix,bc
    jp nc,$+4
    xor a
    
    out (#fe),a
    
    inc d
    jp nz,loop
    
    inc hl   ;slowly increase the volume
    
    jp loop

Volume control here is made of two 16-bit adders that get the same 16-bit value added (3 register pairs per oscillator). The first one inverts the phase, the second one resets it. Volume controlled by the distance between initial values of the adders.

229

(5 replies, posted in Sinclair)

Great work! Having fading noise going on alongside the tone channels definitely brings a new quality into the sound, making it closer to a sound chip of sorts.

Yes, something of this kind is certainly in my plains, with use of all the 1-bit VSTs and some of the old engines, too.

231

(0 replies, posted in Other Platforms)

If you ever interested about making music using a modern Android phone/tablet, you probably know one of the best mobile DAWs out there, Caustic 3. Not terribly powerful compared to desktop DAWs, but very solid, packed with great synths that cover up nearly all synthesis methods imaginable, and the UI is impressively useable with a touch screen. And it runs even on a dog turd type of devices, I tested it on an old, extremely sluggish 512M tablet, and it was totally useable. The app is not free (save/export disabled in the demo), though, but it is very cheap, and there is a fully functional free desktop PC version, too (hint, you can use it on a W10 tablet).

Now, how it could be useful for our dirty 1-bit deeds. There is a synth in the app called PCMSynth. Basically it is a powerful sample player. Recently I learned that besides of its own custom format it can also load any SF2 files. There is another synth called BeatBox, a sample powered drum machine, that supports loading sounds from regular WAV files.

So we can just get a SF2 pack of beeper tones, and perhaps a set of WAV files for drums (or just the same SF2 through PCMSynth). This could get really handy to prototype some beeper music on a go.

So far I did two SF2 packs and tried to use them, seems to be not too bad at all:

wtbeep
Lyndon Sharp's three engines

Oh my, it's been two years now. Two years of 'I'm too tired today, will get back to a song tomorrow'.

At least a new related thing, sampled all three known engines as a SF2 pack. May come handy in prototyping a song with a modern tool, or to bring up these pretty unique sounds into a modern mix.

233

(21 replies, posted in Sinclair)

In meanwhile, a demo song that shows up these sounds, as well as some of my other 1-bit DAW stuff: https://soundcloud.com/shiru8bit/lost-i … it-version

Detailed info is here: https://www.patreon.com/posts/lost-in-pseudo-1-28964800

234

(21 replies, posted in Sinclair)

This engine continues to fascinate me a lot, and although I haven't released anything made with it yet, I had an idea to sample its sounds into a SoundFont (sf2), to be able to use it in a modern DAW without going full on with writing a custom VST (it would need built-in Z80 emulation, doable, but would take much longer - saved it for later).

May come handy to someone - download here. It is a clean version, no carrier hiss there.

235

(164 replies, posted in Sinclair)

There are various limits, of course, but if a song plays in the tracker, it should be exportable - the tracker creates an AY file internally in order to play the music. So it is some bug, I guess, will take a look soon.

Edit: tested it, the export works fine, TAP plays correctly, so the issue is not confirmed. Update to the latest version, perhaps? (tested in 0.29)

I deal with this kind of feedback since 2007 or so, so yeah. Still difficult to stay cool at times.

A while back, way before I took the VST route, I had a desire to support LMMS, which was the best free FL-style DAW out there. I come to their IRC channel and started to ask questions, like, how to make native plugins, are there people who would want it. They said - nah, do VST instead. So I did eventually, and I guess it has been a good advice, after all.

x64 support is there now. What I love about releasing tons of free stuff that actually worth a fortune in development, is the feedback. Previously it used to be 'oh, but it does not work on my 64-bit system'. Now when I just get this resolved, it turned into both of 'oh, but it is not for Linux', 'oh, but it is not for Mac'.

I'm sure up to making software more accessible and to supporting more platforms, but only if it does not take too much effort/resources that could be otherwise spent to other developments (or to make damn music, I got a dozens of music tools already that I have never used myself). Unfortunately, for VST it is anything but easy. The original framework documentation is exceptionally bad, VST3 is exceptionally over engineered, there is tons of compatibility quirks between hosts, none of numerous VST wrappers out there are easy to setup or use, possibility of hooking up Qt or SDL is a total mystery, etc. No wonder most of VSTs out there were made with the SynthEdit, and you can barely find a properly programmed open source one.

I'm doing a really niche stuff that is barely getting any feedback, and it is a truly demotivating thing. Moving to a niche platform with much lesser user base, especially of the target audience (music producers), that is also happens to have no money to offer (zero job offers for desktop *nix in two decades for me), is a sure way to kill any and all remaining desire to do anything at all. x64 support is just a necessary evil to keep it up now, and it is relatively easy to do.

A true story: in 2002 or so I had to break any interaction with a friend, because he moved to Linux completely (he's a web designer, so GIMP and a text editor was all he needed) and developed a habit of calling me even so often and spend long hours simply repeatedly telling me that I should drop Windows ASAP, and start to program for Linux, because Linux is the new greatest thing in universe and Windows is shit and going to die out soon anyway. This kind of advertising worked very well in alienating me from this stuff up to this day.

Did another VST, this time a thing similar to the generative music from one-line C programs: http://shiru.untergrund.net/files/evalua.zip

This one got x64 support (comes in two versions). It starts to be the main issue with all of my plugins, people are always asking for 64-bit support. So it seems you have to have 64 bit to promote 1 bit technologies these days. Going to update all of my synths to x64 support sometime soon, as well as some maintenance for PCSPE.

240

(20 replies, posted in Sinclair)

cmgonzalez wrote:

Do you have any code example for that obscure solution that you mention?

No, if I had something, I sure would publish it already. At the moment, the only game I can think of that kind of used this approach was Sea Dragon port, where I did beeper effects. It used very crude sample-like effects, like every so often during rendering a frame the game just read a bit from an array and outputted it. As it was 50 hz targeted, rendering speed was relatively steady, thus 'sample rate' was steady enough too. I don't have this code around, and can't really recall how many times per frame the routine was called. I think it was the least possible number, to avoid introducing slowdowns. Maybe 8-16 updates per frame.

241

(11 replies, posted in General Discussion)

I tried to experiment with Rombeep and ROM sound code in general some time ago, and had not much luck - they're too slow in note switching, and do reset phase, introducing unwanted clicks. Still, I believe something interesting and minimalistic can be made, probably will also get its own unique character due to the limitations.

242

(3 replies, posted in Sinclair)

It is possible to modify, but this sound effect approach specifically designed to be called repeatedly each interrupt or each game loop - to play sounds alongside the gameplay, in trade for (relatively) poor sound quality.

A shameless plug, you can use my BeepFX routines that is capable to much more sophisticated effects, but stop action while they're playing. As far as I know, it was hooked up to z88dk already: https://github.com/z88dk/z88dk/wiki/beepfx

243

(11 replies, posted in General Discussion)

I think the attention span is over by now, so I can share some stats:

46K views on YouTube, brought 160 subscribers too (up to 620)
19K plays on BandCamp, 6.5K complete plays (of a single track)
32 supporters on BandCamp (17 visible there, others supported by picking whole 'discography' or a single track from the album)
46K views of the Russian language making of article on a major IT blog website
23K views of the English language translation of the making of article at the same IT blog website (not much popular compared to US/Europe majors)

Some posts:

https://techcrunch.com/2019/02/08/feel- … d-speaker/
https://omicrono.elespanol.com/2019/02/ … -speakers/
https://www.osnews.com/story/129396/pc- … to-eleven/
https://omicrono.elespanol.com/2019/02/ … -speakers/
https://pcforum.hu/mediatar/5565/itt-eg … omponaltak

So yeah, it generated quite some attention that I did not expect, although maybe not as much as a popular 'underground' (like chiptune) music release from a well known artist would - those gets reposted all around profilic websites, mine wasn't reposted anywhere i think (besides my own posts). Anyways, pretty good for an 1-bit release. Too bad I wasn't expecting any real attention, so I didn't stiff some of ours best modern ZX 1-bit stuff to the articles in order to provide more visibility to our scene.

244

(164 replies, posted in Sinclair)

Thanks for report. Will take a look and figure it out whenever I'll get time to do another chunk of updates.

245

(11 replies, posted in General Discussion)

Wrote an in-depth article on making of System Beeps: https://habr.com/en/post/439192/

246

(11 replies, posted in General Discussion)

Reaper PCSPE export works like a log recorder. You start export, start playing music like usual, plugin catches in realtime all it receives from MIDI tracks and writes down all the data that it produces and that goes into emulated PC Speaker registers. That's the same way some YM2612 plugins work. Once you got BIN or other file format, you can make a simple player program that will just send the pre-recorded data to actual PC Speaker port. There is an example of QBasic program alongside PCSPE that does just that. If anyone needs, I sure can provide help with implementing player in other language or for other needs.

247

(11 replies, posted in General Discussion)

Thanks a lot, utz! In meanwhile, promised stuff is added.

I think next logical step would be to make a ZX monophonic engine with high quality synthesis and try to apply the same techniques to that. Like Full Throttle 2 title song.

248

(11 replies, posted in General Discussion)

Fresh and steaming, just uploaded my new 1-bit PC Speaker album to https://shiru8bit.bandcamp.com/album/system-beeps

An MS-DOS player program with all of these songs is also ready, will be up a bit later (will post a link here and there). Also going to publish all source stuff, including Reaper project files.

Edit: it is here: program and sources

249

(113 replies, posted in Sinclair)

Congrats, utz! A winner combo of impressive engine and tune! Actually wanted to use wtbeep too, but didn't have enough time to make a fully new song, had to rely on unfinished backlog.

250

(4 replies, posted in Sinclair)

As far as I remember, SDCC assembler simply does not allow 'current address', because it gets calculated at linking time only. So the second approach should help, i.e. ld (var+1),sp.