Basculement auto Atmos/All-Ch Stereo sur Yamaha RX-A et RX-V

Les amplis Yamaha RX-V et RX-A récents disposent du Dolby Atmos et Dolby Audio 5.1 en plus des DTS et autres. C’est merveilleux, mais si vous écoutez des playlists où des morceaux stéréo se mêlent à des morceaux Atmos, vous passez régulièrement d’un son sur 2 enceintes à 5 enceintes ou plus.

Donc soit vous passez tout en All-Ch Stereo. A ce moment, les fichiers stéréo sont lus sur toutes les enceintes, surround y compris, avec une répartition droite/gauche. Les Atmos sont downmixés en stéréo également.

Soit vous vous amusez à changer manuellement vers le mode Straight pour profiter des Atmos en original, et vers All-Ch Stereo pour spatialiser les morceaux stéréo.

Il n’est pas possible de faire autrement car les Yamaha ne proposent pas un mode de basculement automatique et l’API ne fournit aucune info exploitable pour un traitement classique via HA (intégrations YNCA ou Musiccast).

En bidouillant, j’ai réussi à contourner cette limitation, qui évidemment est valable pour les vidéos, streaming, etc.

***

Le concept:

L’ampli produit deux fils d’info, dont un nous est utile, accessibles via son IP. Nous allons récupérer le fil qui nous intéresse, le filtrer et nous en servir pour alimenter un capteur que nous allons créer.

***

Ce qu’il vous faut:

  • L’intégration Scrape.
  • L’intégration YNCA ou Musiccast, qui contrôlent l’ampli.

***

Méthode:

  1. Dans Scrape, remplissez ces champs:
    Ecran 1: http://IP_DE_VOTRE_YAMAHA/YamahaExtendedControl/v1/main/getSignalInfo
    Les autres champs restent vides.
    Ecran 2:
    Nom: NOM DE VOTRE CAPTEUR (ici ce sera sensor.yamaha_rx_a2a_signal_audio)
    Sélectionner: body
    Méthode de valeur: {{ (value | from_json).audio.format | replace(‹ / ›, ‹ / ›) }}

  2. Créez une automatisation qui va rafraichir ce capteur quand un de vos lecteurs média change d’état ou les métadonnées d’un titre, ou que l’ampli change de source. J’ai

    alias: yamaha_rx_a2a_signal_audio_donnees_rafraichir
    description: Actualise le format audio lors d’un changement de contenu ou de source
    triggers:
    
    trigger: state
    entity_id: media_player.salon_2
    to: playing
    
    trigger: state
    entity_id: media_player.salon_2
    attribute: media_title
    
    trigger: state
    entity_id: media_player.rx_a2a_main
    attribute: source
    actions:
    
    delay:
    hours: 0
    minutes: 0
    seconds: 2
    milliseconds: 0
    
    action: homeassistant.update_entity
    target:
    entity_id: sensor.yamaha_rx_a2a_signal_audio
    
    delay:
    hours: 0
    minutes: 0
    seconds: 3
    milliseconds: 0
    
    action: homeassistant.update_entity
    target:
    entity_id: sensor.yamaha_rx_a2a_signal_audio
    mode: restart
    
  3. Si vous voulez, vous pouvez “habiller” le capteur créé en 1 et simplifier le traitement postérieur en créant un second capteur avec ce code dans votre configuration.yaml:

    - sensor: 
        - name: "yamaha_rx_a2a_audio_multi_ou_stereo"
          unique_id: yamaha_rx_a2a_audio_multi_ou_stereo
          state: >
            {% set format = states('sensor.yamaha_rx_a2a_signal_audio') %}
            {% if 'Atmos' in format or 'TrueHD' in format or 'Digital' in format or 'DTS' in format %}
              audio_multicanal
            {% else %}
              audio_stereo
            {% endif %}
          attributes:
            affichage: >
              {% set format = states('sensor.yamaha_rx_a2a_signal_audio') %}
              {% if 'Atmos' in format or 'TrueHD' in format or 'Digital' in format or 'DTS' in format %}
                Multicanal
              {% else %}
                Stéréo
              {% endif %}
          icon: >
            {% set format = states('sensor.yamaha_rx_a2a_signal_audio') %}
            {% if 'Atmos' in format or 'TrueHD' in format %}
              mdi:dolby
            {% elif 'Digital' in format or 'DTS' in format %}
              mdi:surround-sound
            {% else %}
              mdi:speaker-stereo
            {% endif %}
    
    1. Créez une automatisation sur base de ce dernier capteur (c’est plus simple car elle dépendra de l’état Stéréo ou Multicanal) pour actionner le DSP du Yamaha avec l’intégration YNCA ou Musiccast. (J’ai également créé un capteur binaire pour me laisser le choix d’un basculement automatique ou manuel - comme avant. Sa trace apparait dans le code ci-dessous)
      Par exemple:

      alias: salon_yamaha_rx_a2a_mode_audio_autoswitch
      description: Bascule le mode sonore et synchronise le bouton virtuel
      triggers:
      
      entity_id:
      
      sensor.yamaha_rx_a2a_audio_multi_ou_stereo
      trigger: state
      conditions:
      
      condition: device
      device_id: 6a58ffabbd759341eb7c8ac89b31f874
      domain: media_player
      entity_id: media_player.yamaha_rx_a2a_main
      type: is_on
      
      condition: state
      entity_id: input_boolean.yamaha_rx_a2a_mode_audio_autoswitch
      state:
      
      « on »
      actions:
      
      choose:
      
      conditions:
      
      condition: state
      entity_id: sensor.yamaha_rx_a2a_audio_multi_ou_stereo
      state:
      
      audio_multicanal
      sequence:
      
      action: media_player.select_sound_mode
      target:
      device_id: 6a58ffabbd759341eb7c8ac89b31f874
      data:
      sound_mode: Straight
      
      action: input_boolean.turn_on
      target:
      entity_id: input_boolean.yamaha_rx_a2a_soundmode_straight
      
      conditions:
      
      condition: state
      entity_id: sensor.yamaha_rx_a2a_audio_multi_ou_stereo
      state:
      
      audio_stereo
      sequence:
      
      action: media_player.select_sound_mode
      target:
      device_id: 6a58ffabbd759341eb7c8ac89b31f874
      data:
      sound_mode: All-Ch Stereo
      
      action: input_boolean.turn_off
      target:
      entity_id: input_boolean.yamaha_rx_a2a_soundmode_straight
      data: {}
      mode: restart
      
    2. Sur le Yamaha (pas l’intégration donc), j’ai également aligné “soniquement” le mode All-Ch Stereo sur le Straight.
      Réglages > Son > All-Channel Stereo:
      Niveau: <0>
      Balance av./arr.: +1
      Balance gche/dte: 0
      Monaural Mix: Désactivé

Bonjour,
Les automatisations sont mal formatées (pas d’indentation), peux-tu les remettre comme il faut ?