Hi there!

Well, in order to be totally authentic, you'd need to implement an SM-510 emulator, and write your own player. In that case you're looking at quite a bit of work, obviously. It's not impossible, though wink MAME has some SM-510 emulation code, and it's even BSD licensed, yay!
https://github.com/mamedev/mame/blob/ma … 10/sm510.h
And there is an SM-5 series assembler, written in Java:
https://web.archive.org/web/20160112051 … arpasm.zip
as well as an emulator, from the same guy, though I'm not sure how useful it is or if it even does sound:
https://web.archive.org/web/20160112051 … tchman.zip

The problem is that the SM-510 is slow af, so you're not going to get really advanced stuff out of it. However if I understand correctly it actually has 4 bit output so maybe that's enough to mix two voices.

I have yet to find a full instruction set of that thing, though. However, appearantly it's similar to the TMS-1100... hmmm... also no idea what this "melody module" thing is all about.


The other, slightly less authentic route would be to implement a generic piezo emulator, and write a player for that. As neither PFM nor pulse interleaving will work on an actual piezo, I'd go for a Squeeker-type player. See here  for a technical discussion. Basically you generate pulse waves with reasonably low duties (say, 10-25 %) and OR them together for the final output.

In any case, please keep me up to date about this project, and let me know if I can help in any way.

402

(35 replies, posted in Other Platforms)

Ah yes, I was almost going to make a comment about the thing being GPL. However, the Borik brothers seem to be nice folks from what little contact I had with them some years ago. So they might be possible to talk to them about relicensing the relevant portion to MIT/BSD or something. Let me know if you want their contacts.

403

(35 replies, posted in Other Platforms)

Maybe 8253 emulation code from GPMD85 emulator could be of help?
https://github.com/mborik/GPMD85Emulator

404

(35 replies, posted in Other Platforms)

Most fascinating, and happy to see the progress.
At the end of the video from the unit test, what's the meaning of the "40468 7"?

405

(164 replies, posted in Sinclair)

Awesome, thanks Shiru!

Forgot to mention, I did apply a few changes to the source last  time. All of them cosmetic, but Clang will have a fit about these.

gui.h:9
int put_str(int x,int y,char* str,unsigned char col) =>
int put_str(int x,int y,const char* str,unsigned char col)

gui.h:42
void put_str_file(int x,int y,char* str,unsigned char col) =>
void put_str_file(int x,int y,const char* str,unsigned char col)

main.cpp:641
int put_str(int x,int y,char* str,unsigned char col); =>
int put_str(int x,int y,const char* str,unsigned char col);

select_engine.h:34, 104
if (dp = opendir(engineDirectory)) =>
if ((dp = opendir(engineDirectory)))

Also added -fPIC flag in makefile. Position-independant executables are now the default on most Linux distros, but the Angelscript JIT compiler doesn't like that idea, it seems.

More critically, since a few versions there is still a bug that will cause random "engine provided no data" errors. I cannot get a reliable way of reproducing it though. It mostly happens after applying a marker and then entering something on the first row of the new block. Though sometimes it will happen in the middle of a block as well. Usually the problem starts occuring only after editing for a while (though it will then persist through restarts), but I've occasionally had it happen on an almost blank tune as well.

Mwahaha. The BEEP command can be used to escalate privileges in Debian big_smile https://www.debian.org/security/2018/dsa-4163
The way for 1-bit world domination is clear!

Hi, this makes me think, since you're not the first to report this "ringing" problem. I think what might be happening is that there could be an unhealthy clash between HT's sample rate and the sample rate of the recording device. Though I see you already recorded at 48 KHz, which in theory should be enough to mitigate such issues. Still, try to record at 44.1 KHz just to see what happens.
Also, the usual advice - a fresh set of batteries will improve the sound. Furthermore, it appears that some mixers/recording devices are too "noisy" (ie. they leak too much phantom voltage) whichwill cause slowdown on some calcs. Does your calc appear to play faster with headphones plugged in vs. your line-in?

408

(35 replies, posted in Other Platforms)

Hmm interesting, all Russian-made componenents but an NEC eeprom.
I could listen to those the single-voice musics the whole day... though the fact that they actually included an ASIC with AY clone at some point is mindblowing.

409

(4 replies, posted in Other Platforms)

Thanks, seems simple enough. Will credit you once I add it to bintracker of course. It may take a while before I get around to it, though.

410

(4 replies, posted in Other Platforms)

Awww man, that's awesome! I been drooling over the Sharp MZ machines for a long time but it just seems impossible to get one nowadays. Besides, my shelf is crammed full already big_smile

Regarding the timing, I wouldn't worry too much. Sounds good enough to my ears. And the PhaserX algorithm is rather forgiving as far as timing is concerned. Plus MZ is slightly faster after all wink Depending on what the other bits in #e007 do you could maybe cut a corner and leave off the 'or #20', dunno. In theory on ZX Spectrum we should mask the border with 'and #10' but the machine doesn't die if you don't do it so... Anyway, if you wanted to be really precise you could re-calculate the note equates used by bintracker but that'd be slightly overkill imo.

Btw what do you have to do to transform the resulting binary into a file loadable by the actual machine? I'm asking because at some point I might want to add it as an extra target in bintracker.

411

(35 replies, posted in Other Platforms)

Wow, I had no idea these things existed. Very much liking the sound of this - a platform that's totally obscure yet easily obtainable.
What exactly are your plans with it, then? Some kind of effects box?

Ho ho ho! HT 2.30 just hit the streets! Check out the introduction video and this crappy demo tune. And of course download the new version big_smile

Changelog:

