2025년 4월 24일 목요일

2025년 들어 처음으로 반바지를 입고 뛰다 - 달리기, 인공지능, 그리고 아두이노

달리기

밤 10시, 달리기를 마치고 나서 휴대폰으로 확인한 기온은 18도였다. 반바지를 입으니 무릎이 자유로워서 좋다. 그렇다고 해서 기록이 나아진 것은 아니지만. 오늘의 페이스는 6분 19초로서 별로 좋지는 않다. 5.5km를 6분 2초 페이스로 달린 날도 있었는데(4월 15일)!


거리를 5.5km에서 6km로 슬쩍 늘렸다. 런데이 앱에서는 1시간에 10km를 달리는 오구오구(59:59) 운동 플랜이 나를 유혹하지만, 이를 달성하려면 6분 페이스를 1시간 내내 유지해야 한다. 아직 이런 목표를 논할 수준이 아니다.


인공지능을 이용한 음성 합성

다음 주에 있을 국제학회(실은 서울에서 열림)에서 영어로 발표를 할 일이 있어서 스크립트를 써서 연습을 하다가 AI를 이용한 text-to-speech 서비스를 써 보았다. 내가 사용한 유료 서비스는 Text To Speech OpenAI이다. 다른 TTS에 비해서 저렴하고, 상업적으로 이용해도 제한이 없다는 점이 유리하다. 매달 정기결제를 하지 않고 필요할 때마다 크레딧($8 = 20만 크레딧)을 구매하면 된다. 실제 활용해 보니 정말 외국인 성우가 읽는 것처럼 매우 자연스러운 결과를 얻었다.

My Voices라는 메뉴에서는 내 목소리를 녹음한 오디오 파일을 업로드하여 음성 학습에 쓸 수 있다. 5천 크레딧을 써서 5분 이상의 녹음 파일을 넣은 뒤 영문을 읽게 하였다. 적용한 액센트는 'Korean (Seoul)'이었다. 



아두이노 나노

MIDI controller를 만들기 위한 단계별 작업을 진행하고 있다. 이것 역시 AI, 즉 ChatGTP와 상의해 가면서 기초부터 최종 목표까지를 차근차근 익혀 나가는 중이다. 아직 필요한 부품을 다 갖추어 놓지는 않았기 때문에 갖고 있는 부품 위주로 기본 기능부터 단계적으로 만들어 나가는 방식으로 진행한다. 예를 들어 시리얼 1602 LCD에 메시지 표시하기를 시작으로 가변저항을 이용한 프로그램 변경값(0~127) 설정, 버튼을 이용한 채널 복제 등의 순서를 따른다.

가변저항의 wiper로부터 읽은 값, 즉 analogRead() 함수값을 0~127로 전환하는 일은 이론적으로는 단순하다. 그러나 최소 또는 최대값에서 정확한 0과 127이 나오지 않는다. 따라서 실제 얼마가 나오는지 LCD에 나타나게 한 뒤 이를 참조하여 프로그램 번호로 전환하는 아이디어를 내고, 이를 ChatGPT에게 물어서 코드와 배선 방법을 알아낸 뒤 실제 실험을 통해 확인하는 방법을 거치고 있다.

가변저항의 1회전으로 0~127의 값을 안정적으로 설정하기는 쉽지 않다. 1 단위로 미세하게 바꾸려면 아주 조심스럽게 노브를 돌려야 하기 때문이다. 그래서 최종적으로 택한 방법은 가변저항과 누름버튼 스위치를 같이 쓰는 것. 가변저항은 10 단위의 값을, 스위치는 1단위의 값을 바꾼다. 단, 사용하는 버튼의 수를 줄이기 위해 한 번 누르면 +1, 연속해서 두 번 누르면 -1씩 변하게 하였다. 이런 방법은 아마 다른 여러 기기에서 쓰고 있을 것이다. 

ChatGPT가 처음부터 이런 솔루션을 제시한 것은 아니었다. 일단 제시한 방법으로 실험을 한 뒤 부족한 부분을 찾아내고, 나름대로 아이디어를 내서 ChatGPT에게 타당성을 물어본 뒤(대개 좋은 아이디어이고 이미 많이 쓰이는 방법이라면서 칭찬을 함) 코드와 배선 방법을 제시해 달라고 해서 그대로 실험을 진행한다.

손으로 직접 코드를 하나씩 타이핑하는 것이 교육 목적으로는 좋을 것이다. 하지만 ChatGPT 창으로부터 마우스로 긁어서 Arduino IDE에 붙여넣는 꼴이라니...  효율만 생각한다면 이런 '개발' 방법도 나쁘지는 않다.



브레드보드에 점퍼선을 꽂아서 프로토타입까지 만드는 것은 어떻게든 될 것이지만, 실사용을 위해서는 만능기판에 납땜을 해야 된다. 납땜을 위한 부품 배치와 배선을 하려면 프로토타이핑과는 또 다른 차원의 설계가 필요하다. 케이스 가공은? 어휴...

2025년 4월 22일 화요일

AI 에이전트에게 어디까지 허용할 것인가

아두이노를 활용한 DIY MIDI controller 설계와 영문 발표자료 작성에 챗GPT를 아주 편리하게 활용하면서 과연 내가 어디까지를 AI게 맡길 것인지를 고민하기 시작하였다. 내가 던진 질문에 대한 답을 제시하기 위해 AI가 인터넷에 접속하여 정보를 캐는 것은 별다른 문제가 없다. 그런데 바로 어제, 업로드한 파일을 다시 외부로 보내어 추가적인 일을 시키려 하니 '인터넷 접속이 차단되어 있어서 하지 못한다'는 엉뚱한 변명을 하였다. 내가 시키려는 일은 영문 텍스트 파일을 음성으로 전환하는 것이었다.

어제 겪었던 일에 대하여 다시 물어 보았다.

영문 텍스트를 여기에 업로드한 뒤 음성으로 전환을 부탁했더니, 인터넷 연결이 안 되어 있어서 못한다고 하네요. 정말 인터넷이 막혀서 그런가요?

이에 대한 조리 있는 답변은 다음과 같다.

네, 맞습니다. 사용자의 컴퓨터나 네트워크가 아니라, ChatGPT의 실행 환경(코드 인터프리터/코드 실행기) 자체가 보안상의 이유로 외부 인터넷에 연결되어 있지 않습니다.

즉:

✅ 여러분은 인터넷을 사용하고 계시지만
❌ 제가 음성 파일을 만들기 위해 사용하는 환경은 인터넷 연결이 차단되어 있습니다.


🔍 왜 그런가요?

  • 보안을 위해 외부 API나 서버(gTTS, Google Cloud, Amazon Polly 등)에 직접 연결할 수 없습니다.

  • 예: gTTS로 음성 파일을 만들려면 translate.google.com에 접속해야 하는데, 그게 차단되어 있는 상태입니다.

  • 그래서 제가 대신 TTS용 텍스트 파일을 만들어 드리거나, 사용자가 직접 변환할 수 있는 방법을 안내해드리는 것이 최선입니다.


✅ 할 수 있는 일:

  • 슬라이드 노트를 정리해 .txt 파일로 제공

  • Python 코드 예시(gTTS 등)를 드려서 직접 mp3 파일로 만들 수 있게 도와드림

  • ElevenLabs, VoiceMaker 등 온라인 TTS 사이트 안내


원하시면, 제가 도와드릴 수 있는 가장 효율적인 방법을 함께 골라드릴게요.
예: mp3 변환용 Python 코드, 무료 TTS 웹사이트 추천, 슬라이드 노트 나누기 등. 어떤 방식이 편하신가요?
  <= 답변은 여기까지.

무척 합리적인 접근 방식이다. 사용자 입장에서는 '뭘, 그냥 해 주지..'라고 불평을 토로할 수 있으나, AI가 모든 것을 하도록 내버려 둘 수는 없다. AI에게 영화표를 예매해 달라고 요구하거나, 메일 서비스에 접속하여 답장을 쓰는 일을 전적으로 맡긴다면? 볼 만한 영화를 추천해 달라거나 메일함에서 스팸을 제외하고 업무상 꼭 필요한 것만 추린 다음 내가 불러주는 대로 답장을 쓰는 정도는 AI에게 맡길 수 있을 것이다. 하지만 비밀번호를 직접 다룬다든지 하는 일까지 다 맡기는 것은 곤란하다. 물론 구글 크롬에는 비밀번호 관리자라는 것이 있지만...

