Updated a little bit, fixed the annoying GUI flickering during plugin load.

Also a shameless plug, just released ChipWave, a synth plugin that has many characteristics of old sound chips such as AY, SID, POKEY, as well as some features that come from 1-bit synthesis. You may find it interesting.

The musical is a very cool work, I should say. Very well done overall, and the 1-bit part fits there so well.

I don't really have time to play the auction games, and the buy now prices is not that dirt cheap - it is a price of an used PS4/XBO here, and I don't even know how much the delivery would be, because almost no one sends to Russia. Likely as much, judging by past experiences. And the local prices is downright crazy, $500-1000. I can't afford any of it.

I'm sure it is possible to squeeze out some beeps out of it.

Actually, Odyssey 2/Videopac is my personal childhood dream. It was like the first 'home computer' (complete with keyboard) I ever seen in a German catalog, and I never seen one in real life, so I was puzzling what can it do and what games it could play, looking to the pictures in the catalog. Still thinking to get one and try to program something for it, a crude tracker/music editor perhaps. But it is quite expensive to get one here, so it always gets postponed. Maybe someday.

280

(164 replies, posted in Sinclair)

No, not yet.

281

(5 replies, posted in Sinclair)

Here it is

282

(5 replies, posted in Sinclair)

So, we're all failed to support this one. Only one beeper song from AER, 14 entries total, mostly AY music.

I was hoping to do a beeper track with the new engine (Ear Shaver), but other things interfered, so only finished the engine itself when the compo was already running.

283

(4 replies, posted in Other Platforms)

Yes, I remember that attempt with ED, but as far as I know it always had no sound in the editor and no playable output format, it basically used 1tracker as a text editor with a script to compile external data to be used with actual ED engine on Apple 2. I think it would be nice to have a proper support of (some subversion of) this engine.

Nice one!

Can you show a screenshot of how it looks in your DAW? I'm interested to see if my readme explains the intended workflow clear enough, and how you arranged the things.

285

(4 replies, posted in Other Platforms)

Very interesting find and read, thanks a lot! I always thought that ZX beeper music had some missing roots, maybe some computer science magazine or something, where authors of early engines got inspiration and techniques to develop further. Appie seemed a good candidate to be a platform where techniques could have been created, as it predates ZX well and has the same sound capabilities.

The MusiComp is very interesting too. 1980, and it has various duty cycle and something similar to duty modulation. Resembles early non-square wave single channel engines for ZX, such as the first Follin's one.


Maybe I should try to get some Electric Duet support in 1tracker? Just to have that sound color of the past in the sound palette. There is no Apple II sound rip format unfortunately, but there is NES and Atari 8-bit formats support, maybe it can fit there. I would have to make an AngelScript 6502 assembler for better convinience, though.

Another way is maybe try to recreate the engine as close as possible on Z80? Plenty of ZX Spectrum engines got ported to Atari 8-bit, and sounded much the same, so reverse process should be also possible.

One interesting thing to consider about these devices is that, like I mentioned, most of them using a 32768 Hz crystal. That's so called 'clock crystal', normally found in digital clocks, it has this specific frequency exactly because it is so easy to get 1 Hz clock out of it by dividing it by 32768 (just 15 D-triggers in sequence).

This, however, means, clock speed of an MCU is normally just 32768 Hz, i.e. it executes 32768 1-t opcodes in a second. We get used to have a 10-30 KHz sample loop in our ZX engines, but you simply can't have a loop that fast on an 4-bit MCU like that. Considering it is 4-bit, there is going to be a plenty opcodes even with simplest 8-bit counter based sound generation loop. Even if you have to generate just a 440 Hz tone, you can only have 32768/440=74 opcodes to do this! So a way to overcome this limitation has to be found, and I think that's what makes these specific non-pure square tones in old electronic games.

Recent castpixel's post made me think that we kind of missed a whole big underground of 1-bit sounds and music. One that we can't really exploit due to the nature of the things (one time programmable, made to cost the least possible amount), but it is still interesting in a historical perspective.

In my own experience, in my childhood I was very impressed by a keychain with like 8 buttons, making various sounds effects and melodies through a small speaker. There were plenty of those, some of them responded to a whistle. Here is a video of one of them, very similar to one I recall. As I realize this might be one of the earliest examples of 1-bit synthesized sounds I ever heard.

Then there were wristwatches with many melodies. Many of Casio ones, also a very popular brand Montana. Here is a video.

