Thanks! The tracker is getting along, the main editing features are all there (no instrument editor yet), player architecture is coming together, it just started to make some sounds via crude emulation. Once I'll get the basics to work via SDL build and DosBox emulation, I'll move to the real thing on a MS-DOS rig to explore the actual sound possibilities.

At the moment I'm thinking to just drive all the control bits with software envelopes to begin with, to get most flexibility, then experiment with instruments, and maybe remove envelopes that aren't much useful.

Nice! More platforms to the 1-bit love. Having a simple tracker of sorts there would be nice, perhaps?

I can hear that Phaser1 tunes are missing the drums, is this part of the code wasn't ported?

My current strong obsession is this piece of obscurity - a late USSR (1990-91) designed sound card for a Soviet Apple II+ clone called Agat-9.

https://c10.patreonusercontent.com/4/patreon-media/p/post/65083315/6106a3384702428d8231ef84812da049/eyJ3Ijo2MjB9/1.jpg?token-time=1651363200&token-hash=cCucV35WHJCmhoOqYaSBRE9V6ANqZa4dDvhtakTf7_c%3D

It was virtually unknown to the public until five years back, when it resurfaced. Enthusiasts restored the schematics and made a modern replica of it using the authentic parts, but as Agat-9 in itself is a major obscurity, it didn't catch much attention. A very recently a guy called Tronix286 made another replica that keeps the sound synthesis part intact, but adds a regular ISA-8 bus, so now it can be plugged into any ISA-enabled old IBM PC compatible, which is way easier to get access to.

What is so interesting there? It is kind of a blend between basic 1-bit synthesis and analog sound processing. It uses a couple of the good old i8253 as square wave generators (5 channels originally, 6 for ISA version). Then the signal goes into a very basic, but analog nevertheless, amplitude shaper (can do very crude decay), and a set of passive register-controlled LP/HP filters, then it also gets into a phase inverter to get pseudo stereo output. It also equipped with crude but kinda analog bass/tom synth and a hat synth. Bizarre combo to say the least.

The resulting sound is pretty unique. It is kinda between SID and OPLL to my ear.

So I got very interested in this, got one from Tronix286 himself (huge thanks!), and is currently working on a MS-DOS (and Windows/Linux SDL fork) tracker for the beast. There is no emulation at the moment, but of course I will work on it, too. I'm posting about the progress at my Patreon and Twitter accounts, and when a runnable demo will be available, will post about it here, too.

An old sound demo from ~1991
The ISA replica related stuff in English

I guess with M68K and 6522 we can actually set the shift register to the highest shift frequency possible, hook up an IRQ fired when it gets empty, and generate bit stream for a few channels at once not in a timed loop, like we usually do, but for a few iterations ahead. So we'd have the traditional sounding beeper music that will still leave some time for other code to run.

Another idea is to have the same single voice music as I did on the PET, but modulate the volume with a timer driven rapid changes, like, triangle/saw/pulse, much among the lines of the AY-3-8910 envelope abuse. This approach won't bring the polyphony, but very complex timbres instead.

Either way, a good quality sound emulation is needed to be able to tackle the thing. I'm afraid I haven't seen an actual Lisa at any computer museum here, let alone someone's personal possession. It is even biggest challenge than the PET in this regard.

130

(164 replies, posted in Sinclair)

Yeah, can't see anything special there.

AngelScript's error messages can be kinda irritating at times, especially the 'out of bounds' ones for arrays. Like, no mention which array access caused it, so go make a guess if it happens (quite often).

131

(164 replies, posted in Sinclair)

PeskySoundZX script is probably one of the most complex ones. Have no idea what could be wrong with it, works for me under Windows, at least. Maybe try to disable JIT via the cfg file?

132

(164 replies, posted in Sinclair)

Yeah, and there is not enough personal time to those who are still up to make music. I myself have a mile long list of plans for music releases, albums and such (beeper, chiptune, synth, and so on), and some are waiting there for a decade by now. Making software is kinda less time consuming than making music to me, because at least I know the exact goals to achieve. With music it takes lots of experiments and sketches, and involves getting into a specific mood.

Actually that's one of reasons why I'm always returning to improve the software and to inventing more engines - I'm seeking the ways to balance out the amount of routine and creative effort needed to make music. 1-bit stuff is very appealing in this regard, because you have only so many sound possibilities within a particular engine, and it gets more about music than about fine tuning every single knob on a synth of 1000 knobs.

Greetings, kewatsdop!

Wow, just started to watch the video before seeing this post. Very interesting, hopefully will find time to give it a go. My list of obscure computer hardware to pay some love and get some sound of it grown a lot lately, though. Wish the days were 128 hours long.

134

(164 replies, posted in Sinclair)

v0.4 is here!

In general it was expanded a bit to adopt the numerous sample-driven engines. Script API updated, but it is a bit incompatible with the previous one. A capability to save files from script has been included, as well as capability to have a few different file dialogs within a script.

Envelope and text input editors has been improved. Now they're allow to edit envelopes and strings that are wider than the screen, and there are extra controls and visuals for more convenient navigation.

A built-in engine docs viewer in the Info tab (F6). Audio file export (Ctrl+F8).

WAV file import script updated to support files with extra info chunks (like ProTools exported, lots of garbage in these).


Ear Shaver and wtbeep engines has been updated. Ear Shaver EX, qaop, yawp, PhaserX, rawp, fluidcore, PeskySoundZX, Archie engines has been added.

Took a while, but I implemented the above as PeskySoundZX engine for 1tracker. The downside is that music data pretty large compared to the 6502 original engine, but it is not too bad, and the sound is all clean.

136

(4 replies, posted in Sinclair)

Got it supported in 1tracker. Sounds very clean and nice, indeed, which is pretty impressive for a 5 channel engine.

137

(4 replies, posted in Sinclair)

This pokemon has been caught into 1trackerball.

138

(5 replies, posted in Sinclair)

Got it supported in 1tracker, too. Paired channels in this one and some other newer engines does not seem to be a major trouble for the interface, and turned to be convenient enough to use.

139

(65 replies, posted in Sinclair)

Finally, the remainder of this bunch has been added to 1tracker. The latest additions are qaop and yawp.

140

(21 replies, posted in Sinclair)

Adopted the aligned unbalanced version to the 1tracker engine. The quiet channel is not so quiet, but we'll see. Having at least that much of difference sure should help to create more dynamic sound.

141

(6 replies, posted in Sinclair)

The engine had some issues indeed - tempo compensation was a bit off, sampled drums were corrupting the sound a bit. Got it all fixed.

Yeah, I want to explore ES concept more. It is very loud and clear, and it is kinda pleasant to the ear. Yeah, maybe getting a third channel in a mix, and some modulation to get some interesting effects.

Got a very slim 2.5mm to 3.5mm jack adapter, so it fit the deep socket of the TI84+, and it worked - I heard the sound of the HT2 for the first time. Going to play around with it now and scheme my evil plan.

So, a decade later I finally got another TI calculator, the USB-equipped TI-84+ this time, and it works. So I was able to see the HT2 running on the hardware for first time (not to hear yet, the 2.5 jack is a tricky one there).

On the installation instructions. TiLP gave me a lot of headache and did not work at all in the end, lots of issues on each step, with GTK+, with drivers etc, so I was not able to connect to the calc. The Ti-Connect worked out of box just fine, though, it was just a drag and drop.

144

(21 replies, posted in Sinclair)

I'll give them a test tomorrow. If it works, I think I'll add them to the 1tracker engine as a selectable option (like the Octode XL), so the user could choose whether he needs the classic one, +3 compatibility, or unbalanced volume.

145

(21 replies, posted in Sinclair)

Got some ideas for Phaser continuation, too, although nothing too special. Hooking up the new sampled drums code from the Ear Shaver EX is the obvious one.

146

(21 replies, posted in Sinclair)

As I was playing with it in the recent years, I came to conclusion that wtbeep is one of the finest engines available at the moment, at least in regards to the sound diversity combined with the ease of use. The two downsides are is that it is not compatible with +3 (not a big deal), and the carrier hiss that is a bit too audible at times.

So I thinking about possibilities to improve the latter issue. A couple ideas:

- Maybe do 3 sound loops, one is single channel, another is two channel, and the last one is the current three channel one. Tracker can adjust the pitch and set appropriate core per row. This will add a bit clarity, although maybe the hiss will get more noticeable, because it will be turning on and off all the time.

- Maybe make unorthogonal channels. Two with selectable waveforms, and one either a simple square tone (good enough for bass), or variable duty cycle tone. Should probably speed up the sound loop a little bit and make hiss less audible.

Another neat feature to have would be an unequal volume balance, maybe switchable on a per row basis, or two loud channels and one a bit quieter - would be good for echoing stuff. Not too sure if it can be done with the current design, though.

147

(6 replies, posted in Sinclair)

