윈도우 10 소리 설정에서 음악 프로그램만 블루투스 스피커 출력으로 설정해놓았더니 컴퓨터 부팅 시 블루투스 스피커 출력으로 적용하려면 한번 기본 스피커를 블루투스로 바꿨다가 다시 되돌리는 수고를 해야해서 그 과정을 작업스케줄러로 자동화한 이야기 (길다)
발단
윈도우 10에서 소리 설정 > 앱 볼륨 및 장치 기본 설정에 들어가면 각 앱 별로 출력 장치를 설정할 수 있다.
기본 출력은 이어폰, 음악 프로그램인 AIMP는 블루투스 스피커로 출력이 지정되어있다. 사유는 블루투스 스피커로 일상 BGM을 켜 놓고 필요한 사운드는 이어폰 or 노트북스피커로 듣기 때문이다. 그런데 이 경우, 컴퓨터를 부팅하고 시작 프로그램에 등록된 음악 프로그램이 실행됐을 때 (위 캡쳐대로 블루투스 스피커로 설정되어 있음에도 불구하고) 바로 블루투스 스피커로 출력되지 않는 문제가 있다.
이 문제를 해결하려면 기본 재생 디바이스를 한번 블루투스 스피커로 바꿔줬다가, 다시 원래 재생인 이어폰 or 노트북스피커로 바꿔주면 된다. 이렇게 하면 제대로 지정 앱이 블루투스 스피커로 출력이 된다.
🔍이 과정을 자동화할 수 없을까?
검색을 통해 bat파일을 만들어서 작업스케줄러에 등록하면 된다는 정보를 얻었다.
1. NirCmd 설치
이 과정에서 필요한 것이 NirCmd인데, 공식 홈페이지의 설명에 따르면 아래와 같다.
NirCmd는 사용자 인터페이스를 표시하지 않고 몇 가지 유용한 작업을 수행할 수 있는 작은 명령줄 유틸리티입니다. 간단한 명령줄 옵션과 함께 NirCmd를 실행하면 다음과 같은 작업을 수행할 수 있습니다. 레지스트리에 값과 키를 기록 및 삭제, 값을 INI 파일에 기록, 인터넷 계정으로 전화를 걸거나 VPN 네트워크에 연결, 윈도우를 다시 시작하거나 컴퓨터 종료, 파일에 대한 바로 가기 생성, 파일의 생성/수정 날짜를 변경, 디스플레이 설정 변경, 모니터 끄기, CD-ROM 드라이브 열기 등등..
원래 스크립트로 복잡하게 짜야하는 것을 간단한 명령어로 사용할 수 있게 한 유틸리티이다. 다운로드는 공식 사이트의 맨 하단에서 가능하다. https://www.nirsoft.net/utils/nircmd.html
다운받은 파일 압축 풀고 우클릭 > 관리자 권한으로 실행 > 사용자 계정 컨트롤 허용 > Copy To Window Directory > Yes 를 선택하면 된다. (상세한 과정은 https://blog.bicheon.dev/4 이곳 참조)
2. 재생 장치 이름 확인
작업표시줄의 스피커모양 우클릭 > 소리 > 위의 탭에서 재생을 누르면 아래와 같은 화면이 뜬다. 여기에서 확인해야할 것은 각 장치의 이름이다. 각 재생 장치는 각각의 속성에서 이름을 바꿔줄 수도 있다. 나는 만일을 위해 일단 필요한 재생 장치는 영어 이름으로 지정했다.
3. BAT파일 만들기
Batch파일은 일괄처리를 위한 언어같은 느낌이라고 생각하면 될 것 같다. 반복되는 간단한 작업을 작업 스케줄러에 등록하기 위해 자주 활용된다고 한다.
메모장을 열어 아래와 같은 명령어를 작성한 뒤 파일명.bat 로 저장한다. 파일명은 혹시 모르니 영어를 추천한다. 그리고, 파일 형식을 '모든 파일'로 지정해야 내가 원하는 확장자로 저장할 수 있다. 인코딩은 ANSI를 지정해준다. UTF-8 선택 시 글자 깨짐이 발생한다.
@ECHO OFF
"C:\Windows\nircmd.exe" setdefaultsounddevice "블루투스 기기 이름" 1
"C:\Windows\nircmd.exe" setdefaultsounddevice "블루투스 기기 이름" 2
timeout /t 1
"C:\Windows\nircmd.exe" setdefaultsounddevice "스피커" 1
"C:\Windows\nircmd.exe" setdefaultsounddevice "스피커" 2
timeout /t 1
"C:\Windows\nircmd.exe" setdefaultsounddevice "이어폰" 1
"C:\Windows\nircmd.exe" setdefaultsounddevice "이어폰" 2
BAT 파일의 내용에 대하여
1. @ECHO OFF : 명령어를 전부 출력하지 않고 결과만 출력하라는 명령이 echo off. 그러나 echo off 자체도 하나의 명령이기 때문에 이걸 다시 출력하도록 하지 말아야 하는데, 이를 위해 필요한 것이 @이다.
2. 동일한 명령줄 뒤에 1, 2가 붙어있는 이유 : 기본 장치와 기본 통신 장치를 모두 하나로 지정해주기 위함이다. 재생 장치 이름을 확인하면 기본 장치와 기본 통신 장치가 별도로 지정되어 있음을 알 수 있다.
3. timeout /t 1 : 1초 기다리라는 명령어. 직접 실행해보니 순간적으로 모든 명령줄이 실행되면 제대로 작동하지 않아서 궁여지책으로 넣은 것이다. 따라서 이 bat 파일을 실행하면 '1초 기다리는 중입니다' 라고 쓰여진 cmd 화면이 출력된다.
4. "nircmd 호출" nircmd 명령어 : NirCmd를 사용하는 방법이다. 이번에 사용한 기본 사운드 디바이스 설정 외에도 다양한 기능을 설정할 수 있다.
5. 사운드 디바이스 순서 : 부팅 시 기본 재생 장치는 이어폰이 연결된 경우에는 이어폰 or 이어폰이 연결되지 않은 경우에는 스피커로 설정이 되어있다. 따라서 이를 일단 블루투스 기기로 바꿔준 다음에 > 스피커로 바꾸고 > 마지막으로 이어폰으로 바꿔준다. 만약 이어폰이 연결되어있지 않다면 마지막 명령줄은 실행되지 않고 그대로 스피커로 설정되어있게 된다. 이어폰을 쓰지 않는 경우에는 마지막 timeout부터 삭제해도 무방하다.
4. 작업 스케줄러 등록하기
[작업 스케줄러 라이브러리 우클릭 > 새 폴더 만들기]로 적당한 폴더를 하나 생성한다. 이 과정은 필수는 아니고 그냥 편의를 위함이다. 해당 폴더에서 [작업 만들기] 로 새 작업을 생성한다. 중요한 건 트리거, 동작, 설정 탭이다.
트리거
[로그온할 때]를 선택해준다. 시작프로그램에 음악 재생 프로그램이 등록되어있다는 전제에, 작업 지연시간을 30초 정도로 입력해준다. 음악이 충분히 재생될 시간을 주기 위해서다. 경험상 이 BAT파일이 음악 프로그램보다 빠르게 실행되면 원하는대로 작동하지 않았다.
동작
[프로그램 시작]을 동작으로 지정해준다. 찾아보기 버튼으로 방금 전 만든 bat 파일을 선택하면 된다.
조건
AC전원이나 배터리 설정을 할 수 있다.
설정
[다음 시간 이상 작업이 실행되면 중지 : 3일]에 체크가 되어있을 텐데 이를 해제해 줘야 한다.
위와 같이 설정하고 등록한 작업은 [우클릭 > 실행]으로 바로 시험해볼 수 있다.
- https://www.reddit.com/r/Batch/comments/2qwmnf/batch_file_to_switch_audio_device/
- https://blog.bicheon.dev/4
- https://nem0.tistory.com/53
- http://mwultong.blogspot.com/2006/06/bat-batch-file.html
- https://mandloh.tistory.com/119
- https://zkim0115.tistory.com/1032
- https://www.nirsoft.net/utils/nircmd.html