651

(20 replies, posted in Sinclair)

No fancy samples and sh*t this time - just finally finishing off a project that has been on my to-do list for the longest time: A remake of zilogat0r's Squeeker engine! Various cool features added, quoting the readme:

- 4 tone channels, mixed PFM/PWM synthesis
- 2 interrupting click drums
- per-tick duty cycle envelopes
- channels 1 and 2 can play fixed-pitch noise instead of square waves
- channel 4 can use a fast pitch slide for drum simulation
- mixing at approx. 9511 Hz.

I did make an XM converter for this one, but it is very rough code (as is the whole engine, it's got character, to say the least) and needless to say, it does a rather poor job of simulating the sound. Awaiting your bug reports, in any case.

download (XM converter included)
source
demo tune

652

(17 replies, posted in Sinclair)

I'm considering putting together a seperate sample pack at some point. Though at the moment I really can't be bothered. Those endless searches through vast sample libraries is what turned me away from making (PC-based) sampled music many years ago big_smile

653

(17 replies, posted in Sinclair)

Haha, words can't describe what a massive pain in the a*** this was.
I didn't follow your suggestion of including some samples/instruments after all, because hopefully it should just work with any random sample out there now. Even random MOD imports should theoretically be reasonably safe now.

Yeah, the mobile view uses a different css, haven't touched that at all.
Does the main menu work on mobile for all of you? Because it sure is broken when I set a small viewport in Firefox.

655

(17 replies, posted in Sinclair)

Updated the xm2zbmod converter. Fixing the relative sample offset bug was one of the hardest things I've done in recent times, certainly more difficult than the zbmod engine itself.

The new converter brings some changes, namely:

- 16-bit samples are now supported.
- Relative sample offsets other than F-6 (+29) are correctly handled now, as long as they're positive (ie C-4 or higher).
- The note range is no longer fixed. It's still 4 octaves, but the lower and upper limits will vary slightly (at most +/- 1 octave). You can run xm2zbmod with the new option "-r" to see what the actual range for each used sample is.
- You can now supply the option "-i <filename>" to convert a module that isn't named "music.xm".

I doubt the converter will be free of bugs yet, but I'd say it's at least ready for some beta testing.
Download is at https://github.com/utz82/ZX-Spectrum-1- … p?raw=true as usual.

My girlfriend pixelled another background thingy. I think this one looks even better, and unlike the previous one, it doesn't flicker (at least not as much) when scrolling.

With this background, I should probably make some tweaks to the header proportions and such. Will see about that later. Also, still want to get rid of all those shades of blue, but there's a truckload of settings for that and I haven't come up with a good, consistent new scheme yet.

Generally speaking, I don't want to go too Spectrum-y with the layout. I know we mostly talk about Spectrum here, but I'm very much in favour of broadening the scope a bit, ifyouknowwaddamean.

Alright, fixed the floating links. Not the most elegant solution but I've had enough fiddeling for today.
Ok then, I'll keep the background for now, and we can decide later if we stick with it for good or not.

Ok, some more tweaking done. Not sure about the tiled background, it flickers like hell on my browser. Also I still need to sort out various bits and bobs here and there, like setting background for those "floating" links. Anyway, what do you guys think so far (especially about the background)?

I also still don't understand why the mobile view is broken. The code for responsive design in the css is there, but it doesn't seem to be triggered properly. Perhaps the error is in the PHP code, which means chances of me finding it are low.

So I've finally managed to implement this header image. Thanks again to PROTODOME for the awesome design!

Hope it works ok for everyone, It was quite a hassle to fiddle this into the layout. I'm not entirely happy with it yet. For one, I would like to bring back the sub-heading text ("complex music from simple devices"), preferably without adding it to the image itself. Also, for the future I think styling the forum a bit more appropriately would indeed be nice. Not sure if a tiled b/w background wouldn't be too busy, but I'm gonna try some things once I  find the motivation to fight with the forum css again.

Yes, the guy surely has talent. And indeed I find the sound of the zeta engine to be quite pleasing as well, and contrary to what he's said, it doesn't sound bad at all on contended machines.

661

(115 replies, posted in Sinclair)

Not sure about the motivation behind that. I assume it's because Speccy demosceners are aware that the challenge lies in masking the effect. Also, because having those stripes in the border might distract from the actual design of the demo (or game). In the end, it's a matter of taste methinks.

A comment from Oleg Origin:

Oleg Origin wrote:

I have made a lot of beeper engines a few years ago (6 main engines and some versions). I called them simply: alpha, beta, gamma... This is called zeta. (And title of this unfinished track: 'Antivirus'). Digital drums are grabbed from Dark Fusion (I disassembled this engine) and cropped. I have also written s3m converter for these engines. However, it didn't intend for public release (pre-alpha, in fact). I didn't publish source codes, but, actually, this engines work with standard methods of synthesis smile
And all of them not really well sound on original machines with contended beeper port =/
I planned to use them in the following games...
3ch 'Gamma' engine sounds in Metal Man Reloaded / Remixed (slightly different versions).

More about the aforementioned games at http://olegorigin.org/zxgames.html.

Oleg Origin also said he's considering a proper release of his engines. Also, he was kind enough to share his disassemblies of the Dark Fusion and Trantor engines. I'm attaching them here with his permission (shitty google translated comments added by yours truly).

663

(1 replies, posted in Atari)

Nice, thanks!

664

(115 replies, posted in Sinclair)

Indeed, the border fx are a by-product of the sound generator. It's like this in almost all engines (because the port that sets the beeper state also sets the border colour), so usually there is some small chunk of code to explicitly mask the border fx. I personally like border fx (and will sometimes even customize them a bit, like in beepertoy), but it's considered bad style in the demoscene. In case of Squeeker border effects would be especially tedious to mask, so as the engine was written to be compact, there is no masking.

665

(3 replies, posted in Sinclair)

Ah ok, gotcha. Yes, wav2smp.pl takes raw headerless 8-bit, it doesn't really care about sample rate iirc. But I faintly remember there was a problem with that script, so it possibly produces incorrect results. I'll look into it if I can find some free time. You might as well write your own replacement. It's also possible to directly use raw wav (with the usual limitation of volume resolution), all you need to do is change the INCLUDE statements in samples.asm to INCBIN statements.

As far as textures go, I think besides basic waveforms, some simple percussion instruments (kicks, hi-hats) should also be possible to pull off. For anything more complex the 256b limit and especially the low volume resolution will probably prevent any recognizable results.

666

(115 replies, posted in Sinclair)

Hehe yes, Squeeker is quite a beast. I'm planning to do an enhanced version with drums and stuff soon.

Anyway, up next: Chaos Constructions!

667

(3 replies, posted in Sinclair)

Samples for qaop must be exactly 256 bytes long. So simple waveforms will work best.
Also, volume range is limited to 6 steps in total (ie for both channels combined). You can overdrive up to 12 levels, if this limit is exceeded the player will malfunction. Nominal sample rate is 15625 Hz.

668

(115 replies, posted in Sinclair)

Results:

1   8.06   Brink - Just the Tip
2   6.38   AER - SecondMoon
3   6.23   Misha Pertsovsky - Waltz of Ice
4   6.03   Tufty ^ 1-bit forum - Mechanoid
5   5.77   utz ^ irrlicht project - fnk dz
6   5.57   Kakos_nonos - Все идет по плану (ГО кавер)
7   4.84   Abrimaal - Teddybear's Funeral
8   4.67   Lis O'Kryl ^ Therac-25 - Brexit
9   4.29   Garvalf - Horned gods

A bit disappointed with the outcome, but well, there were some very nice works in the compo.

669

(4 replies, posted in Other Platforms)

Ah yes, found the mp3. It does indeed sound quite noisy hmm Some of that might be from the emulator, though.
But I do see room for optimizations.

   ld (Save_RegA),a
   ld a,_LOW
   ld ($1800),a         ;du son à Hector !
   ld ($1800),a         ;du son à Hector !
   ld a,(Save_RegA) 

should at least be

   ld (Save_RegA),a
   ld a,_LOW
   ld ($1800),a         ;du son à Hector ! - why twice? once should be enough?
Save_RegA equ $+1
   ld a,0

and since BC is unused, in most cases even

   ld c,_LOW         ;outside of sound loop
   ;...
   ld b,a
   ld a,c
   ld ($1800),a         ;du son à Hector ! - why twice? once should be enough?
Save_RegA equ $+1
   ld a,b

should do.

system-cfg.com seems like a nice place, I'll think about signing up. Though my French is really too crap for holding a proper conversation.

670

(115 replies, posted in Sinclair)

Thanks for the reminder, Vinnny! I still haven't prepared anything, but I hope I'll find some time this week.

671

(4 replies, posted in Other Platforms)

Excellent news, thanks for sharing. And of course, my respects to the author!
I'll have to see if I can get emulation going somehow, very curious how this sounds. I'm afraid adapting the code to memory-mapped IO might not have had the best impact on those tight timings.

672

(4 replies, posted in Sinclair)

Hehe, thanks mate wink

Well, I have one more crazy idea that I need to put into practise, but after that I should really take a break from this stuff. Going totally nuts on it.

673

(17 replies, posted in Sinclair)

Well, they *should* emulate the mic port. But in reality it seems the majority of emulator authors chose to emulate the beeper by ear (and I mean an actual human ear, not the socket) hmm. The ear port behaviour is actually not very well understood, and there are currently no emulators which emulate it accurately afaik. The ear port has a high latency (meaning it can take a few thousand cycles before output to the mic socket can be detected on ear), and this latency seems to vary quite a lot between models and board revisions.

There is indeed also the possibility to use the ear port directly for sound, but the results are rather unpredictable (see http://problemkaputt.de/zxdocs.htm#spectrumsound). Hence my conclusion is that it's not worth using it, except perhaps to give a little extra overall volume boost. Alone Coder does that in his engines. I usually stick to outputting 0x10 (just mic), but for example Beepertoy uses 0x18 (mic+ear) in a rather unsuccessful attempt to boost the click drum volume.

674

(17 replies, posted in Sinclair)

Why of course, you should always use the mic socket wink

Yes, overall volume is quite low unfortunately. One could probably get a little more volume by properly maximizing all samples, but overall there's not much that can be done about it, I'm afraid. Still experimenting though wink

675

(4 replies, posted in Sinclair)

Alright, one last engine before I'm going to take a couple of weeks off. This one is quite a beast, but the bad news is: there won't be an XM converter for this one. For details, I'll just quote the readme, I guess:

BEEPERTOY is a multi-paradigm sound routine for the ZX Spectrum beeper. It 
generates sound through a number of different methods, including pulse frequency
modulation, pulse interleaving, and wavetable synthesis. It also features some
advanced effects such as low- and high-pass filters, and a simple reverb.

Beepertoy is made up of a number of different "cores", each providing a 
different configuration. The user can switch between cores at any time between
two notes.

The available configurations as of version 0.1 are:

1) SQUEEKER EMULATOR: 4 channels of short pulse with configurable width
2) 4x PIN: 4 channels of pin pulse
3) TRITONE EMULATOR: 3 channels of square wave with configurable duty, with 
      various noise/glitch modes
4) OCTODE EMULATOR: 8 channels of pin pulse
5) 3x WAVETABLE + FILTERS: 3 channels of wavetable synthesis (256B tables), 
      optional global lo/hi-pass 
6) 2x SQUARE + FILTERS + VOLUME + FX: 2 channels of square wave with 
      configurable duty cycle, volume control, reverb or fixed-pitch sample, 
      optional global lo-pass, one of the channels can play noise
7) ROM NOISE: simple noise generator
      
All configurations provide additional support for configurable click drums.

There's explicit versioning on this one, because I intend to further expand and improve it in the future. For the time being, I have no specific plans other than adding a "mute" core which will output silence for a given length (so you don't have to waste too many bytes on this), and increasing drum volume a bit. But there's still lots of free memory available, hoping to fill that up with more features later on.

download
source
demo tune