51

(10 replies, posted in Sinclair)

Voilà. Haven't tested it extensively so there might still be bugs lurking here and there.
Ended up implementing drums as 8-bit PWM at 27210 Hz. Tried to do it at 54420 Hz, but it's impossible. It wouldn't make much sense anyway since 54420 Hz would leave us with a lower range limit of ~212 Hz unless we'd go 16-bit.

Btw, looks like Furnace can't actually compile z80 code yet. So this is going to take a while in any case.

Edit: source updated with a small tweak to reduce row transition noise

Edit 2: cut player size down to 3333 bytes

52

(10 replies, posted in Sinclair)

Ah, great, it's a binary. 1990s called, they want their file formats back. Even after decompressing it, I can't make much sense of it.

Meanwhile, massaged the engine a bit so it does 60Hz updates (at a sample rate of 9114Hz, can't go faster anyway). Now I'm wondering what to do with the drums. Documentation says they're pitchable 1-bit PCM drums up to a max length of 2048 samples running at a rate of 54420 Hz. Not sure why you would want to do it this way, but ok. I'd use PWM drums in any case, but 54420Hz comes down to about 63t, which I don't think is enough to decode either 1-bit PCM or PWM AND calculate pitch. Might have to cut some corners here.

53

(10 replies, posted in Sinclair)

rough engine draft

54

(10 replies, posted in Sinclair)

That actually looks quite workable, for a start. I think it could be compressed well enough by first condensing each row so that duplicate data is omitted and presence/absence of entries is marked with some control byte, then adding each unique row to a dictionary and constructing a sequence of pointers to the dictionary.

The question would be what to do with those 60Hz updates. Could be implemented as such in the engine, at the cost of lowering the sample rate and sacrificing accuracy in the time domain (ie. updates would be applied on consecutive loop iterations instead of all at once), or one could recalculate any effects for a lower update rate. In any case effects would need to be flattened/precalculated.

Some things in this dump are a mystery to me as well though. 4: NOTE_ON 24 2 might be a trigger for the interrupting PWM channel, but then where's the sample data and what defines the playback length of the sample?

Edit: Another problem with the stream dump format is that it does not seem to distinguish actual triggers from notes continued from the previous row. Also, where is the instrument information (eg duty)?

55

(10 replies, posted in Sinclair)

It's a shame Furnace doesn't put more effort into actually getting tracks to run on hardware, since it has already become somewhat of a de-facto standard in the scene and attracts a lot of young talent. But here's the point: That young talent doesn't have access to actual hardware for the most part, so they don't care if it runs on hardware. For them, this is as close to "real" as it gets. That's the reality of chiptune in 2024, like it or not. Can't blame the Furnace devs either - they focus on providing what the majority of their users want, and that works for them, both in terms of number of users as well as number of people involved with development.

The only chance for setting things right from our perspective would be to implement hw support for the two Furnace players ourselves. I think it's doable, the specs are relatively sane. There are a couple of issues - if I understand correctly both engines assume 50Hz updates, which is not feasible for QuadTone, and QuadTone seems to assume an internal loop time of >224t, which obviously is going to have much more of a parasite tone than what is currently emulated. But with a few minor adjustments it could be done. I'm not willing to work on it though for a number of reasons, at least not the C++ side of things.

56

(10 replies, posted in Sinclair)

quad tone is the Furnace one afaik

57

(130 replies, posted in Sinclair)

Looks like Multimatograf is going to have a beeper compo this year. Deadline is April 28th.

https://events.retroscene.org/mf2024#zx_beeper

58

(130 replies, posted in Sinclair)

Congrats AER smile A well-deserved win.

Thanks! I've given a few talks over the years, though I'm not sure if there are any recordings out there. Not that you'd want to see the ones from 15 years ago anyway yikes Would like to give more talks in the future, in any case.

60

(43 replies, posted in Atari)

If there is a new engine with not-too-difficult data format, I can add it to Bintracker. If game_music_emu supports GTIA then 1tracker would also be an option.

I don't think the SampleTracker engine will sound too great on GTIA. It's pretty bad on ZX beeper as well from what I remember. I think Shiru added that more with AY/Covox in mind.

Yay, Beep'em all VI! Great collection.

61

(43 replies, posted in Atari)

Well, in the end I was too lazy again to make something yikes Looks like I wasn't the only one, though.
To be honest I'm also somewhat demotivated by the lack of new engines (with the exception of TritoneFX, which is not so useful, sadly). I think if we want to put GTIA back on the map, we need some new, state-of-the-art GTIA engines. Preferably native Atari ones. Atari 8-bit is a more powerful machine than Spectrum, so in theory it should be possible to make a more powerful 1-bit engine for it, shouldn't it?

Wow, massive collection, pretty neat. I'd love to also see some demo songs from old PC Speaker editors like Music Construction Kit, Note Baron, VMusic, etc.

There might be some more on https://battleofthebits.com - however, finding them would require to dig through all the recent entries and see if anyone posted a .1tm source in the track description or in the comments. In the botb browser you can filter by type (zxb, last button in the list of formats) and sort by date ("when").

64

(43 replies, posted in Atari)

xxl wrote:

This year at SV I am exhibiting the Beep'em All 6 music collection.

Yesss!

xxl wrote:

I hope that there will also be original songs in 1bit compo

To be honest I completely lost track of what is available on GTIA nowadays. Could you post a list of currently available engines?

65

(16 replies, posted in Other Platforms)

I can't remember the details, sorry. It was only some specific places where it was happening, not all around. I'll look into it again after next week.

66

(16 replies, posted in Other Platforms)

Alright, got it working. Quick'n'dirty test doodle attached.
The SDL number keys seem a bit wonky, sometimes returning the "last entry" instead of the actual number of the key pressed. Other than that I couldn't spot any issues on my quick try-out.

67

(16 replies, posted in Other Platforms)

Can confirm that the build works. However I can't run it, it's complaining about a missing data/ebt.cfg.

68

(16 replies, posted in Other Platforms)

Very pleasant sound, indeed. Btw, when you have things ready for linux, I can help with testing the build, at least.

69

(16 replies, posted in Other Platforms)

Damn, it looks fantastic, very polished UI design in such a small space. Some demo songs would be great, unfortunately I don't have time to dive into this at the moment.

70

(135 replies, posted in Sinclair)

Found a new el-cheapo PRNG/noise generator. It's a bit slower than the usual add hl,de; rlc h variations, but needs only 1 register pair instead of 2. It also sounds a bit different.

  ld a,MAGIC_NUM
  add a,e
  rrca
  xor d
  ld e,a
  inc d

For MAGIC_NUM, most values do pretty much the same, except some that are straight metallic beeps and a few that sound more rumbly.
test.tap plays through all possible values.

The main downside is that we can't smc-hotswap this with regular tone channel code. What could work though is to hotswap it on an 8-bit divider and use a separate 8-bit pre-scale on this. Pre-scale would pitch the noise as well. Unfortunately the perceived pitch of the noise is quite a bit lower than using add hl,de; rlc h. Not sure if it's actually much of an improvement over just lazily reading from ROM:

  ld a,(de)
  inc de

Hi Krzysztof,

Not sure what Chris Walsh means, I don't see any errors in the first routine.

Good point about RAM contention from Simon N Goodwin though. I'll add a little note on that. IO contention is mentioned in Part 5, I don't think readers need to be overly concerned about it before that point.

Anyway, thanks for passing on the feedback.

72

(5 replies, posted in General Discussion)

I thought that hardware support was supposed to be added/extended in 0.6, but it seems indeed that hasn't happened yet. I trust they'll get around to it at some point, though.

Excellent, thanks a lot. I originally had the tutorial in an .org file, but gave up on it somewhere down the line. This'll be a good opportunity to get things in order on my side, hehe.

74

(5 replies, posted in General Discussion)

Never mind the low notes, seems there's variable duty as well. I suppose it's not interrupt-driven, then? Anyway, I have my doubts about this. I mean for PET emulator support can't really be trusted. If they can get it to work on hw then that's awesome, though.

Thanks, looks great! Do you happen to have *tex sources for this? I'm updating the tutorial every now and then, and I don't want to burden you with updating the pdf every time that happens.