Ses çıkışı değiştiğinde EQ ayarlarını otomatik olarak ayarlamanın bir yolu var mı?


3

Hoparlörlerim için evde kullanmayı sevdiğim belirli EQ ayarlarım var, ancak dizüstü bilgisayar hoparlörlerimi veya Bluetooth kulaklıkları kullanırken düz bir EQ almayı tercih ediyorum. Her ses çıkışı için farklı EQ ayarları belirlemenin ve ses çıkışı değiştirildiğinde otomatik olarak doğru ayara geçmenin bir yolu var mı?


1
Farenizi yazmak için Automator kullanmak mı istiyorsunuz - çıktısını seçin - uygulamayı seçin (muhtemelen iTunes) ve ardından EQ'yu seçin? Bunların hepsi Apple'ın otomasyon araçlarıyla yapılabilir.
bmike

Teşekkürler, yalnızca iTunes EQ ayarının muhtemelen ihtiyaçlarım için yeterli olacağını fark ettim, bu AppleScript'ten ayarlanması kolaydır.
shearnonsense

Büyük soru - ve hatta daha iyi cevap - her yerde +1
bmike

Yanıtlar:


1

Geçerli ses çıkışını okumak hem kulaklık hem de dahili hoparlörler için "Dahili Çıkış" verir, ancak kulaklıklar ve hoparlörler arasında söyleyebilmemiz gerekir. Bunu yapmak için, kodu bu cevap Kulaklıkların takılı olup olmadığını veya başka bir ses çıkışının kullanımda olup olmadığını kontrol eden bir program oluşturmak için:

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

Her EQ betiği, iTunes'un EQ'sini güncelleyen basit bir AppleScript betiğidir, örneğin, hoparlör EQ betiği şöyledir:

tell application "iTunes"
    set current EQ preset to (get first EQ preset whose name is "Speakers")
    set EQ enabled to true
end tell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.