forked from otomatalabs/ol_site
33 lines
1.8 KiB
Markdown
33 lines
1.8 KiB
Markdown
![]() |
---js
|
||
|
const title = "Aerations - Hacking Furnace to do stuff";
|
||
|
const description = "Some ramblings about timers";
|
||
|
const date = "2025-09-17";
|
||
|
const tags = ["atari st", "timer fx", "timers", "demoscene"];
|
||
|
const draft = true;
|
||
|
---
|
||
|
|
||
|
[comment]: # (god the depresso is getting to me i'm going to write something to soothe the nerves, but well this is a hidden comment you're not supposed to see this in the final post - 09/17/2025 @ 8:57 pm)
|
||
|
|
||
|
back in July this year, we released "Aerations" at the Sommarhack 2025 demoparty. with it, we
|
||
|
demonstrated the ability to compose Atari ST music, with classic timer effects like PWM and
|
||
|
SyncBuzzer, and the ability to export it under a format usable on real hardware (thanks Natt!)
|
||
|
|
||
|
developing the tech required for it was a real pain in the arse... it turns out that the ST is
|
||
|
janky, and therefore also has janky audio, and we needed to emulate this jankness in the tracker
|
||
|
|
||
|
# timer effects: what?
|
||
|
generally speaking, a timer is a mechanism that lets an action be done at a preset time. on
|
||
|
computers, it lets the CPU do things periodically, and if it is able to interrupt the CPU, allows
|
||
|
actions to be executed automatically at regular, periodic intervals.
|
||
|
|
||
|
on every Atari ST ever made is a chip called the *MC68901: Multi-Function Peripheral (MFP)*,
|
||
|
and this chip provides an USART, an interrupt controller, and most notably, 4 timers. these
|
||
|
timers are at the heart of *timer effects* (hereby called *timer FX*).
|
||
|
|
||
|
what is *timer FX*? on the Atari ST, it means any effect that messes with the YM2149 sound registers.
|
||
|
this means it can be used to write to a register at regular intervals, producing
|
||
|
audible effects (like frequency modulation, amplitude modulation, etc...). although there are a
|
||
|
variety of effects that can be done with this, for Aerations in particular, we only used 2:
|
||
|
- PWM (Pulse Width Modulation)
|
||
|
- SyncBuzzer
|