Creating a cassette converter plug-in

I think that probably goes beyond the scope of this forum as it is a “programming” task rather than “using Audacity”.
However, it did occur to me that there may be another approach…

If you are intending this to work on Windows only, you could look at using AutoIt or Autohotkey. (I don’t use Windows so I can’t help with either of those programs).

The General Audio Programming might be the most appropriate place on this forum, though I don’t know how much help you will get as the subject is probably outside of the experience of most people on this forum.

So what you’re saying here is while there are noise removal effects, there aren’t any for tape noise reduction specifically? Would it be possible for me to just use an existing noise removal plug-in?

I can sense you wandering off in all directions. Noise Removal isn’t one single thing. You run Noise Removal once to tell it the exact noise you want removed from the show (the profile step). You run it again and Noise Removal will try to remove your profile example from the show.

So if you drag-select a little buzz for the profile, Noise Removal will try to remove that exact buzz from the show. There’s a joke where you drag-select a little of your voice in the profile by accident and Noise Removal will try to remove your voice from the show.

So Noise Removal is not a tool to remove “badness,” it removes specific sounds and you have to tell it what those sounds are. If you play two different cassette tapes from different manufacturers, the background hiss may be different on each one and you may need to take two different profiles to get Noise Removal to work right. That’s one reason Noise Removal is resistant to automation.

I can see completely automated noise removal. That’s a stand-along program because it would take a lot of programming.


There is a playback tool you missed. You have a tape recorded Dolby B or Dolby C, but you have a standard player. Fixing that would be a very valuable option.

Wow now I feel terrified haha. It looks to me that AutoIt and AutoHotKey is a way for a user to probably automate tasks without having to actually build a plug-in, so I don’t think I could use that though.

I see what you mean. But I think for this project I’ll just get it to do a really basic noise removal. Like how you would have to highlight the noise area of the track to get a noise profile and then apply it to the whole track, without having to actually select that noise. I imagine it would be something like this, when the track goes below a certain dB, Audacity will take that part as the noise profile and then apply to the entire thing. Of course, I don’t know whether this is possible, let alone doing it.

Sorry I’m not quite sure what you mean here.

You could try writing a script for one of those programs?

Using a different scripting language than these two (Dragon NaturallySpeaking Pro – I suspect that AutoIt3 would do the same job but require a keystroke combination where Dragon does it when I speak the appropriate command) I have semi-automated this process. First I highlight an appropriate section of noise then I issue the command. The Noise Removal dialog is opened twice – the first time the “get profile” button is clicked by the script; the second time all the boxes get filled with the numeric values I prefer and then the “OK” button is clicked.

I do not know about other scripting languages but with Dragon sometimes clicking a button causes the mouse pointer to move to the location of the button; for this script I remember the original mouse position when the script starts to execute and move the mouse pointer back to that position when script terminates. This is especially helpful when I select a bit of noise immediately preceding the start of the non-noise (music etc.) at the beginning of the track. This way, when the script terminates the mouse pointer is placed immediately in front of what I want to keep I can say “Click Mouse Button” and then “Trim Front” (another script I wrote which deletes everything in front of the current cursor position).

Because Noise Removal is a built-in (C++) script it would be very easy to semi-automate the process in a similar manner (select some noise, activate the effect – keyboard shortcut/menu selection, both the “get profile” & “remove noise” steps would be done). The real drawbacks here are the lack of preview and the inability to adjust all the numerical values – they would be fixed at the default (which could be user defined).

Sorry I’m not quite sure what you mean here (Dolby B and Dolby C).

You’re working on the assumption that all cassette tapes are just normal, straight tape recordings with plain tape noise and normal sound distortion. In the middle of cassette tape popularity, Dolby Laboratories introduced signal processing to greatly enhance the quality of cassette sound. I attended a presentation where a Dolby C cassette tape was hot substituted for a live brass quartette on a stage and if nobody told you that’s what was happening, you would never guess. So cassette tape doesn’t have to sound like garbage.

With respect to this picture:

You can just barely see it, but there is a little green tape switch next to the audio connector called Dolby NR. That’s Dolby B Noise Reduction and if you have a tape recorded with either B or C, it’s show is significantly degraded of you play it straight, without Noise Reduction switched in. B was pretty popular, C less so, but a great many tapes were produced like this. Not all players would play B and C, so anyone producing a generic “Cassette Converter” processing tool should certainly accommodate Dolby. That’s low hanging fruit.