לינוקס, ו-Pulse Audio

logo2את הדברים הבאים אני לא הולך לכתוב מתוך שמחה, אלא מתוך כאב. חברים שמכירים אותי יודעים שאני חובב לינוקס מושבע עוד מ-94, אך לפעמים דברים צריכים להיאמר.

אחת מנקודות התורפה בלינוקס היתה בעיית הסאונד. אני לא מדבר על סאונד מקצועי (שהיום מקבלת בהחלט התייחסות בדמות תוכנות שונות ותוספות בליבת הקרנל ב-Linux), אלא יותר על שמיעת מוסיקה ודברים אחרים הקשורים לאודיו. דרייברים צצו יחסית תוך זמן לא כל כך ארוך (תלוי באיזה כרטיס מדובר) עבור לינוקס, כך שהיתה תמיכה בסאונד, אבל הבעיה המהותית בסאונד היתה בעיה אחרת: אם תוכנה אחת מנגנת מוסיקה, תוכנה שניה לא יכולה להשמיע שום צליל, כך שאם לדוגמא אתה שומע לך את הלהקה האהובה עליך, לא תוכל לקבל צליל התראה על הודעה שקיבלת דרך ה-IM החביב עליך. מה שקורה היה שהתוכנה הראשונה “תופסת” את הציוד, והתוכנה השניה לא היתה מקבלת כלום.

המגבלה הזו היתה ידועה וצצו לה פתרונות. אחד הראשונים היה ESD שנכתב עבור הסביבה הגרפית Enlightment (ולא כמו שרבים חושבים – עבור GNOME). שהיה מתחרה ב-NAS שפותח בשנות ה-90 אחרי זה הגיע aRts שהיה כחלק מ- KDE וכן ALSA שהוא פרוייקט שהחליף את הכל, החל מדרייברים ועד ספריות להשמעת צליל ולמיקסים, ולאחר מכן הגיע JACK שמיועד עבור תוכנות מקצועיות וכלי סאונד מקצועיים והכלי האחרון בסידרה הוא כמובן PulseAudio.

כמה ספרנו עד עכשיו? 5 תוכנות, שלמעט האחרון, לכולם יש 3 בעיות מהותיות:

  1. הם עובדים עם חלק מהתוכנות, ולא עובדים עם חלק אחר מהתוכנות (אלא אם “עוטפים” את התוכנה הסוררת עם כל מיני Wrappers למיניהם, בין אם באמצעות תוכנת עטיפה או סקריפט)
  2. הם מסובכים לתפארת להגדרות ע”י האדם הפשוט
  3. הם נותנים פתרון השווה להרוג זבוב עם תותח.

מכיוון שגם החבר’ה ב-Ubuntu וגם החבר’ה ב-Fedora החליטו לאמץ את PulseAudio כשרת סאונד, הרי ש-PulseAudio מעכשיו יותקן כברירת מחדל, וגם PulseAudio סובל מהמחלה הכי ידועה בלינוקס: נכתב ע”י מפתחים שאין להם שום הבנה במשתמשי קצה. להגדיר את PulseAudio, זו חתיכת עבודה, ושוב יש לנו כאן את סעיף 3 מלמעלה: פתרון שהוא OverKill לבעיה האמיתית: אנשים רוצים לשמוע צליל ממס’ תוכנות במקביל ע”י ציוד האודיו שלהם, לא יותר מזה, ו-PulseAudio הוא הרבה הרבה יותר מזה: הוא יאפשר לך “לשדר” את הצליל למכונה אחרת ולשמוע אותו שם, אתה יכול לשנות את הסימפול לאיכות יותר גבוהה או יותר נמוכה, ועוד ימבה פיצ’רים שמתאימים לנישה קטנה של משתמשים מקצועיים, לא מעבר לכך.

רבים מאיתנו, אנשי הלינוקס, אוהבים לצחוק על השכנים מרדמונד, שזה נחמד, אבל מצד שני, בקטע הזה דווקא לקהילת המפתחים בלינוקס יש מה ללמוד מהם. ב-Windows יש לך מס’ דוגמאות לנגן צליל, הנה דוגמא ישנה ב-++C. אם אתה מפתח משחק, יש לך את DirectX שדואג עבורך לכל העבודה של השמעת הצליל דרך ציוד האודיו של המשתמש. אם אתה כותב דרייבר עבור ציוד אודיו חדש, כל מה שעליך לעשות הוא לכתוב דרייבר שיעמוד בטסטים מסויימים ובסצנות מסויימות. התוצאה הסופית? למשתמש הכל שקוף, יש לו אייקון של רמקול למטה מימין וכשהוא לוחץ עליו לחיצה כפולה, הוא יכול לכוון את עוצמת הצליל לערוצים השונים. Windows כבר ידאג עבורו לכך שאם מס’ תוכנות ינגנו צליל במקביל, הוא ישמע את כולם, בין אם זה משחק במסך מלא בזמן שהוא מקבל הודעה מה-IM שלו ובין אם זה ניגון סרט ב-Flash מאתר Youtube ותוך כדי הוא ישמע התראת קבלת דואר לדוגמא.

גם במק בטוחני שיש פתרון שקוף לחלוטין לעניין, ומעבודה קצרה שיצא לי לעבוד על מק (אין לי מק), לא ראיתי שום בעיות בנידון.

