Automatic song mixing program - please give me WAV files to try!

Started by des0free, July 26, 2021, 10:38:33 PM

des0free

Update: See the next post where I post my current mixes using an improved method

In a previous thread I described working on a computer program that takes multiple WAV file tracks (mono or stereo, which can have been recorded at varying levels) and attempts to automatically produce a *rough* mix by applying hi/lo pass filters, auto-analyzing and adjusting loudness levels, and summing.

** If anyone is willing to send me audio files, I would be quite interested in trying to see what happens if I try to auto-mix them, to see how the algorithm handles different kinds of tracks.  Maybe post them on a google drive and/or send me a PM? Right now I am only mixing a ~10 second segment, and have only tried EZ drummer, bass, acoustic rhythm guitars, electric lead guitar, keys, and vocals.  But in principle it could handle anything.

recorder
Reaper
recorder
Zoom R24
recorder
Boss Micro BR
  

des0free

Mass-ZwickerLoudness
Time:
0:00
Volume:
50
0
Summary of my current approach:

1. To deal with silent sections, such as in the vocal track between phrases, I used a sliding window method to analyze only segments where there is significant signal.

2. To calculate estimated loudness I apply a method from the acoustic engineering literature called the "Zwicker model".

3. For testing purposes I try to not pre-apply any extra compressors/limiters or EQ (unless tracks were already recorded with them) to test what code can do with dry signals alone (bass/guitar amp sims were left on, reverb was not applied to vocals unless already recorded with it)

4. After my code generates a mix I master the auto-mixed WAV file in Reaper (DAW) with the same settings each time (set mix gain to -4 dB, then apply a mastering compressor (Waves API-2500, "Mastering 1" preset), then apply a mastering limiter (Waves L1+, "Mastering preset", threshold -6 dB so only highest parts of mix occasionally touch it).

I feel this is pretty good for *rough* mixes!  Of course what I did was just try to make each track (drum, bass, guitar, vocals, etc.) have equal loudness, which is not necessarily what one would generally want.  So to move beyond the rough mix one has to make subjective decisions and adjust things manually. 

The code could be useful for pre-processing tracks to get them to be roughly equivalent loudness before loading them in a DAW.  Another application could be for mastering an album of multiple songs where you want all the songs to be "auto-renormalized" to have roughly equal loudness.

I'm still interested in having other people's WAV file tracks to try processing tracks that may be different in character to my own - send me a PM if you are willing to send me some ~10 second segments of tracks.
recorder
Reaper
recorder
Zoom R24
recorder
Boss Micro BR
  

des0free

MassAutoMixed
Time:
0:00
Volume:
50
0
I now figured out how to add reverb, compressors, and limiters to my audio processing code (via "Matlab Audio Toolbox" function calls), so I can now do full mixing and mastering all via a home-written program!!

The first audio file here is "auto-mixed" by my algorithm, but no reverb, compressors, or limiters were used. The mix  was normalized so the highest point just hits "0 dB" (highest possible without clipping). 

In the second file I added reverb to vocals and keys, then auto-mixed, then made minor manual adjustments to produce a refined mix.  I then "mastered" by normalizing to 0 dB, applied a limiter -3 dB threshold, normalized to 0 dB, applied a compressor ratio 2 and -6 dB threshold, normalized to 0 dB, applied a limiter -6 dB threshold, and finally normalized to 0 dB again.

Caveat: I do not consider myself an expert on the use of compressors/limiters - I sort of just fool around while using my ears and by looking at their effects on the plotted audio signal (before/after plots).  I have not yet experimented, in my code, with adding compressors/limiters to individual tracks before mixing.
recorder
Reaper
recorder
Zoom R24
recorder
Boss Micro BR
  

T.C. Elliott

You may want to play with leaving headroom at .5 db and 1 db as it's recommended for CD and streaming. Especially if it's gonna be played on the radio as they compress their output and you'll get a pumping feel if it's too close to 0.  (I made this mistake with a disc I sent in to the local station.)
recorder
Boss BR-900
 
recorder
Reaper
   
        
         
Dead Ambassadors Bandcamp Page

T.C. Elliott Bandcamp Page

"You can't wait for inspiration. You have to go after it with a club." — Jack London


des0free

MassReverbMixedMastered-0.5dB
Time:
0:00
Volume:
50
0
Thanks for reminding me of that -- I knew the mastering preset on Waves L1 limits to -0.2 dB which means ~97.7% of max.  -0.5 dB means about 95% of maximum, so here changed my normalization to do that at each step.  I also increased compressor to ratio=3, thresh=-10.  The loudness is only slightly less than when I used 0 dB.

It is interesting to look at plots of the waveform and to calculate the Zwicker loudness at each step:



 
recorder
Reaper
recorder
Zoom R24
recorder
Boss Micro BR