Python Open Room Correction (PORC) - Page 4 - diyAudio
Go Back   Home > Forums > Source & Line > Digital Line Level

Digital Line Level DACs, Digital Crossovers, Equalizers, etc.

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 5th September 2012, 01:07 PM   #31
Pano is offline Pano  United States
diyAudio Moderator
 
Pano's Avatar
 
Join Date: Oct 2004
Location: Milliways
Blog Entries: 4
JL, I did a bit of experimenting with PORC and with "by hand". Both seemed to work pretty well.

To do the correction by hand, I took a measurement with HOLMImpluse then combined that (in HOLM) with my target response. I don't remember which math function I used.
Once that done, I exported a 1/6 octave FR, then re-imported it so that that the FR had the smoothing built in. Not sure that step as necessary, it might not be.
From there I exported the impulse wave for use in a convolver. It worked well. Basically it's doing the same thing as PORC, but with a simple 1/6 octave smoothing. You could choose other smoothing, of course. More steps to go thru than PORC, of course.

Can't say which was better, I didn't do enough listening or measuring. But they did sound similar.
__________________
Take the Speaker Voltage Test!
  Reply With Quote
Old 6th September 2012, 12:59 AM   #32
diyAudio Member
 
Join Date: Nov 2011
Location: Maryland
Default curve fitting

Quote:
Originally Posted by jlo View Post
Spline curve calculations are allways tricky : would it be possible to avoid splines ?
I appreciate you pointing this problem out. I will have to dive back into the code and research a better solution: it's definitely something that can be solved.

Do you recommend a particular method or algorithm vs spline?
  Reply With Quote
Old 6th September 2012, 05:43 AM   #33
jlo is offline jlo  France
diyAudio Member
 
Join Date: Nov 2004
Location: france
I would prefer a PCHIP interpolation, see :
http://www.mathworks.com/moler/interp.pdf
http://www.mathworks.fr/help/techdoc/ref/pchip.html
because the points you define are real "corners" for the curve. Spline curves are smoother but can easily give values out of the wished limits.
__________________
jl ohl
ohl about audio
  Reply With Quote
Old 6th September 2012, 05:59 AM   #34
diyAudio Member
 
Join Date: Feb 2009
Location: Brisbane, Australia
I just had a quick review of scipy docs and seems that an equivalent to matlab's pchip doesn't exist.

A while back this was posted this to a sourceforge mailing list for matplotlib but I've not had time to review it thoroughly to know if it still works or is of use directly in porc without rework I did see some discussion on merging it to mpl but I'm not sure if this has happened or not.

Interesting discussion guys, when I get home from in a few hours I'll have a read and post up anything I can find.
  Reply With Quote
Old 8th September 2012, 10:11 PM   #35
diyAudio Member
 
Join Date: Nov 2011
Location: Maryland
Quote:
Originally Posted by hochopeper View Post
I just had a quick review of scipy docs and seems that an equivalent to matlab's pchip doesn't exist
Octave, the open source version of MATLAB, has a pchip function. See attached script from the Octave code base. It's just a matter of porting the function over to Python.

I'll try to set aside some time within the next few days to get it done.... unless someone else beats me to it
Attached Files
File Type: zip pchip.zip (2.3 KB, 10 views)
  Reply With Quote
Old 14th September 2012, 08:34 PM   #36
diyAudio Member
 
Join Date: Nov 2011
Location: Maryland
Default target curve fix

I believe the target curve problem is fixed. Interpolation is not an ideal solution but it seems to work fairly well. If I'm not mistaken this is also the method DRC-FIR employs?

Another option is to simply target a flat curve and use parametric equalization further down the chain. I know this is fairly trivial if one uses OpenDRC or MiniDSP.

Please let me know if anyone finds any other problems or bugs.
  Reply With Quote
Old 15th September 2012, 08:06 PM   #37
jlo is offline jlo  France
diyAudio Member
 
Join Date: Nov 2004
Location: france
Thanks Greenm01 for the update !

but I get following error message from porc.py
Click the image to open in full size.

Any idea ?
__________________
jl ohl
ohl about audio
  Reply With Quote
Old 15th September 2012, 09:09 PM   #38
diyAudio Member
 
Join Date: Nov 2011
Location: Maryland
It appears the latest version of Scipy moved the fft and ifft functions into the scipy.fftpack package. I still have 0.9 installed on my machine where it's located in scipy.signal

I made the update and pushed the revision to Github. It works on my end. Please let me know if you have any other version issues.
  Reply With Quote
Old 15th September 2012, 10:00 PM   #39
jlo is offline jlo  France
diyAudio Member
 
Join Date: Nov 2004
Location: france
Quick and great job Greem01,
seems that everything works fine now, including targets !
I'll have to test more but it's late for me now.

Thanks a lot !
__________________
jl ohl
ohl about audio
  Reply With Quote
Old 26th September 2012, 01:13 AM   #40
diyAudio Member
 
Join Date: Feb 2009
Location: Brisbane, Australia
Quote:
Originally Posted by greenm01 View Post
I believe the target curve problem is fixed. Interpolation is not an ideal solution but it seems to work fairly well. If I'm not mistaken this is also the method DRC-FIR employs?

Another option is to simply target a flat curve and use parametric equalization further down the chain. I know this is fairly trivial if one uses OpenDRC or MiniDSP.

Please let me know if anyone finds any other problems or bugs.

I just noticed in the update to SciPy 0.11 (released today) that there is some improvements/additions to the interpolate tools - SciPy 0.11.0 Release Notes — SciPy v0.12.dev Reference Guide (DRAFT)

Actually that link is a bit odd - try this - http://docs.scipy.org/doc/scipy/refe...se.0.11.0.html

Also note that there is change to behaviour of the univariate spline in 0.11, it now returns an array, I haven't had a chance to test how this might affect current porc code but worth pointing out that people not wanting to get their hands dirty shouldn't upgrade to 0.11 until that is tested.

Last edited by hochopeper; 26th September 2012 at 01:18 AM.
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Introducing OpenDRC, Open Digital Room Correction engine minidsp miniDSP 19 3rd September 2012 01:37 AM
How does the BeoLab5 room correction work? boris81 Subwoofers 0 6th February 2011 06:14 PM
Is a Room correction trial possible? brianuk PC Based 7 5th October 2009 07:29 PM
I need help with digital Room-correction Radian Multi-Way 1 7th February 2007 07:10 PM
Room correction systems herodote Digital Source 0 24th July 2006 10:56 AM


New To Site? Need Help?

All times are GMT. The time now is 08:24 PM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright 1999-2014 diyAudio

Content Relevant URLs by vBSEO 3.3.2