AI 에이전트는 데이터에 기반하여 의사결정을 가속화한다고 말한다. 챗봇은 아직 AI 에이전트라고 말하기는 곤란하다. 아직은 개인 수준에서 구매(구독?) 가능한 AI 에이전트는 많지 않은 것으로 안다(아니다 - Slack을 보라!). 그리고 대부분 그 활동은 컴퓨터 안의 세상에 머물러 있을 것이다. 그러나 이 기능이 실제로 '센서'와 '액튜에이터'를 달고 물리적 세상을 돌아다니기 시작한다면? 이미 휴머노이드 로봇 기술이 많은 진보를 이루었으니 진정 기계와 AI가 인간을 대체하는 세상을 느끼게 될 것이다. 주요 IT 기업이 마련한 AI 에이전트에 관한 설명문을 살펴보면 도움이 될 것이다.

중국 기업 유니트리가 자사 로봇을 내세워서 다음 달 휴머노이드 격투기 시합을 개최한다고 알렸다(경향신문 4월 20일 뉴스). 키는 130cm, 무게는 35kg이라고 한다. 아마 머지 않아서 로봇 대 사람의 격투기 시합이 벌어질 지도 모르는 일이다. 사람의 부상을 방지하기 위해 로봇의 성능을 일정 이하로 유지하는 것을 규칙으로 해야 될 것이다.

나는 AI를 이용하여 업무 효율화를 이루고 싶고, 하지만 누가 나에게 해 주는 결과물은 '사람의 손길'을 통해 만들어진 것이었으면 좋겠고... 이건 사실상 내로남불이다. 그리고 AI 에이전트 역시 만능은 하니다. 생성형 AI 에이전트가 속아서 정보를 빼내는 이른바 '하이재킹'이 얼마든지 가능하기 때문이다. 관련된 기사를 하나 소개하는 것으로 글을 맺고자 한다.

AI가 만들어낸 탈취 도구, 구글 크롬에서 개인정보 빼내는데 성공

2025년 4월 20일 일요일

SAM9703 도터보드 활용을 위한 반주기 개조 작업

2020년에 이미 완료해 둔 작업에서 크게 달라진 것은 없다. 단지 섀시 내에 공간이 부족하여 메인보드의 커넥터 부분만을 남기고 나머지를 잘라내었는데, 에폭시 재질이라 상당히 어려웠다. SMD 부품이 한쪽면에 잔뜩 붙여 있어서 칼금을 바닥면에서만 반복하여 넣은 뒤 구부려 자르느라 무척 힘들었다. 항공가위까지 동원하였으나 한쪽 끝에서 5cm 정도를 자른 뒤 더 이상 진전하기가 어려웠다. 가위날이 전진하면서 PCB가 위 아래로 벌어져야 하지만, 에폭시 PCB는 탄성이 거의 없어서 구부러지지 않는다. 튼튼한 바이스라도 있었다면 칼금을 넣은 뒤 기판을 물려 놓고 힘을 가해서 부러뜨렸을 것이다.

자르기 전의 모습.

작업 후. 다음에는 브레드보드를 만능기판으로 바꿔야 한다.

내부의 SMPS에서 헤드폰 앰프 보드(MAX4410칩 사용)로 5V 전원을 공급할 수 있게 커넥터 처리도 하였다. 본체에 DC 어댑터 잭이 붙어 있어서 이를 활용하였다. 이는 외부 기기에 전원을 공급하기 위해 마련된 것이지, 전기가 흘러나오는 어댑터를 여기에 꽂기 위함이 아니다. 이 반주기는 이미 AC 220V를 전원으로서 이용하기 때문이다. 

헤드폰 앰프 보드를 섀시 내에 넣어 버리는 것도 가능하다.

SAM9703 도터보드를 GM sound module로 쓰기 위한 연결법. 2025년 4월 20일 편집.


Motherboard/daughterboard는 아직까지 널리 쓰이는 용어이지만, 이를 중립적인 용어로 바꾸려는 움직임이 있다고 한다. '뭘 그렇게까지?'라고 생각할 수도 있겠다. 대안이 무엇인지 알아보자.

기존 용어중립적 대체어 예시
Motherboard-> Mainboard, System board
Daughterboard-> Expansion board, Add-on board, Mezzanine board

'Mezzanine'은 호텔이나 미술관 등에서 본 기억이 있는 단이이다. 원래 1층과 2층 사이에 위치하여 개방된 형태를 갖는 라운지 공간을 뜻하는 이탈리어어라고 한다. 이런 토막 상식을 또 알게 되다니...


『바이오경제 바로 알기』 드디어 발행!