בלינוקס לעומת זאת, ראיתי גם ראיתי את הבעיות ש-PulseAudio עושה על מכונות חלשות ובמיוחד בסביבות וירטואליזציה כמו VMWare כשכל חטאי הוא היה לבדוק מס’ קבצי MP3. עם PulseAudio כל מה ששמעתי במגוון תוכנות (בין אם זה xine, mplayer, vlc) היה ערבול מרעיש ותו לא. לאחר שהעפתי לכל הרוחות את PulseAudio והשתמשתי ב-ALSA, פתאום המוסיקה נשמעה מצוין במכונה הוירטואלית ובמכונות החלשות.

“שרת” סאונד שאמור לעשות מיקס מאודיו שיוצא ממגוון אפליקציות ומוציא אותו דרך כרטיס הקול המותקן במחשב, אמור להיות שקוף לחלוטין למשתמש, ללא צורך בשום הגדרות. הוא לא אמור להיראות כך, במיוחד אם מנסים לקרב אנשים חדשים ללינוקס. מה אמור לעשות משתמש חדש אם אפליקציה שהוא התקין לא משמיעה צליל ותוכנה אחרת כן משמיעה? להתחיל לערוך קבצי קונפיגורציה ולקרוא כל מיני מסמכים ומושגים מקצועיים בשביל להתחיל להבין מה לשנות? הרי נסיונו ב-Windows הוא פשוט: אם הוא התקין דרייברים לכרטיס הקול שלו וה-Windows שלו מסוגל להשמיע צליל login, אז הוא ישמע בכל התוכנות את הצלילים, גם אם הם פועלים יחד בלי שום הגדרות מיוחדות, וזה מה שבדיוק צריך ב-Linux: פתרון פשוט, ללא כל שאר הפונקציות להעברות צלילים למחשבים אחרים, לסימפול שונה, ל-Pre Amp ושאר מרעין בישין!

ואגב, אם מישהו חושב שהפתרון הוא “הקוד פתוח, שנה אותו בעצמך”, הרי הוא לא יותר מאשר זורה חול. כן, הקוד פתוח, אבל אז אתה צריך כמה שעות טובות להבין בקוד מי נגד מי, כמה, למה ואיך, ולעקוב אחרי הקוד, להסתכל במסמוך (שחסר חלקים לעיתים), להבין מושגים מקצועיים שלא קשורים לתכנות, ואם אותו אדם לא יתייאש ויתמזל מזלו והוא ימצא את אחד המפתחים של PulseAudio ב-IRC, אולי, אולי תהיה לו אפשרות לעשות משהו בנידון. שוב, אולי.

לסיכום: אם רוצים לחדור לשוק משתמשי ה-Windows, חייבים פתרונות יותר קלים להגדרות, עדיף שיהיו שקופות למשתמש ואם הוא בכל זאת צריך לעשות הגדרות, עדיף שיהיה מסך הגדרות קליל שיעשה את הדברים כמה שיותר אוטומטיים מאשר לצפות מהמשתמש שידע מינוחים מקצועיים והגדרות מקצועיות. אגב, למעוניינים, הנה כמה “קל” להתקין את PulseAudio מכלום במחשב שלך, אם ההפצה שאתה משתמש ישנה או שאין לה חבילות התקנה מוגדרות מראש.

Comments

comments

5 תגובות בנושא “לינוקס, ו-Pulse Audio

  1. מה עם ALSA ? שחכת להזכיר אותה. הרעיון של ALSA שעדיין נמצא בשימוש נרחב (כולל על ידי), הוא שיש לך מקור אחד שמקבל את כל האודיו והוא כותב ל device הסיריאלי ואז יש לך תחושה כאילו הוא עובד בצורה מקבילית.
    PulseAudio עדיין לא מספיק בוגר בשביל משתמשים כבדים, אז מן הסתם למשתמשים אשר לא אוהבים קרביים זה עוד יותר נורא. אני חושב שככול שהוא יתגבר יותר, ככה הכלים בשבילו ישתפרו ויהיו יותר ידדידותיים.

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

  2. אופס, אתה הגבת בדיוק שפרסמתי את החלק בלי ALSA. עכשיו זה בפנים.
    ב-Windows למה שאתה מתכוון זה היה MCI, וכן, היום עובדים הרבה יותר עם DirectX, כולל ה-OpenAL שנותן כל מיני אפשרות לנתב צלילים לכל מיני מקומות, אבל הוא מתממשק עם DirectX ומוציא דרך DirectSound את הצלילים ישירות לציוד.

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

  4. אנחנו עובדים עם מספר משתמשים בבית על מחשב מסויים (מערכת אובונטו) שמשתמש ב PULSE-AUDIO
    לאחר מספר מעברים בין המשתמשים…כל שכבת ניהול הצליל מפסיקה לתפקד. דיווחתי על כך.
    וענו לי שאין (עדיין) תמיכה במספר חשבונות הפועלים בו זמנית על אותו מחשב בתשתית PA.
    נראה לי די בעייתי עבור מחשבים בהם משתמשים יותר משתמש אחד. (בו זמנית) כלומר, LOGGEDIN
    הסרתי את שרת ה PA וחזרתי ל ALSA…הכל עובד באופן תקין. 🙂

    די נחמד לשנות את עוצמת הקול של כל יישום ממערבל הצליל
    וגם די נחמד לשלוח צליל ברשת למחשב אחר.
    (אבל אילו אינם שימושים יום יומיים אצלנו בבית)
    העדפנו מחשב מרובה משתמשים שהצליל עובד באופן תקין במעבר ביניהם.

סגור לתגובות.