Esiste un modo per regolare automaticamente le impostazioni EQ quando l'uscita audio cambia?

3

Ho delle impostazioni EQ particolari che mi piacciono usare per i miei altoparlanti a casa, tuttavia quando uso i miei altoparlanti per laptop o le cuffie Bluetooth preferisco avere un EQ piatto. C'è un modo per specificare diverse impostazioni EQ per ogni uscita audio e passare automaticamente all'impostazione corretta quando l'uscita audio viene cambiata?

    
posta shearnonsense 25.03.2018 - 17:04
fonte

1 risposta

1

La lettura dell'uscita audio corrente fornisce "Uscita integrata" per cuffie e altoparlanti interni, tuttavia è necessario essere in grado di distinguere tra cuffie e altoparlanti. Per fare ciò, puoi utilizzare il codice da questa risposta per creare un programma che controlla se le cuffie sono collegate o un'altra l'uscita audio è in uso:

#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;
}

Ogni script EQ è quindi un semplice script AppleScript che aggiorna l'EQ di iTunes, ad esempio lo script EQ dell'altoparlante è:

tell application "iTunes"
    set current EQ preset to (get first EQ preset whose name is "Speakers")
    set EQ enabled to true
end tell
    
risposta data 26.03.2018 - 00:42
fonte

Leggi altre domande sui tag