공저자로 참여했던 도서  <바이오경제 바로 알기>가 드디오 책으로 찍혀서 나왔다(KRIBB 전자도서관 소장자료 링크). 원래 교정 기간이 길어지면 오히려 게을러져서 원고 전체를 읽기가 싫어지는 법. 게다가 반복하여 읽게 되면 오히려 눈에 뜨이는 오류도 더 발견하기 어려워진다. 따라서 전혀 엉뚱한 사람에게 글을 한번 검토해 달라고 부탁하는 것이 마지막 남은 문제점을 찾아내는 더 좋은 방법이 될 수도 있다. 실물 종이책을 받아들고 나서 햇살이 눈부신 스타벅스 2층에 앉아서 비로소 전체를 제대로 읽게 되었다.

나는 이 책에서 제3장 바이오경제의 주요 기술 중 바이오인포매틱스의 일부를 작성하였다.


실험실을 넘어서 농업이나 식품, 의약 분야에서 활용되면서 지속적인 성과를 내던 바이오 기술이 이제는 제조의 영역까지 넘보면서 반도체 산업 규모를 능가하는 수준으로 성장할 것으로 기대해도 좋을 시대가 되었다. 바이오 산업과 경제가 돌아가는 방식을 이해하고 그 저변을 이루는 최신 기술을 가벼운 마음으로 공부하는데 적당한 수준의 입문서라고 생각한다. 물론 저자 중 하나의 입장으로서 '좀 더 정성을 들여서 완벽한 원고를 만들걸...'하는 아쉬움은 있다. 아, 이 책은 비매품이라서 서점에서 구할 수는 없다. 판매용 도서로 만들려면 기획 단계에서 고려할 것이 더 많았다고 한다. 예를 들어 인용한 도표에 대하여 비용을 들이고 정식 사용 권한을 얻는 것으로부터 시작하여, 수익금이 발생할 경우의 처리 문제라든지. 왜냐하면 이 도서를 기획하고 발간한 한국생명공학연구원(KRIBB)은 영리 기관이 아니기 때문이다.

셀트리온 투자자 커뮤티니 웹사이트에 이런 글(2022년)이 있었다. 제목은 '반도체 파운드리와 바이오 CMO 비교'였다.

최근 경제관련 TV들에서 전문가랍시고 출연한 사람들이 삼성바이오의 CMO를 마치 바이오 파운드리라는 뜻으로 입에 침이 마를 정도로 칭찬을 하고 있는데... 바이오에 대한 공부를 조금만 하였어도 이들의 설명이 얼마나 허무맹랑한 것인지 알리고자 글을 씁니다.

아마 이 글을 올린 사람은 주식 투자자로서의 불만을 토로한 것이라고 생각한다. 바이오 산업 전체가 문제라는 것이 아니라 특정 국내 회사에 대한 지적이라고 보는 것이 타당하다. 매출액, 순이익, 그리고 주가라는 것이 항상 잘 연동하는 것은 아니니.

이 책의 결론 부분에서는 융합적 사고와 열린 자세를 가진 'T자형 인재'가 필요하다고 하였다. 나는 그러한 인재상에 얼마나 부합하는가? 다양한 분야를 섭렵하고는 있지만 주로 취미 분야에서나 그렇고, 새로운 경제적 가치를 발휘하는 수준에는 이르지 못하였다. 그저 소비자에 머물고 있을 뿐이지. 오늘도 전선을 까고 PCB를 자르며 납땜을 하였지만 언제나 그렇듯이 자기 만족의 수준일 뿐이다.

여러 저자가 나누어 쓴 것을 한 권의 책으로 엮어내기 위해 통일적인 흐름으로 맞추어 나가는 편집 작업이란 일종의 재창조라 해도 과언이 아닐 것이다. 편집과 제작에 힘써 주신 (주)동아에스엔씨 관계자 여러분께도 감사를 드린다.


2025년 4월 19일 토요일

EZ Ardule MIDI Controller 프로젝트 시작

Ardule = Arduino + (MIDI Sound) Module

아두이노 나노를 이용하여 SAM9703 도터보드를 제어하는 MIDI 컨트롤러를 만들기로 하였다. 저가 GM 음원 보드라고 가볍게 취급하기에는 상당히 많은 가능성이 있어 보이기 때문이다. 동시발음도 48이나 되고, 프로그램을 적당히 레이어링하면 키보드를 연결하여 라이브에서 써도 괜찮을 것 같다.