Later there were many musical greeting cards, paper ones that start to play a song when you open it. Today they all fancy and play digitized audio, but early ones had just a piezo with a monophonic melody, very similar to the wristwatch. Turns out to be somehow difficult to find a video of those now.

I also recall a Russian IC to make door bells, I think yet another clone of something older and similar from the West, first appeared in early 90s. It also played a monophonic melody. In fact those chips are still made, in dozens of versions with different songs! Have no slightest idea who would need them now. Here is a video.

I think I also have heard something non monophonic and non square wave among these things, but can't remember it now, besides those Brick Game toys.

I don't know what exactly is inside those devices, but I suppose it is some 4-bit MCU, similar to the SM-510 or TMS1x00. Most of these devices use a 32768 Hz crystal, so it must be something more fancy than just a set of counters and a ROM (a hard logic implementation of a song player).

288

(5 replies, posted in Sinclair)

Yes, no effect for W (duty) for ES. Was thinking what can I do for it, but not found an interesting application so far. Maybe will come up with something, so it will be Shaver 2. Would certainly add some noise mode there, maybe a Phaser and QChan like modes too.

Was thinking on those variable-channel engines too. Yes, it is just to difficult to fit into a generalized tracker design. One crude way would be just ignore extra channels in some modes, and add a large general purpose effect column on the side, so each engine will pick only values it needs to from there.

Like,

C-1 123 C-2 123 --- ... ---... ABCDEFG

Four chanenls first, some may be not used in some modes, and values of the ABCDEFG block get interpreted depending on currently active engine. Internally they may be compiled into different structures, or maybe just change a small array of parameter bytes, and each engine will interpret some of the bytes in its own way.

289

(5 replies, posted in Sinclair)

A new simple engine is made and added to 1tracker. Nothing too special, but it mixes a few features of various engines: the Earth Shaker engine sounding one (but implemented in a different way), two-channel Tritone-like engine, and sampled drums. This provides a major variety in the loudness, so it may get more dynamics to the 1-bit music.

The engine has two separate tone generation loops, either of those can be invoked for every row, both sharing the same register set to store accumulators and adders, as well as same timings (120t for sound loop, ~30 Khz sample rate). Technically even more different types of engines can be combined like that.

290

(164 replies, posted in Sinclair)

A new engine added without changing the version, Ear Shaver.

if you want to do an authentic sound of a LCD game, you should also consider memory constrains. The early games didn't have much of jingles and complex sound effects just because the mask ROM size is so limited on SM-510 or TMS1x00. It is just 1024 to 4096 bytes for everything, and it seems the code is quite sparse on those 4-bit MCUs - I mean, it needs more operations to do things because of limitations of the architecture.

Later LCD games, however, had quite a lot of music pieces, sometimes polyphonic, with white noise, or even actual (not LPC encoded) voice samples - for example, some of Brick Game versions. Those might be using some kind of 6502 core, but it is not known for sure.

So I guess you need to pick a period of LCD gaming, and if you want to stick to early ones, keep everything at minimum, if you going for later ones, add more stuff.

I would keep the overall pitch a little bit higher, it will sound better. That's due the way 8253 works, it does not restart count right away once a new divider is loaded, so if your pitch gets very low, like in a kick drum slide, to a few dozen hz, then you need a high pitched sound, it won't start until one period of the low pitched sound gets completed. So if the pitch was at, say, 24 Hz, it may take up to 1/24 second before higher pitch will take effect, but that maybe a time to play another pitch (arpeggiated) already, and it will sound distorted and kind of like having weird gaps or drop outs.

If you always keep pitch weil above the 'frame rate', it will sound good. I.e. if you use 60 hz update rate, try to keep your pitch not lower than 60 Hz, better to keep it higher than 60 Hz most of the time.

Arpeggios is not a problem for piezo speaker itself. Frequency response is, it cuts most of the low and mid-low end (like up to 700 Hz), and has various resonances in the higher end. Take a look:

https://a.pololu-files.com/picture/0J1721.1200.jpg?515c0c5df075fcd84c23e5d32ea31807

Remembered a fun fact, by the way - there is some quite extensive docs on the instruction set of SM-510 and its internals in Russian. It has been published in an IT mag back in 1987, because the Game & Watch has been cloned back then, complete with the MCU and mask ROM containing the Game & Watch program and Nintendo word in an unused area of the ROM.

