You are not logged in.

#1 2015-05-24 16:06:35

pittedmetal
Member
Registered: 2014-04-28
Posts: 9

Headphone equalization guide alternatives required

Hello fellow archers,

Can anybody please recommend alternatives to the programs mentioned on this page.

http://www.head-fi.org/t/413900/how-to- … a-tutorial

Thanks in advance.

Offline

#2 2015-05-24 17:20:29

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 20,601

Re: Headphone equalization guide alternatives required

https://wiki.archlinux.org/index.php/Pu … #Equalizer
https://wiki.archlinux.org/index.php/Ad … _equalizer

ewaller@turing ~ 1014 %packer -Ss jnoise        
aur/jnoise 0.6.0-1 (5)
    A command line JACK app generating white and pink gaussian noise
aur/jnoisemeter 0.1.0-1 (0)
    measures noise levels to various standards
ewaller@turing ~ 1015 %

Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
The shortest way to ruin a country is to give power to demagogues.— Dionysius of Halicarnassus
---
How to Ask Questions the Smart Way

Offline

#3 2015-05-24 18:07:12

pittedmetal
Member
Registered: 2014-04-28
Posts: 9

Re: Headphone equalization guide alternatives required

ewaller wrote:

https://wiki.archlinux.org/index.php/Pu … #Equalizer
https://wiki.archlinux.org/index.php/Ad … _equalizer

ewaller@turing ~ 1014 %packer -Ss jnoise        
aur/jnoise 0.6.0-1 (5)
    A command line JACK app generating white and pink gaussian noise
aur/jnoisemeter 0.1.0-1 (0)
    measures noise levels to various standards
ewaller@turing ~ 1015 %

Thanks but I did try those before but they were unsatisfactory.

I'm using LV2 and LADSPA plugins in ardour which have parametric equalizers. I could run SineGen perfectly through wine so that's sorted out. I'm not going to affix [SOLVED] to my post for now because I want some more recommendations. A standalone parametric equalizer perhaps?

Offline

#4 2015-05-24 22:04:17

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 20,601

Re: Headphone equalization guide alternatives required

Yeah, I am a bit disappointed in the arbitrary function generator software available on Linux.
I usually write stuff in C to do it; Octave might not be a bad solution.

Here is a C file I have laying around.  I cannot say I wrote it.  It is a Franken-Program put together with a bunch of borrowed code.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>/* M_PI is declared in math.h */

#define PI M_PI

typedef unsigned int    UI;
typedef unsigned /*long*/ int    UL;
typedef unsigned short int   US;
typedef unsigned char    UC;
typedef signed int       SI;
typedef signed long int  SL;
typedef signed short int SS;
typedef signed char  SC;

#define attr(a) __attribute__((a))
#define packed attr(packed)/* WAV header, 44-byte total */

typedef struct{ UL riff  packed; 
  UL len  packed; 
  UL wave packed; 
  UL fmt  packed; 
  UL flen packed; 
  US one  packed; 
  US chan packed; 
  UL hz   packed; 
  UL bpsec    packed; 
  US bpsmp    packed; 
  US bitpsmp  packed; 
  UL dat  packed; 
  UL dlen packed;
}WAVHDR;

int savefile(const char*const s,const void*const m,const int ml){
  FILE*f=fopen(s,"wb");
  int ok=0;
  if(f){
    ok=fwrite(m,1,ml,f)==ml;
    fclose(f);
  }
  return ok;
}


/* "converts" 4-char string to long int */
#define dw(a) (*(UL*)(a))


/* Makes 44-byte header for 8-bit WAV in memory
 * usage: wavhdr(pointer,sampleRate,dataLength) */

void wavhdr(void*m,UL hz,UL dlen){
  WAVHDR*p=m;
  p->riff=dw("RIFF");
  p->len=dlen+44;
  p->wave=dw("WAVE");
  p->fmt=dw("fmt ");
  p->flen=0x10;
  p->one=1;
  p->chan=1;
  p->hz=hz;
  p->bpsec=hz;
  p->bpsmp=1;
  p->bitpsmp=8;
  p->dat=dw("data");
  p->dlen=dlen;
}

float flywheel=0;
float modulation =0;
float delta=0.1;

/* returns 8-bit sample for a sine wave */
UC wave(UL rate,float freq,UC amp,UL n){
  
  flywheel += (PI*2/rate)*freq;
  if (flywheel > PI*2)
    flywheel -= PI*2;
  modulation += delta;
  //if (abs(modulation)>100) delta = -delta;
  return (UC) (sin(flywheel)*(1-sin(modulation)/2)*amp+128);
}


/* make arbitrary audio data here */
void makeaud(UC*p,const UL rate,UL z){
  float freq=2000;
  UC amp=80;
  int i=0;
  while(i++<z){
    *p++=wave(rate,freq,amp,i);
  }
}


/* makes wav file */
void makewav(const UL rate,const UL dlen){
  const UL mlen=dlen+44;
  UC*const m=malloc(mlen);
  if(m){
    wavhdr(m,rate,dlen);
    makeaud(m+44,rate,dlen);
    savefile("out.wav",m,mlen);
  }
}


int main(){
  if(sizeof(WAVHDR)!=44)puts("bad struct");
  makewav(22050,1000000);
  return 0;
}

The function happens in UC_wave.  In this case, I was creating an carrier that was being modulated by a swept sinusoid.  I was using it to debug a  spectral waterfall display I had been working on last year.
No guarantees.   It creates a wave file that can be piped through aplay.  My display program was a sink for pulseaudio and output (dynamically) through gnuplot.

Last edited by ewaller (2015-05-24 22:06:00)


Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
The shortest way to ruin a country is to give power to demagogues.— Dionysius of Halicarnassus
---
How to Ask Questions the Smart Way

Offline

Board footer

Powered by FluxBB