알라딘MGG와이드바


Cubase drm xml 포멧 파일을 단순한 text 포멧으로 변경하는 python 코드 개발 이야기

저는 Cubase 에서 EZDrummer 와 Battery4 를 AKAI MPD218 에 매핑해서 쓰고 있습니다.
MPD218 Editor 는 미디 노트를 원하는 패드에 연결해 쓸 수 있는데,
드럼 가상악기들이 어느 미디 노트에 어떤 소리가 들어있는지 그다지 친절하게 표기하지 않아 어려움이 있습니다.

다행히 steinberg 포럼에서 EZdrummer 와 SD3 용 drum maps 을 구했는데 xml 포멧이 보기 쉽지 않더군요.

Python 3.8 (32bit) 에서 BeautifulSoup 를 이용해서 간단하게 xml 포멧으로 되어 있는 drm 파일을 단순화하는 코드를 만들었습니다. 어디 올릴만한 코드도 아니어서 블로그에 간단하게 기록 남깁니다.
Console 인자로 폴더 패스를 " " 로 묶어서 실행하면 그 폴더에 있는 모든 .drm 파일을 .drm.txt 파일로 convert 합니다.

# converting Cubase .drm file info text file for AKAI MPD218

import sys
import pathlib
from os import listdir
from os.path import isfile, join
from bs4 import BeautifulSoup

def ConvertDrm(filename):
print("Converting : " + filename)
with open(filename, "r") as infile:
with open(filename + ".txt", "w") as outfile:
contents = infile.read()
soup = BeautifulSoup(contents, 'xml')
item_listmap = soup.find('list', {"name": "Map"})
items = item_listmap.find_all('item')
for item in items:
inotes = item.find_all('int')
midi_note = -1
for inote in inotes:
if inote["name"] == "INote":
midi_note = int(inote["value"])
break

if midi_note == -1:
print("midi_note not found")
continue

name_tag = item.find('string')
midi_name = name_tag["value"]
if len(midi_name) == 0:
continue

midi_note_origin = midi_note - 12 # C0
octave = (midi_note_origin // 12) # AKAI 는 midi note 36 이 C2 다.
midi_note_alphabet_index = midi_note_origin % 12
midi_note_name = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']

outfile.write(str(midi_note) + "(" + midi_note_name[midi_note_alphabet_index] + str(octave) + ") " + midi_name + "\n")

def main(path):
fullpaths = [join(path, f) for f in listdir(path)]
drm_files = [f for f in fullpaths if isfile(f) and pathlib.Path(f.lower()).suffix == ".drm"]
for f in drm_files:
ConvertDrm(f)

if __name__ == '__main__':
main(sys.argv[1])


덧글

  • 2020/08/27 21:10 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 불타는 바다사자 2021/01/05 19:20 # 답글

    안녕하세요 혹시 스튜디오원에서는 MPD218 어떻게 맵핑하는지 아실까요?? 몇주동안 온 동네를 뒤져봐도 모르겠네요ㅠㅠ
  • 박PD 2021/09/25 00:45 #

    MPD218 매핑은 특정 패드를 어느 미디 노트와 연결할 것인지를 정해줍니다.
    어떤 DAW 를 쓰느냐는 상관없을 거 같아요. :)
댓글 입력 영역


Yes24위대한게임의탄생3

위대한 게임의 탄생 3
예스24 | 애드온2