Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Sistema";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

abajo

Cómo quitar de la tarjeta de sonido, la forma de onda. Encontrar ramas similares


Pasha   (2001-09-21 15:58) [0]

Cómo quitar de la tarjeta de sonido, la forma de onda.
Con el fin de calcular los cambios de señal de sonido a lo largo del tiempo.



REL   (2001-09-25 20:04) [1]

Es bastante simple:
Usa WinAPI
Aquí está el programa (alguien hace mucho en el lanzamiento de Inet):

usos
Windows, Mensajes, Sistemas, Clases, Gráficos, Controles, Formularios,
Diálogos, StdCtrls, ExtCtrls, ComCtrls, MMSystem;

tipo
TData8 = matriz [0..127] de byte;
PData8 = ^ TData8;
TData16 = matriz [0..127] de smallint;
PData16 = ^ TData16;
TPointArr = matriz [0..127] de TPoint;
PPointArr = ^ TPointArr;
TForm1 = clase (TForm)
Button1: TButton;
Button2: TButton;
PaintBox1: TPaintBox;
TrackBar1: TTrackBar;
CheckBox1: TCheckBox;
procedimiento Button1Click (Sender: TObject);
procedimiento Button2Click (Sender: TObject);
privada
{Declaraciones privadas}
público
procedimiento OnWaveIn (var Msg: TMessage); mensaje MM_WIM_DATA;
fin;

var
Form1: TForm1;

implementación

{$ R * .DFM}

var
WaveIn: hWaveIn;
hBuf: THandle;
BufHead: TWaveHdr;
bufsize: integer;
Bits16: booleano;
p: PPointArr;
detener: booleano = falso;

procedimiento TForm1.Button1Click (Sender: TObject);
var
encabezado: TWaveFormatEx;
BufLen: palabra;
buf: puntero;
comenzar
BufSize: = TrackBar1.Position * 500 + 100;
Bits16: = CheckBox1.Checked;
con el encabezado de comenzar
wFormatTag: = WAVE_FORMAT_PCM;
nChannels: = 1;
nSamplesPerSec: = 22050;
wBitsPerSample: = entero (Bits16) * 8 + 8;
nBlockAlign: = nChannels * (wBitsPerSample div 8);
nAvgBytesPerSec: = nSamplesPerSec * nBlockAlign;
cbSize: = 0;
fin;
WaveInOpen (Addr (WaveIn), WAVE_MAPPER, addr (encabezado),
Form1.Handle, 0, CALLBACK_WINDOW);
BufLen: = header.nBlockAlign * BufSize;
hBuf: = GlobalAlloc (GMEM_MOVEABLE y GMEM_SHARE, BufLen);
Buf: = GlobalLock (hBuf);
con BufHead empezar
lpData: = Buf;
dwBufferLength: = BufLen;
dwFlags: = WHDR_BEGINLOOP;
fin;
WaveInPrepareHeader (WaveIn, Addr (BufHead), sizeof (BufHead));
WaveInAddBuffer (WaveIn, addr (BufHead), sizeof (BufHead));
GetMem (p, BufSize * sizeof (TPoint));
parada: = verdadero;
WaveInStart (WaveIn);
fin;

procedimiento TForm1.Button2Click (Sender: TObject);
comenzar
si stop = false entonces salga;
parada: = falso;
sin dejar de hacer Application.ProcessMessages;
parada: = falso;
WaveInReset (WaveIn);
WaveInUnPrepareHeader (WaveIn, addr (BufHead), sizeof (BufHead));
WaveInClose (WaveIn);
Desbloqueo global (hBuf);
GlobalFree (hBuf);
FreeMem (p, BufSize * sizeof (TPoint));
fin;

procedimiento TForm1.OnWaveIn;
var
i: entero;
data8: PData8;
data16: PData16;
h: entero;
XScale, YScale: individual;
comenzar
h: = PaintBox1.Height;
XScale: = PaintBox1.Width / BufSize;
si Bits16 entonces comienza
data16: = PData16 (PWaveHdr (Msg.lParam) ^. lpData);
YScale: = h / (1 shl 16);
para i: = 0 a BufSize - 1 do
p ^ [i]: = Point (round (i * XScale),
round (h / 2 - data16 ^ [i] * YScale));
fin de lo contrario comienza
Data8: = PData8 (PWaveHdr (Msg.lParam) ^. LpData);
YScale: = h / (1 shl 8);
para i: = 0 a BufSize - 1 do
p ^ [i]: = Point (round (i * XScale),
round (h - data8 ^ [i] * YScale));
fin;
con PaintBox1.Canvas hacer comenzar
Brush.Color: = clWhite;
FillRect (ClipRect);
Polilínea (Slice (p ^, BufSize));
fin;
si parar
luego WaveInAddBuffer (WaveIn, PWaveHdr (Msg.lParam),
SizeOf (TWaveHdr)
else stop: = true;
fin;

procedimiento TForm1.FormDestroy (Sender: TObject);
comenzar
Button2.Click;
fin;




Páginas: 1 rama entera

Foro: "Sistema";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

arriba





Memoria: 0.55 MB
Tiempo: 0.098 c
3-21961
Shakh
2001-12-03 20:29
2002.01.08
Si puede haber valores de parámetros de consulta vacíos en SQL


1-22061
Tracción a las ruedas
2001-12-18 19:44
2002.01.08
¿Por qué el formulario MDI no muestra MDIChild en el menú?


1-22052
avr555
2001-12-17 19:54
2002.01.08
Arrastrar y soltar componente


3-21973
Zav
2001-12-06 10:55
2002.01.08
Componente DBNavigator


6-22304
sedoy
2001-10-11 14:09
2002.01.08
Servidor cliente en Internet a través de un proxy.





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish French
gallego georgiano Alemán Griego criollo haitiano Hebreo hindi Húngaro islandés Indonesian irlandés Italiano Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese Rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español