Amiga low pass filter

The following plug-in has been submitted to me off-list for inclusion on http://wiki.audacityteam.org/wiki/Nyquist_Effect_Plug-ins, but I think all new plug-ins must be submitted here first. I will make a note to that effect on the Wiki page. I have the user’s e-mail address if needed but have asked user to register on the Forum and watch this topic.

Nyquist-plugin for > http://wiki.audacityteam.org/wiki/Nyquist_Effect_Plug-ins#Filters

Download: > http://amitrans.narod.ru/content/Release/Arc/AmigaFilter.zip

AmigaFilter.ny

Low-pass resamplers like Amiga classic

en-WikiPEDia definition:

The Amiga contains an analog low-pass filter (reconstruction filter) which is external to Paula. The filter is a 12 dB/oct Butterworth low-pass filter at approximately 3.3 kHz. The filter can only be applied globally to all four channels. In models after the Amiga 1000, the brightness of the power LED is used to indicate the status of the filter. The filter is active when the LED is at normal brightness, and deactivated when dimmed (on early Amiga 500 models the LED went completely off). Models released before Amiga 1200 also have a static “tone knob” type low-pass filter that is enabled regardless of the optional “LED filter”. This filter is a 6 dB/oct low-pass filter with cutoff frequency at 4.5 or 5 kHz.

Plug-in based on research Milkytracker co-authors (Christopher O’Neill & Antti S. Lankila) except blep-tables and realized a similar effect.

Gale

For convenience I think we can make the plug-in directly accessible here:
AmigaFilter.ny (1.49 KB)
The zip file also contains the following text file:

* AmigaFilter.ny: Low-pass resamplers like Amiga classic

en-WikiPEDia definition:
----------------------------------------------------------------------
The Amiga contains an analog low-pass filter (reconstruction filter) which is external to Paula. The filter is a 12 dB/oct Butterworth low-pass filter at approximately 3.3 kHz. The filter can only be applied globally to all four channels. In models after the Amiga 1000, the brightness of the power LED is used to indicate the status of the filter. The filter is active when the LED is at normal brightness, and deactivated when dimmed (on early Amiga 500 models the LED went completely off). Models released before Amiga 1200 also have a static "tone knob" type low-pass filter that is enabled regardless of the optional "LED filter". This filter is a 6 dB/oct low-pass filter with cutoff frequency at 4.5 or 5 kHz.

Plug-in based on research Milkytracker co-authors (Christopher O'Neill & Antti S. Lankila) except blep-tables. Simplified looks:

       -----------------+- Rolloff ---+- Cutoff -------------
       Amiga 500        | 6 dB/oct    | 4900 Hz , RC-filter
       Amiga 500 (LED)  | 12 dB/oct   | 3275 Hz , Butterworth
       Amiga 1200       | 6 dB/oct    | 28867 Hz , As is
       Amiga 1200 (LED) | 2x12 dB/oct | 3275 Hz , Butterworth

        | 2nd-order Butterworth s-domain coefficients are: |
        |                                                  |
        | b0 = 1.0  b1 = 0        b2 = 0                   |
        | a0 = 1    a1 = sqrt(2)  a2 = 1                   |
        |                                                  |
        ````````````````````````````````````````````````````

           Copyright (c) 2013, Eugene aGGreSSor Sobolev
                       All rights reserved.
            (from RUSSIA, Saint-Petersburg with L0ve!)
         Released under terms of the BSD Simplified license
             http://opensource.org/licenses/BSD-3-Clause

The filters for “Linear interpolation”, “Amiga 500” and “Amiga 1200” sweep from 0 Hz to 28867 Hz, 4900 hz and 28867 Hz respectively.
The “Linear interpolation” setting is identical to the “Amiga 1200”. I don’t know if that is intentional.

There is an extra line of code in the Linear interpolation" function that does nothing. I’m not sure whether that is intended to do something or not, but it looks like an error. Perhaps the author could comment about that.

This appears to be a niche plug-in for Amiga enthusiasts, though I don’t know how closely it models the Amigas, or why there are linear sweep filters for three of the presets. Reconstruction filters do not normally sweep and should ideally be high order filters. It would be nice to hear from the author about what is intended with this plug-in.

Thank you for inviting Gale Andrews!

Really, low-pass filter on Amiga doesn’t improve the sound. HiFi users even hate him. It’s not suitable for mp3/wav playing. Amiga creators designate it for enrichment of the synthezed sound playing from audio chip ‘Paula’. The purpose of this filter is probably to remove some of that aliasing which is inherent in the pulse synthesis. Accurate reproduction Amiga Filter would require the use of tables individual for each model. These tables have been calculated by Milkytracker authors (they first implemented this). Unfortunately Lisp in Audacity overfflows with so many values. I think this could be implemented only in LADSPA-filter. Therefore, this filter can be used only for a rough sound in the digitization of module music from Protracker and other trackers. I have examples. And of course for fun.

In option “Linear Interpolation” by a piece of code similar “compute-blep.py” from Milkytracker source. I didn’t know how to make an honest linear interpolation (down-sampled) with low-level functions. Function force-srate without reduces. I hope something from the above was readable…

Greetings aGGreSSor, good to see you on the forum.

Yes, that is what the Wikipedia article says.

What are these “tables”? Are you referring to something like this: https://bel.fi/alankila/modguide/computed-blep_c_source.txt
Nyquist can handle very long lists, but you need to be a bit careful to avoid stack overflow.

Is the idea to emulate the sounds of an Amiga? If so, it might be good to develop this further as a generator plug-in to generate the tones as well at the filter?

You’re welcome. Thanks also for answering a question on the Russian Forum.

Gale