As an alternative for Monotone, you can use my PCSPE VST plugin. It allows to create very complicated single channel music for actual PC Speaker, and you can use it with your favorite DAW. You can use some of my impulse responses to make it sound like a piezo as well.

Tamagotchi said to have a 6502 core inside. Bandai's LCD game is probably something along the lines of TMS1000.

It is sure possible to make some music routine for SM-510 that would sound more interesting than simple beeps. However, nothing has been done in this area yet, because this isn't some popular thing, it was reverse engineered and emulated just recently, and there is simply no development infrastructure yet. Like, you need an instruction set doc, an assembler, an emulator that allows to test your code, and you likely won't be able to run it on the original HW, as it uses mask ROM.

Another crazy idea to expand the world of 1-bit music.

There is a thing among electronics engineering enthusiasts - homebrew CPUs, usually made of separate TTL 74xx chips. Magic-1 is probably the most famous of them, but there are dozens more. Usually those are self-contained systems, made of dozens of chips, with a little bit of ROM and RAM, some of them has some LEDs, and sometimes a speaker output. Complete with unique instruction sets. Perfect place to apply our skills.

Many of those has way too many parts and no PCB, and of course no emulators available, so it is diffucult to obtain and/or get started. Thus I thought to find one simple design with least amount of chips and a PCB available. MP-4 would be a good choice, exactly a dozen of chips, but it has no PCB (yet), and no well settled down design actually. So after some search I found another one.

That's Nibbler, a 4-bit TTL CPU. It only has 17 chips, runs at 2.46 MHz (~1 MIPS), includes ROM, SRAM, has 16x2 text LCD interface, buttons, and a speaker - our beloved 1-bit one. As the chip count is so low, it can be build on a breadboard/perfboard. There is also a PCB design that used to be sold, it is out of stock, but the files are still there, so it can be reproduced. Even better, it already played some music 5 years ago.

Of course being such a simple 4-bit CPU, it lacks tons of basic features (many of those homebrew designs do), such as stack, or indirect indexing even. But that's just makes it more fun.


For now I have tons of other things to do, but I would like to try this idea out sometime in the future. In meanwhile we can discuss which of existing designs is more accessible and/or interesting, and eventually make the HW available and its emulator made.

296

(35 replies, posted in Other Platforms)

Hardware review #6

With another $8 I finally got my hands on an early AON with the 'large' board that has been designed to fit into the VEF-TA-12 phone case. Although this was the most common design for first half of 1990s due to the relative availability of the phones of this model, mine is made sometime mid 1994 - the phone itself was produced May 1994, latest dates on the chips is May/June 1994, so it is one of the latest of this classic kind. It also has mods on the board made to run Rus 17c firmware (few wires to enable 64K ROM banking, some minor fixes). Surprisingly it is in the most mint condition among all units I got so far. Actually came complete with box and original phone's manual, although the box wasn't in good condition and get damaged further during delivery, so had to get rid of it.

This early large board does all the same like the small one that you seen in these reviews, just with specifics of the analog part of original VEF phone considered, or lack of it - this design replicates analog part of the VEF phone on the board, while the small board omits most of it. The most obvious difference is that huge transformer that got omited later.


Exterior view. The display is placed where the orignal VEF label has been located very conviniently, so it looks just like it was originally designed to be this way.
http://shiru.untergrund.net/temp1/aon_6_1.jpg


Closer look on the display. As you could see on the exterior view, one of digits is noticeably dimmer than others. That's not due to the dynamic refresh, it is clearly visible with naked eye. The same happened with another unit, but another digit is dim. Normally the brightness should be all even. I think this is LED display degradation that happened by some reason. Maybe this unit once froze and remained so for a long time, so dynamic refresh stopped at this digit and worn it out.
http://shiru.untergrund.net/temp1/aon_6_2.jpg


The board. The two extra wires are changes and fixes to support later Rus firmware. One of ROM pins connected to a 8255 output, providing 64K ROM banking support. RD line of the 8253 connected to RD line of Z80, allowing to read back timer registers.
http://shiru.untergrund.net/temp1/aon_6_3.jpg


Close up on the transformer and the extra ROM address line wiring. Interestingly, you can see two logic chips with proper 74xx marking. The ceramics packed EL7493J is in fact a Soviet produced chip made to be exported to other countries. 74LS04, however, seems to be an imported chip.
http://shiru.untergrund.net/temp1/aon_6_4.jpg