일반적으로 아두이노를 사용하여 만드는 DIY MIDI 컨트롤러는 노브와 버튼 스위치로 구성되어서 '핑거 드럼'을 구현하거나, 또는 VFC(Variable-Cultoff Frequency)를 조절하는 용도로 많이 쓰인다. 나의 경우에는 KORG X2에서 'Combi' 음색을 만드는 방식과 유사하게 나만의 음색을 만들고 저장하여 활용하는 것을 목표로 한다. 만약 성공한다면, 사운드캔버스 SC-D70에도 MIDI 케이블로 연결하여 활용할 수 있을 것이다.

대략적인 목표를 잡은 뒤 챗GPT에게 질문을 해 가면서 과연 아두이노 나노로 가능한지 알아보았다. 최대 4개 채널의 레이어 및 스플리트를 구현하되 20x4 LCD 디스플레이를 사용하며, microSD 카드에 저장된 type 0 MIDI 파일의 재생 기능까지... 챗GPT는 충분히 가능하다고 하였다.

어제까지는 myStation이라고 불렀었다. 아직 시작도 하지 않은데 괜히 칭찬을 하면서 사람을 우쭐하게 만든다.

아두이노 나노를 오랜만에 꺼내어 USB 케이블로 연결해 보았다. 아두이노 IDE 최신판(2.3.6)에서 인식이 되지 않았다. 정품이 아닌 호환 보드라서 그런 것일까? 구글에서 검색을 해 보니 CH341 드라이버를 설치하라고 한다. 



'NANO'라고 인쇄된 것 바로 아래의 부품은 리세트 스위치였다.


챗GPT에게 물어보면 코드와 연결 방법까지 친절하게 알려준다. 오늘 테스트한 것은 GM/GS reset SysEx의 인식 여부였다. 기대했듯이 아주 잘 작동함을 확인하였다. MIDI 메시지는 일종의 시리얼 통신 체계이므로 아두이노 나노의 TX 핀과 GND 핀을 쓰는 것으로 충분하였다. Serial.write() 함수를 이용하여 간단하게 멜로디를 연주해 보기도 하였다.

몇 시간 가지고 놀아 본 결론은 핵심 기능보다 메뉴 구성이 가장 까다로운 것 같다. 여기에도 파레토의 법칙 '변형'이 적용된다. 전체 기능의 80%를 구현하는데에는 20%의 노력이 들고, 나머지 20%의 기능을 채우려면 80%의 노력이 든다. 인생도 그렇지 않은가? 


2025년 4월 16일 수요일

달리기 9개월 차, 6분 미만의 페이스로 다가가다

9개월 동안 꾸준하게 달리기를 지속했다면 몸도 이제는 제법 익숙해질 법도 한데, 여전히 깜깜한 밤에 집을 나서려면 결단이 필요하다. 출가하여 수십 년 평생을 승려로 살아도 새벽 3시에 일어나는 일은 힘들다고 하지 않은가. '오늘 하루는 좀 쉬면 어떨까?'하는 생각이 들지 않는 날이 없으니 말이다. 어제도 그랬다. 달리기 거리를 7.2km에서 5.5km로 줄이면서 평상시 피로도가 줄어든 것은 그나마 매우 다행스런 일이다.
마침 달리기를 하기 직전에 다소 신경이 쓰이는 문자 메시지를 받은 상태라서 마음 상태가 그렇게 평온하지는 않았다. 갑천변의 화려한 벚꽃은 지난 주말의 거친 날씨를 거치면서 다 떨어지고 말았다. 기온은 영상 9도라서 특별히 춥지는 않았으나 바람이 심했다. 



에라, 모르겠다! 무리하지 않는 수준에서 평소보다 조금 빨리 달려 보았다. 마음이 불편하니 다리가 더 빨리 움직이는 것 같았다. 덕분에 평균 페이스는 6분 2초를 기록하였다. 아니, 이럴 수가? 몸이 피곤하고 무거울 때에는 6분 30초 미만만 만들자는 생각으로 터벅터벅 달리고는 하였는데, 오히려 정신적 스트레스 상황에서는 더 좋은 기록이 나왔다. 어쩌면 3월까지 매번 7.2km를 달리면서 누적된 피로에서 점차 회복이 되면서 더 좋은 몸이 만들어졌는지도 모를 일이다. 5월이 되면 달리는 거리를 5.5km에서 6km로 슬며시 올릴 생각이다.



