2020년 9월 16일 수요일

[우분투의 사운드와 MIDI] Rosegarden에서 NanoPiano의 뱅크 선택

Rosegarden의 사용법에도 어느덧 익숙해져서 어제는 15개 MIDI 트랙을 총 세 개의 음원에 배분하여 연주를 해 보았다. 세 개의 음원이란 하드웨어 사운드 모듈로서 Roland SoundCanvas SC-D70과 Alesis NanoPiano, 그리고 나머지 하나는 FluidSynth이다.

각 악기의 음색('프로그램')을 미디 시퀀서에서 제대로 제어하려면 0-127번까지의 번호에 프로그램을 할당한 파일이 필요하다. 과거 Cakewalk의 ins file(instrument definition file)라 불리던 것이 바로 그것이다. Rosegarden에서는 rgd라는 XML 형식의 device definition 파일을 사용한다. 다음 문서를 참고하면 악기 매뉴얼을 참고하여 텍스트 파일을 작성한 다음 text2rgd.py라는 파이썬 스크립트를 실행하여 rgd 파일을 만들 수 있다.

mini-HOWTO: Creating the Instrument and Program definitions for Rosegarden 

유명한 악기는 Rosegarden에 내장이 되어 있지만 SC-D70과 NanoPiano는 그렇지 않았다. 웹 검색을 해서 Calkwalk용 ins 파일을 구한 다음 ins2rgd.pl 펄 스크립트로 처리하여 rgd 파일을 만들었다.

NanoPiano는 16 x 16 = 256개의 음색을 갖고 있다. 프로그램 번호의 범위는 최대 128까지이므로 두 개의 뱅크로 나뉘어 있는데, rosegarden 안에서 뱅크 2번에 속하는 악기로 바꾸어도 소리가 변하지 않았다. 이건 도대체 왜 이런가? NanoPiano의 매뉴얼을 확인해 보면 앞부분 128개의 악기는 뱅크번호 0 또는 1, 나머지 128개는 뱅크번호 2라고 한다. Rosegarden에서 불러들인 뱅크 정보(rgd 파일)에서는 MSB = 0으로 두고 LSB를 바꾸는 것으로 두 개의 뱅크를 나누어 놓았다. 혹시 MSB의 숫자를 올려야 하는 것은 아닐까? NanoPiano 매뉴얼에는 이를 명확하게 설명하지 않았다.

테스트를 위해 2번 뱅크의 MSB 설정을 2로 하였다. 그랬더니 비로소 모듈 쪽에서 제대로 응답을 하여 바뀐 소리가 나기 시작하였다. SC-D70에서는 CC 32(bank select LSB)가 sound map을 선택하기 위해 쓰인다. NanoPiano는 CC 32의 의미가 없는 것 같다.

sendmidi 명령어로 다른 뱅크의 음색을 이용하려면 다음과 같이 하면 된다.

$ sendmidi device 'SC-D70 MIDI' CC 00 1 PC 0 # 'True Stereo'
$ sendmidi device 'SC-D70 MIDI' CC 00 2 PC 127 # DarkLounge

하드웨어 음원을 쓸 때에는 기기 전면의 노브나 버튼을 직접 이용하여 조작을 하는 즐거움이 있다. 그러나 알레시스의 나노 시리즈와 같이 정보 표시용 창이 전혀 없는 악기는 지금 설정된 악기의 카테고리만 볼 수 있을 뿐, 구체적인 프로그램명은 모른다. 그러나 미디 시퀀서를 연결하여 설정을 바꾸게 하니 프로그램명을 보고서 대략적으로 어떤 소리가 날지 감을 잡을 수가 있다는 장점이 있다.

댓글 없음: