Δημοσιεύτηκε: 03 Δεκ 2010, 07:30
από Epirotes
Επίλυση προβλημάτων ήχου σε εφαρμογές βασισμένες στην πλατφόρμα Allegro

Πηγή: http://opensnc.sourceforge.net/forum/vi ... php?id=100 Συγγραφέας: SzynaW Μετάφραση: epirotes

Ο παρών οδηγός περιγράφει πως να αναγκάσετε παιχνίδια που χρησιμοποιούν την πλατφόρμα Allegro να δουλέψουν με τον οδηγό ήχου PulseAudio:

1. Αρχικά πρέπει να τακτοποιήσουμε τις βασικές ρυθμίσεις του εξυπηρετητή ήχου PulseAudio. Αν χρησιμοποιείτε Ubuntu 8.10 ή νεότερη έκδοση μπορείτε να δοκιμάσετε να το κάνετε με την ακόλουθη εντολή:
Κώδικας: Επιλογή όλων
asoundconf set-pulseaudio

Αν η ρύθμιση είναι επιτυχής, επανεκκινήστε τον υπολογιστή και συνεχίστε στο βήμα 2. Στην αντίθετη περίπτωση (ή αν χρησιμοποιείται Debian / Ubuntu 8.04 και παλιότερες εκδόσεις), ανοίξετε το τερματικό και πληκτρολογείστε: (μπορείτε να αντικαταστήστε το gedit με οποιονδήποτε επεξεργαστή κειμένου της αρεσκείας):
Κώδικας: Επιλογή όλων
gedit .asoundrc

Πιθανότατα θα δείτε ένα άδειο έγγραφο. Αντιγράψτε σ' αυτό το παρακάτω κώδικα:
Κώδικας: Επιλογή όλων
pcm.pulse {
    type pulse
}

ctl.pulse {
    type pulse
}

pcm.!default {
    type pulse
}

ctl.!default {
    type pulse
}

pcm.!dmix {
    type pulse}

Τώρα σώστε το αρχείo στον προσωπικό σας φάκελο κι επανεκκινήστε τον υπολογιστή σας (Νομίζω ότι πρέπει να δουλεύει κι αν απλά αποσυνδεθείτε και επανασυνδεθείτε). Αν θέλετε να ελέγξετε αν δουλεύει, τρέξτε pavucontrol μαζί με μία εφαρμογή που χρησιμοποιεί ALSA για να παίξει ήχο, π.χ. το Flash 10. Εάν μπορείτε να αυξομειώνετε την ένταση του ήχου της εφαρμογής με το pavucontrol, τότε έχει ρυθμιστεί σωστά το Pulse Audio.
Περισσότερες πληροφορίες για την ρύθμιση του PulseAudio θα βρείτε εδώ:
http://www.pulseaudio.org/wiki/PerfectSetup

2. ALSA είναι ο προεγκατεστημένος οδηγός που χρησιμοποιούν εφαρμογές Allegro για την αναπαραγωγή μουσικής. Δυστυχώς το πρόσθετο alsa plug-in για Allegro δεν δουλεύει με το PulseAudio, ακόμα και με τις καλύτερες δυνατές ρυθμίσεις, τις οποίες κάναμε στο πρώτο βήμα πάνω (το wine έχει παρόμοιο πρόβλημα). Αλλά μην ανησυχείτε, δεν έγραψα το πρώτο βήμα άσκοπα, θα μας χρειαστεί αργότερα. Τώρα πρέπει να απενεργοποιήσουμε το ελαττωματικό πρόσθετο, οπότε ανοίξτε το τερματικό και πληκτρολογείστε (εντολή για Ubuntu):
Κώδικας: Επιλογή όλων
sudo gedit /usr/lib/allegro/4.4.1/modules.lst

Μπορείτε επίσης να χρησιμοποιήστε τον επεξεργαστή κειμένου της αρεσκείας σας. Εδώ υπάρχουν δύο τρόποι να επιτύχουμε τον σκοπό μας. Προσωπικά χρησιμοποιώ και συνιστώ την πρώτη από τις δύο μεθόδους, δηλ. την 2α.

