Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | added logFreq option to log transform frequencies - I advise *against* using this option |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | master |
Files: | files | file ages | folders |
SHA3-256: |
4fd5b5e5b0a284cebd2d62a27b63726a |
User & Date: | jesse.mcclure@umassmed.edu 2016-02-10 19:14:56 |
Context
2016-05-18
| ||
14:00 | add log transform option check-in: 17f3ce2f1e user: jesse.mcclure@umassmed.edu tags: trunk, master | |
2016-02-10
| ||
19:14 | added logFreq option to log transform frequencies - I advise *against* using this option check-in: 4fd5b5e5b0 user: jesse.mcclure@umassmed.edu tags: trunk, master | |
2015-01-11
| ||
14:35 | remove broken link (wiki is moving) check-in: 616e4e5238 user: jesse@mccluresk9.com tags: trunk, master | |
Changes
Changes to share/config.
︙ | ︙ | |||
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | ## coefficients for a generalized cosine window function ## fontFamily: font name ## fontSize: font size in pixels ## help: command for launching the help page ## output: any combination of the following: ## path: print path length ## time: print path duration set threshold = 18.0 set floor = 30.0 set samples = 256 set bandpass = 1.25 10.0 set scale = 8 set window = hanning set fontFamily = droid sans set fontSize = 14 set help = xterm -e man fex-help ## Colors ## spectrogram: background spectrogram ## threshold: points included in the signal ## points: points included in the current excursion calculation ## lines: lines connecting points in the current calculation ## eraser1/2: two colors for eraser block | > > > > > > > | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | ## coefficients for a generalized cosine window function ## fontFamily: font name ## fontSize: font size in pixels ## help: command for launching the help page ## output: any combination of the following: ## path: print path length ## time: print path duration ## logFreq: whether frequency should be log10 transformed (true or false) set threshold = 18.0 set floor = 30.0 set samples = 256 set bandpass = 1.25 10.0 set scale = 8 set window = hanning set fontFamily = droid sans set fontSize = 14 set help = xterm -e man fex-help ## CAUTION: logFreq was added by user request. While the option will accurately ## log (base 10) transform frequencies as requested, I have not done any testing ## on whether this produces reasonable results. Using this option is strongly ## discouraged until it has been thoroughly tested and found to give reasonable ## results. set logFreq = false ## Colors ## spectrogram: background spectrogram ## threshold: points included in the signal ## points: points included in the current excursion calculation ## lines: lines connecting points in the current calculation ## eraser1/2: two colors for eraser block |
︙ | ︙ |
Changes to src/config.c.
︙ | ︙ | |||
100 101 102 103 104 105 106 | rc = fopen("config","r"); if (!rc && !chdir(getenv("HOME"))) rc = fopen(".fexrc","r"); chdir(pwd); if (!rc) rc = fopen("/usr/share/fex/config","r"); if (!rc) die("unable to open configuration file"); /* initialize conf structure and config reading variables */ char line[LINE_LEN], prefix[32], option[32], fmt[LINE_LEN]; | | > | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | rc = fopen("config","r"); if (!rc && !chdir(getenv("HOME"))) rc = fopen(".fexrc","r"); chdir(pwd); if (!rc) rc = fopen("/usr/share/fex/config","r"); if (!rc) die("unable to open configuration file"); /* initialize conf structure and config reading variables */ char line[LINE_LEN], prefix[32], option[32], fmt[LINE_LEN]; char window[32], font_fam[LINE_LEN], logFreq[32]; const char *fspec[] = { "", "%d ","%f ", "%lf ", "%s", "%[^\n]" }; int j, mode; conf.thresh = 14.0; conf.spect_floor = 40.0; conf.hipass = 12.0; conf.lopass = 800.0; conf.winlen = 256; conf.hop = 0; conf.win = (WindowFunction *) windows; conf.log10 = False; struct { const char *name; int mode; int type[5]; void *var[5]; } cf[] = { #include "config.h" |
︙ | ︙ | |||
138 139 140 141 142 143 144 145 146 147 148 149 150 151 | sscanf(line,fmt,cf[i].var[0],cf[i].var[1],cf[i].var[2], cf[i].var[3],cf[i].var[4]); } } } /* set hop, threshold, floor, and windowing function */ if (!conf.hop) conf.hop = conf.winlen / 4; conf.thresh *= -1; conf.spect_floor *= -1; if (strncasecmp(window,"custom",6) == 0) conf.win = (WindowFunction *) &custom; else if (strlen(window)) for (i = 0; i < sizeof(windows)/sizeof(windows[0]); i++) if (!strncasecmp(window,windows[i].type,strlen(window))) | > | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | sscanf(line,fmt,cf[i].var[0],cf[i].var[1],cf[i].var[2], cf[i].var[3],cf[i].var[4]); } } } /* set hop, threshold, floor, and windowing function */ if (!conf.hop) conf.hop = conf.winlen / 4; if (logFreq[0] == 't' || logFreq[0] == 'T') conf.log10 = True; conf.thresh *= -1; conf.spect_floor *= -1; if (strncasecmp(window,"custom",6) == 0) conf.win = (WindowFunction *) &custom; else if (strlen(window)) for (i = 0; i < sizeof(windows)/sizeof(windows[0]); i++) if (!strncasecmp(window,windows[i].type,strlen(window))) |
︙ | ︙ |
Changes to src/config.h.
︙ | ︙ | |||
26 27 28 29 30 31 32 33 34 35 36 37 38 39 | { font_fam, NULL, NULL, NULL, NULL}, }, { "fontSize", CONF_SET, { C_TYPE_D, C_TYPE__, C_TYPE__, C_TYPE__, C_TYPE__ }, { &conf.font_size, NULL, NULL, NULL, NULL}, }, { "help", CONF_SET, { C_TYPE_LN, C_TYPE__, C_TYPE__, C_TYPE__, C_TYPE__ }, { &help_cmd, NULL, NULL, NULL, NULL}, }, /* color */ { "spectrogram", CONF_COL, { C_TYPE_LF, C_TYPE_LF, C_TYPE_LF, C_TYPE_LF, C_TYPE_LF }, { &conf.col[0].r, &conf.col[0].g, &conf.col[0].b, &conf.col[0].a, &conf.col[0].w } }, { "threshold", CONF_COL, | > > > > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | { font_fam, NULL, NULL, NULL, NULL}, }, { "fontSize", CONF_SET, { C_TYPE_D, C_TYPE__, C_TYPE__, C_TYPE__, C_TYPE__ }, { &conf.font_size, NULL, NULL, NULL, NULL}, }, { "help", CONF_SET, { C_TYPE_LN, C_TYPE__, C_TYPE__, C_TYPE__, C_TYPE__ }, { &help_cmd, NULL, NULL, NULL, NULL}, }, { "logFreq", CONF_SET, { C_TYPE_S, C_TYPE__, C_TYPE__, C_TYPE__, C_TYPE__ }, { &logFreq, NULL, NULL, NULL, NULL}, }, /* color */ { "spectrogram", CONF_COL, { C_TYPE_LF, C_TYPE_LF, C_TYPE_LF, C_TYPE_LF, C_TYPE_LF }, { &conf.col[0].r, &conf.col[0].g, &conf.col[0].b, &conf.col[0].a, &conf.col[0].w } }, { "threshold", CONF_COL, |
︙ | ︙ |
Changes to src/fex.h.
︙ | ︙ | |||
97 98 99 100 101 102 103 | double hipass, lopass; int scale; int winlen, hop, font_size; WindowFunction *win; RGBA col[RGBA_LAST]; cairo_font_face_t *font, *bfont; char **help_cmd; | | | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | double hipass, lopass; int scale; int winlen, hop, font_size; WindowFunction *win; RGBA col[RGBA_LAST]; cairo_font_face_t *font, *bfont; char **help_cmd; Bool long_out, layers, log10; } Config; /* main.c */ extern int die(const char *, ...); /* config.c */ extern const char *configure(int, const char **); extern int deconfigure(); |
︙ | ︙ |
Changes to src/spectro.c.
︙ | ︙ | |||
142 143 144 145 146 147 148 | if (spect->fft->mask[i][j]) continue; if (spect->fft->amp[i][j] > spect->fft->amp[i][f] || !f) f = j; } /* add points and do calculations if f is above threshold */ if (f > 0 && spect->fft->amp[i][f] > conf.thresh) { if (lt != spect->fft->time[0]) { | > | > | < | 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | if (spect->fft->mask[i][j]) continue; if (spect->fft->amp[i][j] > spect->fft->amp[i][f] || !f) f = j; } /* add points and do calculations if f is above threshold */ if (f > 0 && spect->fft->amp[i][f] > conf.thresh) { if (lt != spect->fft->time[0]) { if (conf.log10) spect->pex += hypot(log10(spect->fft->freq[f]) - log10(lf),spect->fft->time[i] - lt); else spect->pex += hypot(spect->fft->freq[f] - lf,spect->fft->time[i] - lt); spect->tex += spect->fft->time[i] - lt; } lt = spect->fft->time[i]; lf = spect->fft->freq[f]; cairo_line_to(l, (i - spect->fft_x) * conf.scale + conf.scale / 2, (f - spect->fft_y) * conf.scale + conf.scale / 2); |
︙ | ︙ |