Back side of the board. Has hard mounted LED display and buttons of the original phone. Despite the serious looks, these buttons isn't working well, producing many missed or repeated presses, and that's not because they're old now, they always were like that.
http://shiru.untergrund.net/temp1/aon_6_5.jpg

297

(35 replies, posted in Other Platforms)

Thanks a lot for pointing this one out, didn't see it. One issue, though, is that it is GPL, and if I simply use this or MAME implementation, which is the easy way, it'll put the whole project under GPL, which I kind of dislike - I'd rather released it under PD/CC0/WTFPL. That's why I'm trying to cook up my own implementation that is not derived from MAME. Actually I'm trying to fix up my very old implementation from 2007 or so to current needs.

298

(35 replies, posted in Other Platforms)

I'm thinking about an unique one to benefit from the strenghts of the platform, although porting something first to test the grounds is likely. Almost anything can be ported, if it does not take up much RAM (like ZX-7 and ZX-16) - there is plenty of ROM to hold a ton of song data, and CPU speed is a bit faster.

Actually, as I still have troubles with 8253 emulation and other things take priority at the moment, porting an engine or a few is a good next step.

299

(35 replies, posted in Other Platforms)

That's 4046807 (one digit is a bit dim), a phone number of author of the test.

300

(35 replies, posted in Other Platforms)

Modding and testing the hardware

Finally got a ZIF 28-pin socket ($3.4, with quick delivery) and ten Winbond W27C512 DIP28 Flash ROMs ($6.2) from China. The latter is just in case, of course I don't really need that many. Anyways, it now become possible to finish my modifications to the AON unit I'm going to use to occasionally test my software during developing, as well as finishing the emulator - this means relatively frequent tests, and modifications were made to make this process more comfortable. Let's see what has been done. Please note that most of the modifications is only needed to develop software more conviently. You don't really need most of them in order to just use it once its done.

First, I fixed everything inside the case, using tons of hot glue - just like it has been done in 90s.

I added socket for phone handset, to make it detachable. Also added phone line and power source sockets. The power source is now USB Type B, this allows to use any USB phone charger supply, which is really handy, or a power bank - so it is a portable now. As much portable as a regular brick. There is Reset button added that is normally not presented, but useful to do tests.

As I need relatively frequent tests, I decided to use ZIF socket, because normal ROM socket wouldn't provide reliable contact, relatively difficult to connect/disconenct, and would wear out soon. The length of ZIF socket pins and other parts on the board not allowed it to fit into ROM socket directly, so I used yet another ROM socket in between, plugged them into each other like a tower. Not really physically reliable, but it works if used carefully.

I did a hole in the bottom of the phone body to expose ZIF socket for easy Flash ROM replacement. It is a bit too tall, not allowing the phone to stand on a flat surface as it normally should. Thus I added front legs extender, that raises the front part of the body, adding missing height. Not pretty, but does the trick.

I flashed the PHON-LP2 test ROM I mentioned above using WizardProg-87 - all smooth and easy, no issues. A very handy inexpensive piece of Chinese gear, if you happen to burn ROMs time to time. As it is a 512K Flash, but AON only supports 32K, and the test itself is just 2K, I simply copied these 2K all across the 512K image using a HEX editor, to avoid cutting/grounding chip legs (extra address lines). The test worked just fine. I learned how it behaves on this particular board (no 8253 RD, no configuration diodes), and that it plays clicks and short music phrases during testing - good to know in order to make emulator work correctly.

Here is a video of the unit running the test: https://youtu.be/rR_g8js13oY


Flashing the test ROM with the WizardProg-87 burner.
http://shiru.untergrund.net/temp1/aon_mod_1.jpg


Inside of the test unit. Now with extra two sticks of hot glue.
http://shiru.untergrund.net/temp1/aon_mod_2.jpg


Close up of the ZIF socket. It just plugged into a regular socket then into the board, not physically fixed (yet).
http://shiru.untergrund.net/temp1/aon_mod_3.jpg


Newly added reset button on the left, USB Type B socket for the power and phone line socket (just in case I need it for something) on the right.
http://shiru.untergrund.net/temp1/aon_mod_4.jpg


Phone body with bottom part screwed into its place. Extended legs at the front.
http://shiru.untergrund.net/temp1/aon_mod_5.jpg


With a Xiaomi power bank now it makes a fully portable Z80 micro computer.
http://shiru.untergrund.net/temp1/aon_mod_6.jpg