오디오 출력이 변경 될 때 EQ 설정을 자동으로 조정하는 방법이 있습니까?


3

집에서 스피커에 사용하려는 특정 EQ 설정이 있지만 랩톱 스피커 또는 Bluetooth 헤드폰을 사용하는 경우 플랫 EQ를 선호합니다. 각 오디오 출력에 대해 서로 다른 EQ 설정을 지정하고 오디오 출력이 변경 될 때 올바른 설정으로 자동 전환하는 방법이 있습니까?


1
Automator를 사용하여 마우스를 스크립팅하고 출력을 선택하고 응용 프로그램 (아마도 iTunes)을 선택한 다음 EQ를 선택 하시겠습니까? 애플의 자동화 툴로 모든 것이 가능해야한다.
bmike

고마워, 나는 iTunes EQ 만 조정하면 내 요구에 충분할 것임을 깨달았습니다 .AppleScript로 조정하는 것이 간단합니다.
shearnonsense

좋은 질문-그리고 더 나은 답변-+1 모든 주위에
bmike

답변:


1

현재 오디오 출력을 읽으면 헤드폰과 내장 스피커 모두에 "내장 출력"이 제공되지만 헤드폰과 스피커간에 정보를 제공 할 수 있어야합니다. 이를 위해이 답변의 코드 를 사용하여 헤드폰이 연결되어 있는지 또는 다른 오디오 출력이 사용 중인지 확인하는 프로그램을 만들 수 있습니다.

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

각 EQ 스크립트는 iTunes의 EQ를 업데이트하는 간단한 AppleScript 스크립트입니다. 예를 들어 스피커 EQ 스크립트는 다음과 같습니다.

tell application "iTunes"
    set current EQ preset to (get first EQ preset whose name is "Speakers")
    set EQ enabled to true
end tell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.