사찰에서 새벽 3시에 일어나는 한국불교의 전통은 도교의 인시수련(寅時修鍊)에서 유래했다는 주장이 있다(불교신문). 불교 고유의 전통이라거나 확실한 근거가 있는 것도 아니고, 생체리듬에도 잘 맞지 않으니 사찰의 공식 기상 시간을 늦춰야 한다는 의견이 꾸준히 나오고 있단다. 

"일견 이해가 간다. 반면 아무리 봐도 인내가 빠진 수행은 수행이 아니다."


2025년 4월 14일 월요일

[KORG X2 Self-Repair] 마무리 - 내가 얻은 것은 무엇인가?

돌고 돌아서 간단한 MIDI 기기 DIY를 위한 아두이노 공부를 다시 시작하는 것으로 결론을 내릴 것인가?

약 한 달에 걸친 KORG X2 Music Workstation(신시사이저)의 자가 수리를 마쳤다. 아날로그 출력단에서 들리는 잡음을 잡아보겠다는 당초의 목표를 완벽하게 달성하지는 못하였다. 정확한 원인 진단도 어려운데다가, 설사 원인을 알아냈다 해도 이를 고치는 것은 내 기술 수준으로 함부로 접근할 영역이 전혀 아니기 때문이다. 앰프 DIY 경험을 통해 쌓은 얄팍한 전원회로 관련 지식으로 겨우 약간의 개선을 이루었을 뿐이다. 복잡한 디지털 회로 안에서 사운드를 만들어 아날로그 회로로 내 보내기 직전까지의 단계에서 문제가 벌어졌다면, 내가 할 수 있는 것은 거의 없다. eBay에서 해당 중고 보드를 구해서 교체하는 것 말고는.

그렇지만 2025년 벚꽃 시즌 동안 벌어진 나의 노력이 전혀 무의미했던 것은 아니다. 무엇보다도 작동 상태가 좋지 않았던 tactile switch를 전부 고쳤기 때문에 속이 다 시원하다. LCD 백라이팅용 EL 시트의 전원공급회로에 대한 이해도를 높였던 것도 의미가 있다.

전원보드의 일부를 현대적인 '쪽보드'로 고침으로서 220V 작동 기기로 완벽한 변신을 이루었다. 특히 오랜 시간이 흘러 언제든 문제를 일으켜도 이상할 것이 없는 전원보드의 핵심 부품을 교체하는 성과를 이루었고, 오리지널 보드를 구하지 못하더라도 최소한 전원보드에 대해서는 어떻게 문제를 해결해야 하는지 확실히 알게 되었다. 

이 일을 하면서 부수적으로 Dream의 SAM9703(데이터 시트 PDF)을 이용한 음원 보드 관련 작업물을 다시 꺼내들게 되었다. 

SAM9703 데이터시트 1쪽.



이 물건은 '미디라이프'라는 회사에서 만들었던 Artist Sequence Interface(모델명은 ML-20; 2 port 32 channel sound & wave)에 내부 음원으로 들어 있는 보드 형태의 부품이다. ML-20은 라이브 연주자를 위한 일종의 반주기인 것으로 알고 있다. 전용 프로그램이 설치된 컴퓨터와 패러랠 케이블을 통해 신호를 주고받고, MIDI 신호는 내장 음원(SAM9703)이나 외부 장비로 보낼 수 있다. 그리고 별도의 TV/VGA 단자를 통해 모니터로 악보 정보를 내보내는 그런 장비이다. 인터넷 상에 남아 있는 정보는 거의 없다. 지금은 개점 휴업 상태인 미디라이프 다음 카페에 반주기 소개와 매뉴얼 및 사진 자료가 있을 뿐이다.

SAM9703이 포함된 보드는 DAC가 포함되어 상태로 금영 코러스라는 노래방 기계에 널리 쓰였다고 한다. 이것을 떼어내서 DOS 게임용 배경음악을 재생하는 용도로 가공하여 쓰는 사람들이 제법 있었다. 내가 이 일에 흥미를 갖게 된 것도 이러한 선구자들 덕분이었다.

