Looking for IR on JBL E-120s

rp911

Inspired
Has anyone done one? I run a pair of them in a 2X12 open back cabinet.

I have a couple of extra drivers, but I think the process is over my head.
 
Got a way to record? Like, if you wanted to mic up whatever amp you have with that speaker cabinet, could you record it? If so, I'm happy to walk you through creating an impulse -- it's pretty easy.
 
I can record ... I have a Apogee Duet and Logic 8.0 on my Mac.

For mics, I have a pair of MXL 603s, an MXL 2001 and an EV 767.

Any help would be greatly appreciated!
 
All you'll have to do is hook up an amp to that cabinet and set the master volume not too loud (you don't want distortion). Set up a microphone however you would to get the sound you want.

Then hook up your interface's output to the effects loop return of that amp, so you can play sound through the speaker. Adjust the levels so nothing is distorting. Then run the microphone into the input of your interface, and make sure direct monitoring is off so you don't get feedback. I'll post a sine sweep here, all you have to do is play that through the amp and record what it sounds like, and then if you send it to me I'll turn it into an impulse response.
 
schnarf said:
and set the master volume not too loud (you don't want distortion).

I can't imagine the master volume setting you would need to make an E-120 distort! :D

In all seriousness I'd love to have some JBL D and E series impulses as well. The D120 is pretty darn flat if I recall which may be one of the reasons why people haven't bothered creating impulse responses for them.
 
That's just awesome, man ... thank you!

I can run a JBL E-120 and also a JBL K-110 if anyone is interested. I have a very clean Acoustic Image Focus 2R solid state power amp. Should that sine wave be run straight into the power amp, with no preamp in front of it? The idea is to just get what the speaker itself does, right? Not add any other preamp or processing in front of it?

The E-120s, forget it, they will blow before they distort. The K-110 is nice and warm and has a little bit of crunch to it if it's pushed hard, they sound great in my Vibrolux.
 
Hey, I got your PM, and figured I'd post the sweeps here in case other people want them: http://www.megaupload.com/?d=9YSWH6ZI

The two files sweep-5sec.wav and sweep-10sec.wav is what you want. You only need to use one of them. Longer is better (longer sweep means a lower noise floor, doubling the length of the sweep will lower the noise floor by 3dB I believe), so use the 10 second one if you can. All you have to do is play the sweep through your setup and record it. Again, gain staging is important -- you want it to be loud enough (doesn't need to be that loud though), while you don't want it to distort. Like I said before, make sure you have the mic in a position that you think sounds good. If you feel like it you can do a few sweeps with different mic positions or whatever.

The inverse filters I included are in case anybody wants to get adventurous. Basically, convolving the recording you make with this inverse filter will give you the impulse response. How does this work? So you could just put an impulse through and record what you get. That will give you a bad noise floor though. A sine sweep is actually an impulse stretched out in time -- an impulse contains all frequencies at once, while a sine sweep has those distributed at different times -- more accurately it is an allpass filter. So basically this inverse filter is an impulse stretched out in the opposite way, such that when it is convolved with the sine sweep the result is an impulse again. By stretching out the impulse in time, we can have more energy in total without clipping -- an impulse can only be so loud without clipping, while by making the sweep longer, it is as if the impulse is louder. So we send the allpass-filtered impulse through the speaker, get the impulse response of that speaker stretched out in time, and then use the inverse filter to "unstretch" it. This explanation is more touchy feely than mathy, if somebody wants to see the actual math I'm happy to show that.

You don't need to do the inverse filtering yourself though, I'm happy to make a few impulses, just send me your sweeps. If anybody is curious, I can show how to generate these sweeps and inverse filters, as well as how to get the impulse response. I use GNU Octave, which is a free open source replacement for MATLAB. Enjoy!
 
schnarf said:
You don't need to do the inverse filtering yourself though, I'm happy to make a few impulses, just send me your sweeps. If anybody is curious, I can show how to generate these sweeps and inverse filters, as well as how to get the impulse response. I use GNU Octave, which is a free open source replacement for MATLAB. Enjoy!

Thanks for the explanations and the sweep files, Schnarf.
Yes, I would like to know how to generate these sweeps and inverse filters, and of course how to get the IRs.
Anxiously waiting for your reply. ;)
 
Hey, I'll repost the information I PMed to you here:
You should also make sure to record the sweep at a sampling rate of 48k because that's what the Axe-FX works at, and it's unnecessary to loop it, and it's important there's just a little silence before and after the sweep (don't cut it too close). By a little silence I really mean little, maybe just make it half a second, that's way more than enough but can't hurt.

To get set up making impulses, download GNU Octave: http://www.gnu.org/software/octave/ and get it set up on your machine. I'll post the .m files I've made here in a bit. It'll run on Mac, Windows or Linux just fine.
 
Here are the impulses, converted to axe format. I haven't done any sanity checks to make sure they sound reasonable but I think it's right. Let me know if it seems wrong. I'm going to try them out when I get a chance, thanks for taking the work to record these!

I also included the MATLAB/GNU Octave scripts I used. Just put them somewhere in the MATLAB or Octave path so it can see them. I made CreateSweep.m and DeconvolveSweep.m to encapsulate the process and make it easy. All the other ones are needed too and used by them.

First run:
Code:
CreateSweep("output filename.wav", length of sweep in seconds, sampling frequency);
Sampling frequency should always be 48000 for the Axe-FX and 10 seconds is a good sweep length. It'll generate a sine sweep that you should play through your speaker and record the result. Make sure you get like half a second or more of silence before and afterwards in the recording. Try to use a high bit depth and make sure you're recording at 48k. Then save your recorded sweep as a wav, again at 48k, good bit depth (32 is easy and good).

Then run:
Code:
DeconvolveSweep("recorded sweep filename.wav", "impulse response output.wav", seconds, sampling frequency);
where you use the same values for seconds and sampling frequency as before. That will output the impulse response.

Now all you need to do is open the impulse response in a wav editor and trim the silence off the front. You want to truncate it at a zero crossing, where it looks like there's no activity. If you look at the file, it'll have silence, and then a peak. There might be some stuff leading up to the peak. You want to cut before the peak, and before any of the stuff that leads up to it. Now save this and you can load it in the Axe-FX IR converter.

One note: my code doesn't L1 normalize (so the sum of the absolute values of the samples adds up to 1). It normalizes so the impulse peaks at 1. This is because the utility L1 normalizes (I think, maybe he uses L2 or something), so I've done it this way to preserve dynamic range. If you want to use it as a real impulse response without converting it with the Axe-FX utility you might have to normalize differently. There's a commented out line in DeconvolveSweep.m that you could uncomment, and comment the line below it, and that'll make it L1 normalize.

I know this is a little technical. I can't really provide support on how to use MATLAB or Octave -- Octave has a good manual on the website if anybody is curious with the basics. Enjoy the impulses!

Edit: Just tried these out, they sound good to me!
 

Attachments

  • impulses.zip
    3.6 KB · Views: 64
  • MatlabScripts.zip
    2.7 KB · Views: 24
  • impulses.zip
    3.6 KB · Views: 43
Thanks a lot.
I'll make some impulses of my gear this weekend (HIWATT cabs, "big box" tweed twin, MESA/Boogie Dual Rectifier Trem-o-verb combo...)
Pretty convenient using matlab for me, being a linux user...
 
Hi, buddy!
First, thanks a lot for your explanations.
I'm here right now at my rehearsal place trying to take some IRs.
I have a couple of questions:

- About the "1/2 second (or so) silence before and after the recording"... how does the octave program "know" if that's silence or just parts of the freqs that could not be reproduced by the nature of the speaker? I guess it compares the sweep with the mic-recorded file, right? Well, they are not even the same length, the sweep is 10 sec and the recorded file is 10 second plus the two half seconds (so, aprox 11 sec). Am I doing something wrong here?

- Also, something weird:
When I try to create a sweep file with the CreateSweep, it works fine, but it's slightly different than yours.
When opened with a wav editor and listening, it goes "up" in frequency but the last second or so it goes down again (not totally, but it does). You can hear it here: http://www.pinktones.net/audio/sweep-alf.wav
What do you think?

Thank you for your help, dude!!
1. Don't worry about it. It's part of how convolution works -- silence before will translate into a delay in the impulse response. The silence before is just to make sure you don't accidentally cut the beginning off, and the end is to make sure the decay is captured. Think about a system that just consists of a 1 second delay -- what would the resulting sine sweep look like and what would its impulse response look like compared to a system that does nothing to it?
2. I messed up the CreateSweep script because I didn't use it myself and just whipped it up. I'm attaching an updated version of the scripts, or if you want, you can just update CreateSweep.m to be this:
Code:
function CreateSweep(filename, sec, fs)
	wavwrite(rot90(SineSweep(sec*fs, fs, 20, fs/2), -1), fs, filename);
I was in a rush so I made the sweep go up to the sampling rate instead of the nyquist frequency, so it aliased, and that's why it was going down. My bad.
 

Attachments

  • MatlabScripts.zip
    2.7 KB · Views: 15
Thanks again.
I got some impulses, and I'm really happy with the results, (always found the stock cabs too bassy and boomy). I got 6 IRs of my HIWATT cabs with a quite linear power amp and a flat mic, three IRs quite close to the cab in different positions, three more like a meter and a half away, and I really like those late ones, if the mic is too close I get unnatural and too bassy sound, but in a certain position at meter and a half it sounds practically the same as being in front of the cab.
Subtle variations in the position of the mic lead to dramatic changes in the sound, a lot of trial involved.
Tomorrow I'll be doing more trials and will do the big box tweed twin and the dual rect tremoverb.
 
schnarf said:
One note: my code doesn't L1 normalize (so the sum of the absolute values of the samples adds up to 1). It normalizes so the impulse peaks at 1. This is because the utility L1 normalizes (I think, maybe he uses L2 or something)

L2 norm since cliff also applies l2-norm to built in cabs.
 
Back
Top Bottom