בית
Top.Mail.Ru Yandeks.Metrika
פורום: "מערכת";
ארכיון נוכחי: 2002.01.08;
הורדה: [xml.tar.bz2];

למטה

כיצד להסיר מכרטיס הקול, צורת הגל. מצא סניפים דומים


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

כיצד להסיר מכרטיס הקול, צורת הגל.
על מנת לחשב את השינויים צליל האות לאורך זמן.



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

זה די פשוט:
השתמש ב- WinAPI
הנה התוכנית (מישהו לפני זמן רב Inet זרק):

שימושים
Windows, הודעות, SysUtils, כיתות, גרפיקה, פקדים, טפסים,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, MMSystem;

סוג
TData8 = מערך [0..127] של בתים;
PData8 = ^ TData8;
TData16 = מערך [0..127] של smallint;
PData16 = ^ TData16;
TPointArr = מערך [0..127] של TPoint;
PPointArr = ^ TPointArr;
TForm1 = מעמד (TForm)
Button1: לחצן הכפתור;
Button2: לחצן הכפתור;
PaintBox1: TPaintBox;
TrackBar1: TTrackBar;
CheckBox1: TCheckBox;
הליך Button1Click (שולח: TObject);
הליך Button2Click (שולח: TObject);
פְּרָטִי
{הצהרות פרטיות}
ציבורי
הליך OnWaveIn (var Msg: TMessage); הודעה MM_WIM_DATA;
הסוף;

היה
Form1: TForm1;

הפעלה

{$ R * .DFM}

היה
WaveIn: hWaveIn;
hBuf: Thandle;
BufHead: TWaveHdr;
bufsize: מספר שלם;
Bits16: בוליאני;
p: PPointArr;
stop: boolean = false;

הליך TForm1.Button1Click (שולח: TObject);
היה
כותרת: TWaveFormatEx;
BufLen: מילה;
buf: מצביע;
להתחיל
BufSize: = TrackBar1.Position * 500 + 100;
Bits16: = CheckBox1.Checked;
עם כותרת לעשות
wFormatTag: = WAVE_FORMAT_PCM;
n ערוצים: = 1;
nSamplesPerSec: = 22050;
wBitsPerSample: מספר שלם = = (Bits16) * 8 + 8;
nBlockAlign: = nChannels = (wBitsPerSample 8);
nAvgBytesPerSec: = nSamplesPerSec * nBlockAlign;
cbSize: = 0;
הסוף;
WaveInOpen (Addr (WaveIn), WAVE_MAPPER, addr (כותרת),
Form1.Handle, 0, CALLBACK_WINDOW);
BufLen: = header.nBlockAlign * BufSize;
hBuf: = GlobalAlloc (GMEM_MOVEABLE ו- GMEM_SHARE, BufLen);
Buf: = GlobalLock (hBuf);
עם BufHead להתחיל
lpData: = Buf;
dwBufferLength: = BufLen;
dwFlags: = WHDR_BEGINLOOP;
הסוף;
WaveInPrepareHeader (WaveIn, Addr (BufHead), גודל (BufHead));
WaveInAddBuffer (WaveIn, Addr (BufHead), sizeof (BufHead));
GetMem (p, BufSize * sizeof (TPoint));
stop: = true;
WaveInStart (WaveIn);
הסוף;

הליך TForm1.Button2Click (שולח: TObject);
להתחיל
אם stop = false ואז יציאה;
העגת you 49
בעוד לא להפסיק לעשות Application.ProcessMessages;
העגת you 49
WaveInReset (WaveIn);
WaveInUnPrepareHeader (WaveIn, Addr (BufHead), sizeof (BufHead));
WaveInClose (WaveIn);
GlobalUnlock (hBuf);
GlobalFree (hBuf);
FreeMem (p, BufSize * sizeof (TPoint));
הסוף;

הליך TForm1.OnWaveIn;
היה
i: מספר שלם;
data8: PData8;
data16: PData16;
h: מספר שלם;
XScale, YScale: יחיד;
להתחיל
h: = PaintBox1.Height;
XScale: = PaintBox1.Width / BufSize;
אם Bits16 מתחיל
data16: = PData16 (PWaveHdr (Msg.lParam) ^ lpData);
YScale: = h / (1 shlXX);
עבור i: = 0 ל BufSize - 1 לעשות
p ^ [i]: = נקודה (סיבוב (i * XScale),
סיבוב (h / 2 - data16 ^ [i] * YScale));
בסופו של אחר להתחיל
Data8: = PData8 (PWaveHdr (Msg.lParam) ^ LpData);
YScale: = h / (1 shlXX);
עבור i: = 0 ל BufSize - 1 לעשות
p ^ [i]: = נקודה (סיבוב (i * XScale),
סיבוב (h - data8 ^ [i] * YScale));
הסוף;
עם PaintBox1.Canvas להתחיל
Brush.Color: = clWhite;
FillRect (ClipRect);
Polyline (פרוסה (p ^, BufSize));
הסוף;
אם לעצור
ואז WaveInAddBuffer (WaveIn, PWaveHdr (Msg.lParam),
SizeOf (TWaveHdr))
Other stop: = true;
הסוף;

הליך TForm1.FormDestroy (שולח: TObject);
להתחיל
Button2.Click;
הסוף;




עמודים: 1 ענף שלם

פורום: "מערכת";
ארכיון נוכחי: 2002.01.08;
הורדה: [xml.tar.bz2];

למעלה





זיכרון: 0.56 MB
זמן: 0.024 c
1-22192
חוֹלֵם
2001-12-15 19:34
2002.01.08
איך למשוך שניות מן הזמן ולתרגם


4-22466
אמנות
2001-10-31 15:21
2002.01.08
ובכל זאת, כיצד להגביל את המטוס של תנועת העכבר לגבולות הטופס?


1-22002
BFG
2001-12-16 16:24
2002.01.08
גרפים


14-22367
קן
2001-11-08 14:56
2002.01.08
לאן ללכת ללמוד?


3-21952
S_King
2001-12-04 10:18
2002.01.08
קבע את תעודת הזהות הראשונה בחינם





אפריקאנס אלבני ערבי אַרְמֶנִי אזרביג'אן הבסקים בלארוסית בולגרי קטלאנית הסיני (פשוט) סינית (מסורתית) קרואטית צ'כיה דני הולנדי אנגלית אסטוני פיליפיני פיני צרפתית
גליציה גאורגיה גרמני יווני קריאולית האיטית עברי הינדי הונגרי איסלנדי אינדונזי אירי איטלקי יפני קוריאני לטבי ליטאי מקדוניה מלאית מלטזית נורבגי
פרסי פולני פורטוגזי רומנית רוסי סרבית סלובקי סלובני ספרדי סוואהילית שבדי תאילנדי תורכי אוקראיני אורדו ויאטנמית וולשית יידיש בנגלית בוסנית
קבואנו אספרנטו גוג'ראטית האוסה המונג איגבו יָאוָנִי קנאדה לחמר לאו הלטינית מאורים מרתי מונגולי נפאלית פונג'בית סומליה טמילית טלוגו יורובה
זולו
Английский Французский Немецкий Итальянский Португальский Русский Испанский