2α. Θα πρέπει να μετατρέψουμε σε σχόλιο (κι έτσι να τα απενεργοποιήσουμε) όλα τα πρόσθετα, έτσι ώστε να αναγκάσουμε την Allegro να χρησιμοποιήσει για οδηγό ήχου το OSS. Το τροποποιημένο αρχείο θα πρέπει να είναι κάπως έτσι:
Κώδικας: Επιλογή όλων
alleg-vga.so
alleg-fbcon.so
alleg-svgalib.so
alleg-dga2.so
# alleg-esddigi.so
# alleg-artsdigi.so
alleg-sgialdigi.so
# alleg-alsadigi.so
alleg-alsamidi.so
# alleg-jackdigi.so

Τώρα μπορείτε να αποθηκεύσετε το αρχείο και να συνεχίσετε στο τρίτο βήμα.

2b. (Εναλλακτική μέθοδος, δεν συνιστάται)
Χρησιμοποιήστε αυτή την μέθοδο μόνο ως εναλλακτική λύση, όταν η προτεινόμενη πάνω δεν έχει αποτέλεσμα. Ο λόγος είναι ότι περιγράφει πως να χρησιμοποιήστε τον οδηγό ESD εφαρμογές Αllegro -κάτι που έχει ως αποτέλεσμα μεγάλες καθυστερήσεις στον ήχο.
Εδώ το αρχείο modules.lst file θα πρέπει να είναι όπως κάτω (alleg-esddigi.so δεν είναι σε σχόλιο):
Κώδικας: Επιλογή όλων
alleg-vga.so
alleg-fbcon.so
alleg-svgalib.so
alleg-dga2.so
alleg-esddigi.so
# alleg-artsdigi.so
alleg-sgialdigi.so
# alleg-alsadigi.so
alleg-alsamidi.so
# alleg-jackdigi.so

Τώρα θα πρέπει να εγκαταστήστε το κατάλληλο πακέτο. Για το Ubuntu αυτό είναι:
Κώδικας: Επιλογή όλων
sudo apt-get install liballegro4.2-plugin-esd

Κι αυτό είναι. Μ' αυτή την μέθοδο δεν χρειάζεται το τρίτο βήμα. Τώρα μπορείτε να τρέξτε το Open Sonic με τον ήχο να δουλεύει ενώ το PulseAudio θα τρέχει παράλληλα στο παρασκήνιο (θυμηθείτε ότι θα υπάρξουν καθυστερήσεις στον ήχο)

3. Σ' αυτό το βήμα θα μάθετε πως να μιξάρετε ήχο εφαρμογών OSS με το Pulse Audio (προηγουμένως εξαναγκάσαμε την Allegro να χρησιμοποιεί τον οδηγό OSS). Εξ ορισμού ο εξυπηρετητής ήχου προσφέρει την εφαρμογή "padsp", η οποία δουλεύει ικανοποιητικά με μια μεγάλη γκάμα εφαρμογών που χρησιμοποιούν OSS, αλλά όχι με την Allegro (ναι, ξέρω, μετά απ' όλα αυτά θα νομίζετε ότι τίποτα δεν δουλεύει μ' αυτήν την Αllegro ). Βέβαια, μπορείτε να δοκιμάσετε και οι ίδιοι, αλλά το αποτέλεσμα δεν θα σας ικανοποιήσει. Ευτυχώς υπάρχει άλλη μία εφαρμογή που δουλεύει με παρόμοιο τρόπο όπως η padsp κι αυτήν θα χρησιμοποιήσουμε εδώ. Αυτή είναι η Alsa-Oss κι έχει σχεδιαστεί για αναπαραγωγή ήχου σε εφαρμογές OSS με την χρήση Alsa. Ο οδηγός PulseAudio δουλεύει ικανοποιητικά μ' αυτήν (γι' αυτό τον λόγο χρειαζόταν το πρώτο βήμα). Στο Ubuntu πληκτρολογείστε την εντολή:
Κώδικας: Επιλογή όλων
sudo apt-get install alsa-oss

Τώρα το μόνο πράγμα που χρειάζεται να κάνετε είναι να θυμάστε ότι πρέπει να τρέξετε το Open Sonic (κι άλλες εφαρμογές allegro) με aoss. Για παράδειγμα:
aoss opensonic
Εάν έχετε μια συντόμευση στο μενού μπορείτε να την τροποποιήστε, ώστε να μπορείτε να την τρέξτε ποιο εύκολα στο μέλλον.
Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Μη εμπορική χρήση-Παρόμοια διανομή 3.0 Ελλάδα