Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Since it plays modules made for the Amiga, linking this is mandatory:

https://bel.fi/alankila/modguide/interpolate.txt



I coded a modular software synthesizer as my final year project in high school, without any previous knowledge of digital signal processing. C++ with a simple GTK+ user interface, sound output via JACK, and MIDI input via ALSA.

The difficulty of just generating correct square waves really surprised me. I thought you would just flip between 1 and -1 at the desired frequency, but of course that sounds awful because of aliasing. So I followed the paper by Tim Stilson and Julius Smith, Alias-Free Digital Synthesis of Classic Analog Waveforms, which presents the "band-limited impulse train" method, and got it working nicely.

Then I added a simple delay line, a convolution reverb, a resonant low-pass filter, a flanger, a compressor, all pluggable through the UI. That project was one of the most educational and fun months I've spent in my whole life... Playing a synth that you understand from the waveform level is really cool!

Some other guys in my class built an electric guitar which is also cool... Maybe I'd be more interested in that kind of project now that coding is my day job...


This isn't just some subtle implementation detail; the aliasing noise is obvious and IMO it's an important part of the sound. I personally like it, because it adds some extra high frequency content that would otherwise be lacking in many Amiga modules because of low quality samples. libopenmpt supports Amiga-style resampling with the render.resampler.emulate_amiga option. Although it's not documented in the man page, you can enable it in openmpt123:

  openmpt123 --ctl render.resampler.emulate_amiga=1 amiga_module.mod


This bit made me go "wat" out loud.

> Additionally, it is possible to engage a low-pass 12 dB/oct Butterworth filter tuned at approximately 3.2 kHz by turning the Amiga power LED brighter with a special protracker command.


This didn't happen on the earliest Amigas. It just changed the power LED brightness.

I had one game (Psygnosis "Baal", otherwise fairly unmemorable) that flickered the LED with the beat of the title track just because it looked cool. It sounded awful on anything besides an A1000.


This is a classic "you ran out of pins / wanted a convenient debug feature, didn't you" design indication.

I'm slightly unclear on what the Paula pulse train would have looked like; is it what would normally be called a "1-bit DAC", or is it PWM at the PAL frequency?


That would be E00/1 for filter on/off.

https://www.youtube.com/watch?v=M8d_OInQkLc&t=8m36s

IIRC when the machine crashed while playing sound, with the well-known blinking of the Power LED, you could hear the filter going on and off, too. And most games that had polished music turned the filter off.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: