diff --git a/roles/music/handlers/main.yaml b/roles/music/handlers/main.yaml index 71351d1..18e7f74 100644 --- a/roles/music/handlers/main.yaml +++ b/roles/music/handlers/main.yaml @@ -75,3 +75,12 @@ name: skipbutton state: restarted daemon_reload: true + +- name: restart ampswitch + ansible.builtin.systemd: + name: "ampswitch-{{ item }}" + state: restarted + daemon_reload: true + with_items: + - librespot + - mpd diff --git a/roles/music/tasks/ampswitch.yaml b/roles/music/tasks/ampswitch.yaml new file mode 100644 index 0000000..b145b63 --- /dev/null +++ b/roles/music/tasks/ampswitch.yaml @@ -0,0 +1,34 @@ +--- +- name: Install ampswitch depencies + apt: + name: + - libboost-dev + - libboost-dev + - nlohmann-json3-dev + +- name: Install ampswitch service file + template: + src: ampswitch.service + dest: /etc/systemd/system/ampswitch-{{ item.instance }}.service + owner: root + group: root + mode: 0755 + with_items: + - instance: mpd + pw_inputs: + - "Music Player Daemon:output_FL" + - "Music Player Daemon:output_FR" + - instance: librespot + pw_inputs: + - "librespot:out_0" + - "librespot:out_1" + notify: restart ampswitch + +- name: Enable ampswitch + ansible.builtin.systemd: + name: "ampswitch-{{ item }}" + state: started + enabled: true + with_items: + - librespot + - mpd diff --git a/roles/music/tasks/main.yaml b/roles/music/tasks/main.yaml index ced3697..c9a2c9f 100644 --- a/roles/music/tasks/main.yaml +++ b/roles/music/tasks/main.yaml @@ -40,3 +40,9 @@ file: soundboard.yaml tags: - music_soundboard + +- name: Ampswitch + ansible.builtin.import_tasks: + file: ampswitch.yaml + tags: + - music_ampswitch diff --git a/roles/music/templates/ampswitch.service b/roles/music/templates/ampswitch.service new file mode 100644 index 0000000..c374ca1 --- /dev/null +++ b/roles/music/templates/ampswitch.service @@ -0,0 +1,20 @@ +[Unit] +Description=Script hook for {{ item }} playback +After=network.target {{ item.instance }}.service +Requires={{ item.instance }}.service +StopPropagatedFrom={{ item.instance }}.service + +[Service] +Type=simple +Restart=always +RestartSec=10s +ExecStart=/usr/bin/pw-jack ampswitch --jack-name ampswitch-{{ item.instance }} --on-command /opt/on-{{ item.instance }}-start.sh --switch-time 10 --trigger-level 0.001 +ExecStartPost=/usr/bin/sleep 4 +{% for pw_input in item.pw_inputs %} +ExecStartPost=-/usr/bin/pw-link "{{ pw_input }}" ampswitch-{{ item.instance }}:Input +{% endfor %} +User=root +Environment="XDG_RUNTIME_DIR=/run/user/{{ music_audio_user_id }}" + +[Install] +WantedBy=multi-user.target