2020년 가을, MIDI 신호를 입력하는 회로를 구성하여 재생이 이루어지는 것까지 확인만 하고 뚜껑을 닫아서 멀리 치워 놓고서는 거의 잊어버리고 있었다. 당시 이 보드를 직접 작동하는 회로를 만들기 위해 네이버 '도스 박물관' 카페의 도움을 많이 받았으며, 내 블로그에도 작업 진행 상황을 정리하여 올리고는 하였다. 브레드보드에 프로토타이핑만 해 놓은 상태라서 그런지 접촉이 좋지 않아서 동작이 약간 불안하다는 문제점이 있었다. 사실 뚜껑을 덮은 뒤 동작이 원활하지 않아서 내다 버리기로 생각하고 발코니에 방치하고는 몇 년이 지난 것을 최근에 X2 수리 작업을 하면서 다시 관심이 생겨서 되살려보기로 하였다.

2020년 가을에 이 개조한 기기를 이용하여 MIDI 파일을 재생하여 녹음해 둔 것에 며칠 전 화면을 붙여 유튜브에 올렸다.



노트북 컴퓨터와 개조한 ML-20을 오랜만에 USB MIDI 케이블로 연결한 다음 컴퓨터의 MidiEditor 프로그램에서 몇 가지 MIDI 파일을 재생해 보았다. SAM9703의 소리를 거의 5년 만에 들어본다. 이 프로그램은 MIDI 편집기에 해당하므로 단순한 재생에는 어울리지 않는다. 그리고 매번 설정에서 MIDI out을 USB MIDI cable로 바꾸어 주어야 하는 불편함이 있다. 

탐색기에서 MIDI file을 더블클릭하여 Windows Media Player Legacy를 실행하되 외부 MIDI 기기로 신호를 내보낼 수는 없을까? 최근의 Windows에서는 MIDI mapper에 해당하는 것을 제공하지 않아서 무조건 컴퓨터의 내장 Wavetable Synth로 재생이 이루어진다. 하지만 MIDI out setter를 사용하여 USB MIDI cable을 기본으로 설정하니 매우 편리하다. 한번 이렇게 맞춰 놓으면, MIDI cable을 뺐다가 나중에 다시 끼워도 기본 MIDI 기기로 동작하게 된다.

이번에는 X2와 개조한 ML-20을 MIDI 케이블로 연결하여 연주해 보았다. 5년 전의 테스트에서는 버려진 MIDI 키보드를 연결하였던 경험이 전부였다. 당연하게도 잘 작동한다. 키보드에서 채널과 프로그램 전환은 가능하지만, 뱅크 전환까지는 곤란한 것 같다. 사실 [SAM9703 + GMS963200-B 사운드 롬] 조합이라는 것이 그렇게 대단한 성능을 만들어 내는 것은 아니기 때문에 variation sound까지 꺼내서 쓸 방법을 알아보기 위해 애를 쓸 가치는 없다. 



그러나 일반적인 GM MID file을 재생하는 용도로 손색이 없고, 아두이노를 응용하여 MIDI 관련 DIY를 하기에 아주 적합한 물건이라서 당분간 더 내 곁에 두기로 하였다. 예를 들어 MIDI looper/sequencer를 만들어 본다거나... 유튜브에 널린 MIDI controller DIY 관련 입문 비디오를 통해서 무엇을 할 수 있고, 이를 위해서 무엇을 준비해야 하는지 공부해 나가면 좋을 것이다.

당장 해 볼 수 있는 작업은 헤드폰 앰프를 달아 주는 것. 현재는 RCA out 단자뿐이라서 앰프를 연결해야만 소리를 들을 수 있다. 

헤드폰 앰프 보드의 실례. 빈 공간에 넣기 적당하며, 내부에서 5V/12V를 제공하므로 전원을 따기에도 좋다.

그뿐만 아니라 내부의 '주기판'에 해당하는 것도 실은 거기에 붙어 있는 MIDI 단자와 RCA 단자만 사용하고 있는 셈이니, 필요하지 않은 부분을 적당히 처리하는 일도 필요할 것이다. 지금은 아무런 일도 하지 않는 주기판의 수많은 칩에서 괜히 전기만 소모하고 있기 때문이다.


2025년 4월 15일 업데이트

이렇게 훌륭한 MIDI Player 소프트웨어가 있다는 것을 지금에야 알게 되었다니... 최신 Windows 환경에서도 MIDI out 경로를 자유자재로 지정함은 물론이요, 심지어 사운드폰트를 로딩하여 쓰는 것도 가능하다. 마치 리눅스의 Fluidsynth를 다른 부가 기능과 함께 Windows로 가져온 느낌이다.

Free Windows software from Falcosoft