I don't think I can catch up the utz's latest mindblowing developments, but the way I think I can still contribute to development of the 1-bit music scene is to streamline the old ideas. So I was playing around with the Ear Shaver engine that I made a few years back. It never got enough love, and I was unsure on what it can provide beyond its EarthShaker roots. Lately I was making various sketches with it, and felt it actually hides a ton of potential, it just takes time to master. So I got ideas on how to improve it here and there, then the sample drums improvement idea come to the mind, and here is the outcome.

I'm kinda hyped up with the result, so I'd call it something like Earth Shaker Ultra or Ultimate, or Uberengine, but in its core it is still the same code and framework as in the original Ear Shaver. So let's it be EX, as it is still well suited to shave your ears (capable of many bizzare sounds), and we should save Uber for later, as I believe there is lot more to be achieved.

So, what's so special here? We have 4 engines in 7 flavors all in one, with capability to switch between these every row. Not that we weren't trying to do it before, but prior developments were difficult to match to the tracker concept to utilize their potential. This one managed to have very streamlined controls, basically nothing but the drum section changed from the original Ear Shaver - just two note channels with detune and waveform columns.

The engines are:

1: EarthShaker-alike, works exactly as in the Ear Shaver, with W column
   used to control the phase precisely (helps to separate repeating notes
   and to get specific sound harmonics);

2: Tritone-alike, with two channels of uneven volume. The W column controls
   duty cycle here. T2 channel is louder than T1 channel;

3: The same as 2, but with equal volumes on both channels;

4: The same as 2, but T1 plays quiet periodic noise instead of tone, the
   color of the noise depends on the note played. T1 plays loud tone;

5: The same as 4, but noise played on T2 instead, making it louder than
   tone that is played on the T1 channel;

6: Phaser1-alike. It is a single channel mode, both channels providing
   frequencies for each of the oscillators. The W column controls phase,
   allowing to get the whole spectrum of Phaser1 sounds;

7: Squeeker-alike. Provides two channels with the Squeeker-specific timbre,
   both channels allow to use the W column to control duty cycle.


The drums got support for 4 volume levels, 9 pseudo pitch levels (not a real pitch shift), and 9 sample offsets. So you can create pretty diverse percussion soundscape using just a few samples.

The engine is very fresh, I just got the parts together, and hurry to share it with the world. So probably some issues are there (drum timing compensation perhaps?). Will be testing it more extensively sometime later.

For now here is the script and a rough test.

148

(135 replies, posted in Sinclair)

Got an idea for the next gen engines that I hope to demonstrate soon in a pretty rad new (-ish) engine I'm giving finishing touches to at the moment.

We've got the sampled drums in many engines already, sometimes even non-interrupting ones. Even with the interrupting ones, why not get it one step further and allow to manipulate the sample sound on the fly, through a set of parameters like we do for our synthesized drums?

I tested three ideas and got pretty cool results in a separate test:

- The least impressive one is just a sample offset. Start each drum for specified sample offset instead of 0. A good old technique that comes from MOD trackers (I used it often in the past to imitate opening/closing filter on the reso bass).

- Volume. It is possible to get 4 levels of volume within a 120-t sample loop (~30 kHz samples). This is achieved by out'ing a value 4 times per each bit, and self-modifying nop/xor a between the outs. Much like the tone channel volume balance in Tritone and some other engines.

- Pitch. It may be tricky to implement it in a way that would not affect the drum duration in an unpredictable way (to compensate the tempo properly). And here comes a fun find. I was thinking of the modern slice-based methods of the pitch adjustment that does not affect the pitch (like YouTube's 0.5x..1.5x etc), and thought it technically could boil down to just not playing some of bits within a byte. And it actually works! At least it gives an illusion of the reduced pitch on some samples, and I assume it'll give at least some sound character changes in other cases.

149

(5 replies, posted in Sinclair)

No, I kinda forgot about that one. I do have a real hardware now (although it is Evo, not the original ZX), so maybe I'll give it another go - to make sure how it really sounds without the resampling/aliasing in emulators.

150

(5 replies, posted in Sinclair)

Was messing around with this engine recently, and has found a really good use for the W in the ES mode indeed. I hooked it up to the phase control. When the W column is empty, the phase is free running, so it sounds just like it was (full backwards compatibility). The values of 1..8 now set a specific phase for the channel at start of a note, and not only it helps to separate sequences of the same notes, which previously were sounding like one continuous note (this was a problem I was intending to solve), but also gives a fine control over the timbre of an interval that is varies pretty well.

The updated version is attached, will be included into the future releases.