NEW/CHANGES
- note table tuned to ~440 Hz (and some notes produce more useful noise fx as a result)
- ch2 duty sweep (5xx, xx > 0x80) now has a configurable parameter (xx & 0x7f)
- effect 7xx (auto-chord) now has two modes: unsynced (regular) and synced (octave chord)
- channel volumes rebalanced
- slowed down ch3 slides, 3xx now works like 2xx (xx is no longer inverse)
- 9xx no longer disables 3xx
- new effect: ch3 grind (enabled with 6xx, xx>0x80)
- old Axx has been ditched
- new Axx effect: set phase offset ch3
- Synth Mode: hold current row
- add display of last used savestate
- add pattern loop playback mode

BUGFIXES
- fixed user drum input glitch
- fixed major bug in keyhandler
- reset player when clearing worktune

Also made a fancy new pdf manual which is included in the download, as well as garvalf's handy cheat sheet. Haven't updated htutil yet but the one from v2.20 should work for 2.30 as well.

Great! Especially love the section from 2:30 onwards. Keep them coming wink

If you know how to apt-get, it's actually quite simple.

1) sudo apt-get install pasmo git
2) cd path/to/where/you/want/to/have/houstontracker
3) git clone https://github.com/utz82/HoustonTracker2.git
4) ./build.sh

That's all. If ./build.sh will not run then do "chmod a+x build.sh" before step 4.

That said, I have version 2.30 ready and will release it in a few days.

415

(10 replies, posted in Other Platforms)

Damn, I need to get back into this Arduino business. Or actually not, because your song is already awesome enough smile

416

(0 replies, posted in Other Platforms)

Just noticed that krue updated his native Apple II tracker a few weeks ago.
See http://krue.net/stitch/

Support for multiple sound engines. The existing engine is named blanket stitch.
    New running stitch engine, which has a faster (but variable) loop time.
    Output to cassette port in addition to speaker port.
    New standalone player.
    Display edit/play status.
    Release source for the sound engines.
    Adjust range after a delete operation (it may be pointing outside of song data).
    Reset row, field, and range when a song is opened.

417

(1 replies, posted in Sinclair)

Yes, there are a couple of options available, though ultimately you might just be better off transcribing by hand.
Anyway, option 1 is to use an engine for which an XM converter is available. See the list of engines here: http://randomflux.info/1bit/viewtopic.php?id=25
Most modern XM editors can import midi files. However, the XM converters use specially crafted XM templates with tight restrictions (limited number of instruments/channels, no fx, etc)  so you'll have to make sure your imported file matches the engine's XM template as closely as possible.

The other option would be to use Beepolyator, which converts midi to ZX-16 engine format. It's in Russian only, however it shouldn't be too difficult to figure out with the help of a translation tool. Download is here: https://vtrd.in/pcutilz/BEEPOLYA.zip and quick manual is here: http://hype.retroscene.org/blog/247.html

For your needs, TI Connect is perfectly ok. It's mainly TI-82 users who will have problems with it.
Ok, so regarding the high frequency problem, I can only say hopefully things will be better in the upcoming version. Until then just use that mini-mixer wink ... I always put a bit of EQ on as well. TI isn't like, say, Gameboy, where you can have good sound pretty much out of the box.

By the way, if you are a Linux user, building the development version of HT2 is pretty straightforward. However, at the moment the keyhandler is somewhat unstable. Once I have fixed it, I will provide some new beta builds on here, too.

Yes, there are sound differences, though it's hard to say which one has the "best" sound. There is also a factor that might be even more relevant than the model: The battery level. It has a direct impact on the CPU speed. And that again directly affects things like pitch, and sound quality. When batteries get low, you get more bass, but worse sound quality. If you get a high frequency beep, you can try some fresh batteries, and the situation should improve.

420

(135 replies, posted in Sinclair)

That's basically the idea behind engines like zbmod. Or, more relevantly, when talking about pulse interleaving, octode2k16. Interleaving of the various pulse trains is abstracted into an actual calculated output weight. So far, so good.

However, there are side effects. If the channel weight is kept near the maximum for consecutive loop iterations, the speaker membrane will build up additional pressure because there is not enough time for it to return to it's rest state. You can hear this clearly in o2k16, when all or almost all channels are busy. I tried to abuse this effect as an engine feature, but it is very hard to control.

When doing actual interleaving, this problem is much less pronounced, since most often there will still be long enough periods for the speaker cone to retract even at when channel weight is high. So by interleaving two "binary trees" (like in pytha, for example), we can mitigate the "ramping" issue, while still maintaining a sizeable number of possible channels. However, this also has side effects, as demonstrated here: http://randomflux.info/1bit/viewtopic.p … 1396#p1396 I still haven't figured what exactly is causing this phenomenon. My guess is that possibly the common assumption about using 8t alignment to mitigate IO contention is not correct, to start with. But probably that isn't the whole picture either. I do want to investigate further with a "perfectly aligned" engine at some point, though. Just need to find some time and motivation for it.

Very cool! And great to see there's at least 1 person who likes the auto-chord effect, hehe. Looking forward to hearing more from you wink

https://www.gamejournal.it/the-sound-of … -spectrum/

Surprisingly well-researched, though it fails to acknowledge any of our post-2008 achievements.

423

(21 replies, posted in Sinclair)

Aye, I think this might be due to the way the engine is constructed. Timer/pattern update happens while the 3rd channel is active so it will be most affected. Not 100% sure about this but I can't spot any obvious code errors atm either.

424

(21 replies, posted in Sinclair)

Thanks for the fixes, Shiru. Is the issue of clicks in 3rd channel fixed in your version? If not, how can I reproduce it?

Do you have any plans to release a ZX musicdisk/tape version of the album?
Also, do you have the lyrics for "The Eternal" somewhere? I think I would like to cover that song some time.