|
From
|
jaromil <jaromil@kyuzz.org>
|
|
Date
|
Thu, 12 Jun 2003 00:49:07 +0200
|
|
Subject
|
Re: [hackmeeting] proposta per un altro seminario (se non e' troppo tardi)
|
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Wed, Jun 11, 2003 at 10:13:06PM +0000, asbesto wrote:
> Il Wed, Jun 11, 2003 at 10:53:11PM +0200, jaromil rigurgitava:
>
> > registrare ad un samplerate piu' basso suona MEGLIO di fare un
> > resampling software interpolato sul suono registrato a 44khz
>
> dipende da come viene fatto il resampling e quale frequenze/armoniche
> vai a eliminare facendo tale resampling.
si dipende da quello
cioe' tu vuoi dirmi che il resampling di sox e' meglio di quello
hardware?
mm
SI', SONO IO IL COGLIONE
cmq ci guadagni un sacco di cpu a resamplare hw
l'interpolazione BICUBICA di MIO NONNO IN CARIOLA
sono cose che non ho mai capito
gia' l'interpolazione quadratica di mop dentro a muse mi ha aperto in 2
no ma serio
GUARDA cosa ha scritto QUELL'UOMO!!!
/* MuSE - Multiple Streaming Engine
* DSP processing routines
* Copyleft (C) 2002 Matteo Nastasi aka mop <nastasi@alternativeoutput.it> */
int resample_stereo_16(IN_DATATYPE *dest, IN_DATATYPE *src, IN_DATATYPE *prev,
unsigned int num, float volume) {
/* il .001 per garantire che una qualche approssimazione non faccia
andare a leggere dati che non sono presenti */
int tnum = (int)((float)(num>>1) * (441.0 / 160.001))<<1;
int c, cc;
int disp = 0, modul = 0, oldin = -1, curin;
long lframe;
float ka,kb,kc;
float ha,hb,hc;
// fprintf(stderr,"prev %d %d %d %d\n",prev[0],prev[1],prev[2],prev[3]);
/* CHANNEL 0 - samples 0,1,2,3,4 - frames 0,2,4,6,8 */
/* a = y1
b = 2y2 - (y3 + 3y1) / 2
c = (y3 + y1) / 2 - y2
dove:
y1 = prev[0] y2 = prev[2] y3 = src[0] */
ka = (float)prev[0];
kb = (float)(2.0*prev[2]) - ((float)(src[0] + 3 * prev[0]) / 2.0);
kc = ((float)(src[0] + prev[0]) / 2.0) - (float)prev[2];
lframe = (long)(prev[0] * volume);
dest[0] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ka + (kb + kc * resarr160to441x[1]) *
resarr160to441x[1]) * volume);
dest[2] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ka + (kb + kc * resarr160to441x[2]) *
resarr160to441x[2]) * volume);
dest[4] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ka + (kb + kc * resarr160to441x[3]) *
resarr160to441x[3]) * volume);
dest[6] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ka + (kb + kc * resarr160to441x[4]) *
resarr160to441x[4]) * volume);
dest[8] = (IN_DATATYPE)CLIP16BIT(lframe);
/* CHANNEL 1 - samples 0,1,2,3,4 - frames 1,3,5,7,9 */
/* y1 = prev[1] y2 = prev[3] y3 = src[1] */
ha = (float)prev[1];
hb = (float)(2.0*prev[3]) - ((float)(src[1] + 3 * prev[1]) / 2.0);
hc = ((float)(src[1] + prev[1]) / 2.0) - (float)prev[3];
lframe = (long)(prev[1] * volume);
dest[1] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ha + (hb + hc * resarr160to441x[1]) *
resarr160to441x[1]) * volume);
dest[3] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ha + (hb + hc * resarr160to441x[2]) *
resarr160to441x[2]) * volume);
dest[5] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ha + (hb + hc * resarr160to441x[3]) *
resarr160to441x[3]) * volume);
dest[7] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ha + (hb + hc * resarr160to441x[4]) *
resarr160to441x[4]) * volume);
dest[9] = (IN_DATATYPE)CLIP16BIT(lframe);
// dest[1] = dest[3] = dest[5] = dest[7] = dest[9] = 0;
/* CHANNEL 0 - samples 5,6 - frames 10,12 */
/* y1 = prev[2] y2 = src[0] y3 = src[2] */
ka = (float)prev[2];
kb = (float)(2.0*src[0]) - ((float)(src[2] + 3 * prev[2]) / 2.0);
kc = ((float)(src[2] + prev[2]) / 2.0) - (float)src[0];
lframe = (long)((ka + (kb + kc * resarr160to441x[5]) *
resarr160to441x[5]) * volume);
dest[10] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ka + (kb + kc * resarr160to441x[6]) *
resarr160to441x[6]) * volume);
dest[12] = (IN_DATATYPE)CLIP16BIT(lframe);
/* CHANNEL 1 - samples 5,6 - frames 11,13 */
/* y1 = prev[3] y2 = src[1] y3 = src[3] */
ha = (float)prev[3];
hb = (float)(2.0*src[1]) - ((float)(src[3] + 3 * prev[3]) / 2.0);
hc = ((float)(src[3] + prev[3]) / 2.0) - (float)src[1];
lframe = (long)((ha + (hb + hc * resarr160to441x[5]) *
resarr160to441x[5]) * volume);
dest[11] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ha + (hb + hc * resarr160to441x[6]) *
resarr160to441x[6]) * volume);
dest[13] = (IN_DATATYPE)CLIP16BIT(lframe);
// dest[11] = dest[13] = 0;
for (c = 14 , modul = 0 ; c < tnum ; c+= 2) {
cc = (c>>1) - modul;
curin = disp+(resarr160to441lc[cc] << 1);
if (curin != oldin) {
oldin = curin;
/* y1 = src[curin] y2 = src[curin+2] y3 = src[curin+4] */
ka = (float)src[curin];
kb = (float)(2.0*src[curin+2]) - ((float)(src[curin+4] +
3 * src[curin]) / 2.0);
kc = ((float)(src[curin+4] + src[curin]) / 2.0) - (float)src[curin+2];
/* y1 = src[curin+1] y2 = src[curin+3] y3 = src[curin+5] */
ha = (float)src[curin+1];
hb = (float)(2.0*src[curin+3]) - ((float)(src[curin+5] +
3 * src[curin+1]) / 2.0);
hc = ((float)(src[curin+5] + src[curin+1]) / 2.0) - (float)src[curin+3];
}
lframe = (long)((ka + (kb + kc * resarr160to441lx[cc]) *
resarr160to441lx[cc]) * volume);
dest[c] = (IN_DATATYPE)CLIP16BIT(lframe);
lframe = (long)((ha + (hb + hc * resarr160to441lx[cc]) *
resarr160to441lx[cc]) * volume);
dest[c+1] = (IN_DATATYPE)CLIP16BIT(lframe);
// dest[c+1] = 0;
if (cc == 441) {
modul += 441;
disp += 320;
}
}
// fprintf(stderr,"last %d %d %d %d|",src[num-4],src[num-3],src[num-2],src[num-1]);
return (tnum);
}
#endif
> > tale resampling lo fai PER FORZA se vuoi strimmare sotto i 5-6Kbytes/s
> questo e' un'altro discorso eh!
SI VABBE'
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+57HjWLCC1ltubZcRAjK+AJ0Tt1MUbWOxtPaqytE2e0lC8U2b7QCePgXl
xCGE1FOgA2KbHGY2Hx1KQ/E=
=W/XK
-----END PGP SIGNATURE-----
_______________________________________________
hackmeeting mailing list
hackmeeting@kyuzz.org
http://lists.kyuzz.org/mailman/listinfo/hackmeeting