픽스호크의 시작음을 내마음대로 바꿔보고 싶은 생각이 문득 들때가 있다.
찾아봤더니 이미 많은 사람들이 시도해보았고 좋은 튜토리얼도 있다. 이번 작업을 위해서
아래 링크의 글이 많은 도움이 되었다.
PX4 Star Wars Startup Tone
http://diydrones.com/forum/topics/px4-star-wars-startup-tone?commentId=705844%3AComment%3A2316571
https://pixhawk.org/dev/tone_alarm
픽스호크는 여러가지 소리를 통해 드론의 상태를 전달하는데 크게 다음과 같이 분류된다.
Index | Short name | Description |
---|---|---|
0 | STOP | Stops the current tune |
1 | BOOT | 'PX4 startup sound'. Is auto-played by the tone alarm driver on system startup |
2 | BATT_LOW | The battery is low, but not fully empty. Running on reserve. |
3 | BATT_EMPTY | The battery is completely flat, the system is not able to maintain safe flight. |
4 | CMD_ACK | The last command has been accepted |
5 | CMD_REJ | The last command has been rejected |
6 | POS_LOCK | The position estimator obtained a valid position (emitted once on first lock) |
7 | ARMING | Emitted on the transition to armed |
8 | DISARMING | Emitted on the transition to disarmed |
9 | EMERGENCY | General, potentially fatal error. NOT due to battery. Land immediately. |
이런 소리들은 부저의 하드웨어 제어를 통해 톤의 높낮이를 조절해서 만드는데 픽스호크의 부저음은 ANSI music 이라는
표준을 따르고 있다.
일종의 코드화된 부저음으로 예전 컴퓨터가 낼 수 있는 소리가 오직 부저 스피커밖에 없던 시절에 게임등 각종 미디 플레이를 위해
만들어진 표준 코드이다.
PX4 Firmware 의 소스코드를 살펴보면
/PX4Firmware/src/drivers/stm32/tone_alarm/tone_alarm.cpp 파일에 다음과 같은 코드를 볼 수 있다.
tone_alarm MFT225O3L8GL8GL8GL2E-P8L8FL8FL8FMLL2DL2DMNP8
MF로 시작하는 일련의 숫자와 문자의 나열로서 세부 규격에 대한 내용은 Ansi Music 가이드를 참조하기 바란다.
http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/ansimusic.txt
당연하지만 이 규격을 다 숙지하고 있다고 해도 직접 코드를 짜서 음악을 만드는건 쉽지 않다.
그래서 도스 시절에 미디 작업을 하기 위해 작성된 프로그램들이 존재하고 지금은 도스 에뮬레이터를 통해 미디음을 제작할 수 있다.
(요즘 나온 프로그램중에 ANSI코드로 미디음을 만들 수 있는지는 확인하지 못하였다.)
미디 제작을 위해 다음 프로그램을 다운받는다.
도스 에뮬레이터: dosbox
멜로디 마스터: Melody Master
1. Dosbox 를 다운로드 하고 어플을 설치한다.
2. 홈 디렉토리에 dosprogs 라는 폴더를 만들고 여기에 다운받은 Melody Master 파일을 압축 해제한다.
3. dosbox를 실행시키고 dosprogs 폴더를 c: 로 마운트한다.
mount c ~/dosprogs
4. Melody Master를 실행한다.
5. 1번을 누르고 다음 화면에서 음악 코드에 따라 음악을 작성한다. 작성하는 방법은 사용법을 잘 읽어보면 된다. 여러가지 예제가 있으므로 그걸 참고해봐도 좋다.
6. 작성이 완료되면 F2를 눌러 파일을 저장하고 파일을 ANSI 포맷을 출력하기 위해 F7을 눌러 다음과 같이 선택한다.
파일명.ANS 파일이 생성되어 있을 것이다.
7. 이제 저장된 파일을 텍스트 에디터와 같은 파일로 열어보자.
여기서 위 그림과 같이 MF로 시작되는 부분부터 마지막 부분까지 ( [u 이전까지) 가 ANSI music 코드이다. 이부분을 복사해서 소스코드에 넣는다.
tone_alarm.cpp 소스코드를 넣고 수정하고 싶은 부분에 기존의 코드를 대체한다.
이렇게 작성된 코드로 소스를 다시 빌드한다음 Pixhawk에 업로드한다.
그럼 변경된 소리를 들을 수 있다.
'Drone' 카테고리의 다른 글
Hobbyking Bixler 무인기 프로젝트[Part.1] (0) | 2017.01.04 |
---|---|
MicroSD 벤치마크 (0) | 2016.12.15 |
PX4IO Bootloader 올리기 (3) | 2016.10.09 |
PX4FMU에 Bootloader 올리고 프로그램 다운로드 하기 (7) | 2016.10.09 |
PX4Firmware build (3) | 2016.10.06 |