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 ?
Réponse
Trop de publicités?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
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.