
הטקסט המלא של הדקות הראשונות בהרצאה «Audio - waveOutGetDevCaps» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב, היום אנחנו נלמד, בוא נראה שאנחנו מקליטים, היום אנחנו נלמד קצת על אודיו. אז בואו נפתח את הוויז'ואל סטודיו, נגדיל אותו ונסגור את הסטארט פייג' ופייל ניו, זה יהיה בשפת C, פרוג'קט, בואו נצמצם כדי שנראה איך מגיעים לשפת C, אז יש פה Other Languages,
אני פותח את זה, יש בו visual c++ ויש בו win32 ואנחנו נתחיל עם הקונסול אפליקיישן ואנחנו נקרא לזה אודיו 01 או אודיו סמפל אודיו 01 זה יהיה על שולחן העבודה ונגיד לו אוקיי ואז יש לנו את המסך הזה נלך לאפליקיישן settings קונסול precompile נראה בסדר גמור נגיד לו finish יפה אז הוא בנה לנו את הדבר הזה הדבר הראשון שאני ארצה לעשות זה לנגן.
אני דווקא אתחיל מלנגן, כי כשאני מנגן אז אני מיד שומע את התוצאה. אז איך מנגנים? אז על מנת לנגן יש סדרה של פונקציות, בואו נראה אם יש לנו אותה זמינה.
זה נקרא wave, control רווח, הוא לא מזהה את wave, בסדר? אז צריך להוסיף לו include. נלך ל-include std standard application framework, נגיד לו open document וכאן הוא אומר reference additional headers your program requires here בואו ניקח טקסט של השורה הזו, נעשה לזה קופי וננסה להכניע מניפו ופייסט מה שאנחנו צריכים זה הדבר הכללי ביותר, את
windows.h יפה נחזור לכאן וננסה שוב את מזלנו קונטרול רווח הוא עדיין לא מזהה בוא נעשה קונטרול שיפט אס וקונטרול רווח ויפה משום מה קונטרול שיפט אס עזר יפה אז לא יודע לא יודע אם זה ה-Wave Out שאנחנו רוצים אבל יש פה Wave Out כל מיני Wave Out ווייב אאוט קלירוט טוב יותר ווייב אאוט קלוז
בוא נראה אם יש לו ווייב אאוט אופן ווייב אאוט ווייב אאוט אופן מצוין אני רואה שזה עם w קטנה ראשונה יפה אז ווייב אאוט אופן פותח לי ערוץ התקשרות לחומרה לחומרה או לחומרות לא לחומרה לאחת מהחומרות שמנגנות אודיו זאת אומרת אם יש לי כמה כרטיסי קול במחשב אז אני יכול לפתוח ערוץ התקשרות לאחד מהם אבל אנחנו צריכים
קודם כל או רצוי קודם כל לראות את רשימת הכרטיסים שמותקנים או בואו נעשה קליק על זה ו-F1 בואו קצת נקבל איזושהי תמונה טיפה יותר כללית נהיה אחת יפה אז הנה wave out הנה sync חשוב מאוד כמובן לעבוד עם ה-MSDN המותקן לא האינטרנטי, כי אז מקבלים את ה-Table of Contents ופונקציה
Sync שהיא מאוד חשובה. יפה, אז הנה כל פונקציות ה... הנה, Wave-In, Wave-In אלה פונקציות להקלטה ו-Wave-Out אלה פונקציות לניגון.
כל אלה פונקציות של מערכת ההפעלה. כמה שידוע לי, זה הנמוך ביותר. זאת אומרת, אם נעשה רגע חטא שמאלה וחטא שמאלה, יש מולטימדיה רפרנס, מולטימדיה פאנקשן, יש גם ACM. אני חושב שגם ACM הם די Low Level, זה Audio Compression Manager, בעזרת ACM דוחסים וגם פורסים ויש גם AVI. אני חושב ש-AVI הם שכבה אחת מעל ה-Wave, Wave זו השכבה הנמוכה
ביותר ויש גם את-CAP אבל-CAP, אפסי קיפיביליטיז אולי אנחנו נצטרך גם אותה דרו זה קשור למסך זה קשור לוידאו אם כבר אין את לא מעניין יש גם את האיי שגם הם שכבה מעל נראה לי מעל מה שאנחנו נלמד ג'וי זה קשור לג'וייסטיק זה לא מעניין mci גם כן נראה לי שכבה מעלינו מידי אני חושב שהם באיזשהם כן נראה לי שזה api כל אלה APIים, פונקציות API שמקבילות קצת אלינו, לא כמו בטוח, יש גם את מולטימדיה
input-output, בקיצור יש כל מיני וכל מיני, אנחנו נעבוד עם wave-in, wave-out, עד כמה שידוע לי הן הכי נמוכות, הכי פשוטות, הכי טובות, הכי יציבות. אז wave-in ו-wave-out ויפה מאוד.
אוקיי, אז לגבי wave-out, בואי נראה מה יש לנו ב-wave-out. באות קלוס, סוגר לי את הערוץ תקשורת. Get device capabilities, זה נראה לי מעניין.
בוא נראה. If the function retrieves the capabilities of a given way from all the output device. מחוויר לי את היכולת.
אני חושב שמה שהם ממליצים, תכף אנחנו נקרא אולי, מה שהם ממליצים לעשות זה כשהתוכנית שלכם מתחילה לרוץ, אתם הרי רוצים לדעת מי הם, איזה דיווייסים, אתם רוצים לדעת איזה חומרות, איזה כרטיסי חומרה, איזה כרטיסי קול מותקנים לכם במחשב.
אז מאיפה מקבלים את זה? אני חושב שמה שהם אומרים זה תעשה לולה R, תרוץ בלולה R וכל פעם תזין לו פה, לדיווייס הידי, תזין לו 0, 1, 2, 3 ואתה כל פעם תקבל כאן דיווייס אחר.
עד שלא תקבל פה כלום או משהו כזה אנחנו עוד נחזור לזה בהזדמנות אבל אני כבר מתחיל לחשוד שאנחנו נצטרך דבר ראשון להשתמש בפונקציה הזו כדי לקבל את רשימת הדיווייסים ErrorText כמובן תחזיר לנו טקסט במיילל על אירור שנקבל MMResult זה איזשהו מספר נזין אותו ל-ErrorText והיא תיתן לנו את זה כמיילל
getid retrieves the device at end-of-life and give it at end this function is supported for backward compatibility no applications can pass the handle. אוקיי בקיצור זה לא מתאים לנו זה דבר ישן get num devs או יפה מאוד זו הפונקציה שמחזירה לנו כמה devices יש אז דבר ראשון נקרא לזאת כדי לקבל כמה devices יש function retrieves the number of waveforms on your output devices present
in the system אנחנו נקבל את המספר הזה ואז נדע כמה איתרציות צריך לעשות ש-Get Device Capabilities תחזיר לנו בין הדיווייסים.
Get Pitch מחזירה Pitch, Get Playback Rate מחזירה זה, Get Position, Get Volume, Message, מה עושה ה-Message? Send the Message.
טוב, זה לדיווייז רייבר עצמו, זה לא מעניין אותנו, בהזדמנות נלמד על דיווייז רייברים. אופן אופן זה כמובן אחרי שאנחנו אז כאילו אז דבר ראשון אנחנו נעשה get number of devices נקבל את המספר ואז מרוץ כמספר הדיווייסים היא תרצה ונקבל כל פעם דיווייס אחר ואת ה-capabilities שלו ואז נציג למשתמש את הדיווייסים ונגיד
למשתמש בוא תבחן עם איזה דיווייס אתה רוצה לעבוד ואחרי שהוא יבחן עם איזה דיווייס אתה רוצה לעבוד אז נגיד נעשה אופן אופן הוא ממש פותח את ערוץ התקשורת עם הדיווייס עצמו ואז אפשר להגיד לו, תמנגן.
pause עוצרת, prepare header, לפני שאנחנו נוכל לנגן, אנחנו נצטרך להכין דבר שנקרא header. Outproc function is the callback function used, אני חושב שזה, טוב, עוד נחזור לזה, עוד נחזור לפונקציה הזו, זו לא פונקציה, אנחנו נצטרך לממש את הפונקציה הזו.
ה-device יפעיל את הפונקציה הזו שלנו בכל פעם שיש לו לתת לנו, באפר מוכן אם, אה לא לא לא לא לא, בכל פעם שהוא ירצה שניתן לו, בוא נראה.
The callback function used with the way forward, the way forward is a placeholder. זה לא פונקציה, אלא אנחנו צריכים לממש את הפונקציה הזו. For the application-divide function name, זה לא אשר, אנחנו יכולים לקרוא לזה, אנחנו יכולים לקרוא לזה מה שאנחנו רוצים. The address of this function can be specified באופן, באופן אנחנו נותנים לו את הפונקציה ואז מה הוא עושה?
מה עושה בעצם הפונקציה הזו? רימארט אפליגיישן שוד נוט קול אלי סיסטן דיפיין פונקצ'ינס פרום אינסייד דה קולבק כן, אבל מה הפונקציה הזו עושה? טוב, עוד נחזור לזה.
ריסט עושה ריסט, ריסטארט עושה ריסטארט, סט פיץ', סט פליי בק רייט, ככה משנים את המהירות אני מניח, סט ווליום, הווליום, unprepared header, זה אחרי שהוא מנגן אותו, ו-write.
right sends a data block to the given device. זו בעצם הפונקציה המרכזית. אנחנו בעצם לוקחים header שמכיל, אני חושב, את ה-call, את הביטים, את הבתים של ה-call, של איזשהו משך של זמן, אנחנו מעבירים את זה לדיווייס, ואז הוא מנגן את זה.
וכשהוא מסיים לנגן את זה, אז הוא מפעיל לנו את ה-callback, את ה-wavehardproc, ואומר לנו סיימתי, נגן את זה. ואז אני יודע שהבאפר חופשי ואני יכול למחזר אותו.
מראש אני אצטרך להכין כמה באפרים כדי שלא יהיה לי ג'יטר בניגון. אם נסתכל לרגע על האקדמיה, כלים הגדרות, אנחנו יכולים ללמוד הרבה מאוד לגבי הניגון וגם לגבי ההקלטה.
אז מה שאנחנו רואים פה זה אנחנו מראש מכינים חמישה באפרים. כשאתם מקשיבים כרגע, אנחנו באקדמיה תמיד נותנים, אנחנו תמיד עושים רייט לחמש באפרים מראש. למה? כי זה שאם המחשב פתאום נהיה עמוס והאפליקציה לא מקבלת זמן הרצה, האקדמיה לא מקבלת זמן הרצה, אז שלדהייגר כבר יהיו חמש באפרים מראש. אני חושב שבאפר אצלנו,
אני כבר לא זוכר את המספרים אבל נראה לי שזה שנייה אחת. זה חמש שניות מראש כבר יש לה דרייבר, כבר יש ממש לה device, לחומרה אנחנו כבר נותנים מראש חמש שניות מראש. אז אם במקרה האקדמיה נתקעת לכם משום מה כי ה-CPU גבוה, אז זה לא ישפיע, אתם לא תשמעו פתאום נתק.
בהקלטה זה הרבה יותר חשוב, בהקלטה אנחנו מכינים 200 שניות מראש, כי אני לא רוצה שפתאום יהיה לי איזשהו נתק, אז זה המצב.
ופה אנחנו רואים את רשימת ה-Devices, אצלי במחשב יש רק Device אחד, תסתכלו אצלכם, יש לכם יותר Devices, אלה הדיווייסים של ההקלטה יפה מאוד אם היו יותר אז היינו מרים יותר יפה יפה מאוד טוב אז נראה לי עוד לפני שנתחיל בואו רגע בואו נצמצם שנייה נעשה חצי שמאלה וחצי שמאלה זה הרפרנס הרפרנס זה בעצם רשימה של פונקציות Windows מולטימדיה MCI פה מסביר על MCI MCI זה מולטימדיה אודיו בוא
נראה מולטימדיה אודיו בוא נראה מולטימדיה input, בוא נראה מולטימדיה אודיו, אודיו Compression, אודיו ויקסר, מוזיקל, ווי פורם אודיו About, ווי פורם רפרנס, ווי פורם פונקצ'ן הנה כל הווייב אין, והנה הווייב אאוט, יפה, זאת אומרת כאן הוא מדבר אם אתם רוצים פשוט לקרוא במקום ללמוד
את ההרצאות שלי אז אני חושב שאתם יכולים פשוט לקרוא את זה There are several methods ו-simple audio ו...
זה לא עוזר. waveform audio interface איפה לומדים את זה? waveform audio using playing wave play sound, זה לא עוזר לנו. טוב, איפשהו פה יש איזשהו הסבר כזה יחסית נחמד, אבל אנחנו פשוט נצא לדרך.
טוב, הדבר השני שאנחנו רוצים זה לקבל את רשימת ה-Devices. אז בואו נקבל את רשימת ה-Devices. אז WaveOut, מה זה היה? WaveOut get או num?
WaveOut num, לא. WaveOut משהו.