3 votes

Existe-t-il un moyen d'ajuster automatiquement les paramètres d'égalisation lorsque la sortie audio change ?

J'ai des paramètres d'égalisation particuliers que j'aime utiliser pour mes enceintes à la maison, mais lorsque j'utilise les enceintes de mon ordinateur portable ou un casque Bluetooth, je préfère avoir un égaliseur plat. Existe-t-il un moyen de spécifier différents réglages d'égalisation pour chaque sortie audio et de passer automatiquement au réglage correct lorsque la sortie audio est modifiée ?

1 votes

Cherchez-vous à utiliser Automator pour script votre souris - sélectionner la sortie are - sélectionner l'application (vraisemblablement iTunes) puis sélectionner l'EQ ? Tout cela devrait être réalisable avec les outils d'automatisation d'Apple.

0 votes

Merci, je me suis rendu compte que le réglage de l'égaliseur iTunes suffirait probablement à mes besoins, car il est simple à régler à partir d'AppleScript.

0 votes

Excellente question - et meilleure réponse encore - +1 partout.

1voto

shearnonsense Points 141

La lecture de la sortie audio actuelle donne "Built-in Output" pour les casques et les haut-parleurs internes, mais nous devons être en mesure de distinguer les casques des haut-parleurs. Pour ce faire, vous pouvez utiliser le code suivant cette réponse pour créer un programme qui vérifie si des écouteurs sont branchés ou si une autre sortie audio est utilisée :

#include <CoreAudio/CoreAudio.h>
#include <iostream>

void updateEQ() {
    AudioDeviceID defaultDevice = 0;
    UInt32 defaultSize = sizeof(AudioDeviceID);

    const AudioObjectPropertyAddress defaultAddr = {
        kAudioHardwarePropertyDefaultOutputDevice,
        kAudioObjectPropertyScopeGlobal,
        kAudioObjectPropertyElementMaster
    };

    AudioObjectGetPropertyData(kAudioObjectSystemObject, &defaultAddr, 0, NULL, &defaultSize, &defaultDevice);

    AudioObjectPropertyAddress property;
    property.mSelector = kAudioDevicePropertyDataSource;
    property.mScope = kAudioDevicePropertyScopeOutput;
    property.mElement = kAudioObjectPropertyElementMaster;

    UInt32 dataSourceId = 0;
    UInt32 dataSourceIdSize = sizeof(UInt32);

    AudioObjectGetPropertyData(defaultDevice, &property, 0, NULL, &dataSourceIdSize, &dataSourceId);

    if (dataSourceId == 'hdpn') {
        std::cout << "Changed to headphones" << std::endl;
        system("osascript <<path to speaker EQ script>>");
    } else {
        std::cout << "Changed to not headphones" << std::endl;
        system("osascript <<path to other EQ script>>");
    }
}

int main(int argc, const char * argv[])
{
    updateEQ();
    return 0;
}

Chaque script d'égalisation est alors un simple AppleScript script qui met à jour l'égalisation d'iTunes, par exemple l'égalisation des enceintes script est :

tell application "iTunes"
    set current EQ preset to (get first EQ preset whose name is "Speakers")
    set EQ enabled to true
end tell

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X