Ce que je veux, c'est ce qui suit:
- Lorsque je branche mes écouteurs, je veux que le son soit non-muet et réglé sur un niveau de volume spécifique.
- Lorsque je débranche mon casque, je veux que le son soit coupé (ou réglé sur un niveau de volume spécifique).
Régler les niveaux de volume n’est pas un problème, mais j’ai besoin de le faire lorsque je débranche / branche le casque. Je cherche donc un moyen d’être averti de ces événements.
J'ai rapidement constaté /proc/asound/card0/codec#0
que les écouteurs étaient branchés ou non. J'ai donc essayé de le contrôler en utilisant inotifywait
et de modifier le niveau du volume en fonction des notifications modifiées . Malheureusement inotifywait
échoué car proc n'est pas un système de fichiers ordinaire.
Y a-t-il d'autres moyens de faire cela (peut-être via PulseAudio)?
Périphérique audio: Intel HDA , codec audio: Conexant CX20585 .
Pour résumer ce que j'ai essayé jusqu'à présent:
- Ear Candy: ça ne fonctionnait pas du tout sur mon système. Semble être un projet abandonné?
- Le code publié par Karl Bielefeldt pourrait fonctionner sur du matériel, mais pas sur le mien.
- L'idée de StephenPaulger échoue en raison de l'absence d'un canal 'Speaker'.
- Motivé par aking1012, je l'ai fait fonctionner en bidouillant dans le code du noyau (après avoir trouvé le code du codec sensible au jack), mais c'est une solution plutôt lourde.
Donc, je cherche toujours un moyen facile de faire cela.
la source
Réponses:
Pour définir le niveau de volume à partir de la console, utilisez la commande amixer. Par exemple:
Mettra votre niveau à 0%
Je ne sais pas comment changer cela quand vous branchez vos écouteurs ... mais peut-être que quelqu'un peut vous aider avec ça
la source
Au cours de l'UDS pour Oneiric, une session a été consacrée à la détection des prises. Voir le plan pour plus de détails. Il semble que cela fasse exactement ce que je recherche: différents niveaux de volume pour différents périphériques, mais pas sur tous les matériels:
Mise à jour du 11.10
Cela devrait maintenant fonctionner dans Oneiric - malheureusement, mon ThinkPad T510 semble être l’un des systèmes qui n’est actuellement pas pris en charge.
Un autre suivi de David Henningsson:
Plus ici .
Mise à jour du 12.04
Il fonctionne maintenant avec mon ThinkPad T510 (et de nombreux autres modèles) sous Ubuntu 12.04 (version de développement).
la source
Ear Candy a quelques fonctionnalités pour traiter l’insertion / le retrait du casque.
la source
Je ne sais pas combien d'expérience vous avez en matière de codage, mais vous avez dit:
inotifywait
je suppose que vous êtes au moins à l'aise avec les scripts shell. Le programme C suivant, basé sur cet article , devrait être capable de détecter le branchement ou le débranchement de votre casque, après quoi vous pouvez effectuer les actions de votre choix.Le programme prend un argument, qui devrait être un chemin d'accès au périphérique d'événements d'entrée pour vos écouteurs. C’est
/dev/input/event7
pour moi, mais vous devrez peut-être en essayer quelques-uns pour savoir lequel est sur votre système. Vous aurez besoin d'autorisations de lecture sur ce périphérique. Le programme imprimera le nom du périphérique, ainsi que le type, le code et la valeur du premier événement avant de quitter.la source
event.value
est effectivement commuté ... mais l'read
opération ne revient que lorsque la valeur change ... peut-être savez-vous comment faire en sorte qu'il ne bloque pas? Merci quand même!O_NONBLOCK
lorsque vous ouvrez le périphérique et vérifiez la valeur de retour du fichierread
. Si le résultat est négatif, la lecture aurait été bloquée ou une autre erreur serait survenue. Il existe d'autres moyens plus compliqués de procéder sans interrogation si vous intégrez ceci dans un programme plus vaste.Vérifiez dmesg et autres fichiers journaux. Le fait de brancher / débrancher déclenche probablement des messages particuliers.
Ensuite, vous pouvez utiliser un démon pour analyser ce fichier journal et détecter les événements. Je pense que vous savez quoi faire à partir de ce moment :)
la source
Si tu fais
le volume du haut-parleur sera coupé mais les écouteurs continueront à fonctionner. Débrancher le casque signifie pas de son. C'est presque ce que tu veux ...
Cependant ...
Si vous modifiez le contrôle du volume, le réglage du volume du haut-parleur sera à nouveau configuré. Ceci est dû au fait que pulseaudio essaie d’être intelligent avec le réglage des volumes (voir http://pulseaudio.org/wiki/PulseAudioStoleMyVolumes pour plus d’informations). Nous pouvons l’empêcher de jouer avec les volumes.
Ouvrez /etc/pulse/default.pa
et trouver la ligne
et le changer en
Redémarrez pulseaudio.
Désormais, si vous désactivez le volume du haut-parleur, le volume principal ne sera pas affecté. Les écouteurs fonctionneront donc, mais le haut-parleur restera silencieux.
la source
Vérifiez que le socket ACPID ne contient pas de modifications. Vous pouvez le faire à l’aide de Python, C ou un script shell ( code Python permettant de contrôler la lecture du plug-in des écouteurs et de faire une pause dans rhythmbox). Vérifiez les changements de tension ACPID pour détecter le plug-in et la prise de sortie pour écouteur. Un délai de quelques secondes peut être attendu cependant.
la source
Pulseaudio a un module livré par défaut qui est conçu pour atteindre exactement ceci:
http://pulseaudio.org/wiki/Modules#module-device-restore
la source
Je pense que vous pouvez obtenir ce dont vous avez besoin en utilisant ceci: https://bbs.archlinux.org/viewtopic.php?pid=1105458#p1105458
la source