בית
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.55 MB
זמן: 0.022 c
14-22411
מדברו
2001-11-12 20:52
2002.01.08
מפתח תקליטור WinXP


14-22364
בז גמדים
2001-11-06 00:22
2002.01.08
אם לא תחסוך, אז זה ייעלם!


1-22178
אנסטסיה
2001-12-15 21:38
2002.01.08
זקוק למידע!


1-22222
יוג'ין זליקובסקי
2001-12-14 13:58
2002.01.08
תתקשר בחזרה


14-22374
ניקולס
2001-11-01 16:03
2002.01.08
איך מתכנתים נרגעים? ומתי?





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