1 개요
플로피 디스크 드라이브(Floppy Disk Drive) 음악 연주 장치
Musical Floppy Controller
노인 학대
새로운 칩튠계의 강자 플로피 뮤직!
Sammy1Am / Moppy - GitHub : Sammy1Am Moppy 페이지
Make Your Own Musical Floppy Drive - YouTube : Sammy1Am 영상 제작 강좌
A very-well diagrammed English tutorial : 제작 강좌
- MCU를 활용하여 FDD의 헤더(Header)를 특정하게 움직이는 방식으로 음악 연주가 가능한 장치이다.
연주 방법은 미디 파일을 컴퓨터 프로그램을 통하여 재생시키면, 컴퓨터와 연결된 아두이노를 거쳐 각 FDD에 각 채널에 일정한 음의 길이 및 높낮이가 저장된 단음 신호를 전송하여 연주가 되는 것처럼 시키는 것이다.
Sammy1Am을 비롯하여 이러한 연주 장치를 보다 쉽게 할 수 있도록 제작 강좌가 나와 있으며, 재료만 갖춰져 있다면 그다지 어렵지 않게 만들 수 있다.
2 직접 Moppy 만들기
집에서 직접 Moppy만들어 작동하기 위해서는 아래의 구성품이 되도록 갖춰져 있어야 한다. 하나라도 부족하면 제작 도중 난감한 일이 발생할 수 있으니 주의해야 한다.
2.1 하드웨어 구성
(1) 필수품
- Moppy 용 FDD 1~6개 : 후면부에 34핀 중 하단 홀수 핀(1~33)이 대부분 제거되지 않은 FDD여야만 한다.
- Moppy의 핵심 부품이자 동시에 국내에서 가장 구하기 힘든 녀석이기도 한데, 시중에서 구할 수 있는 중고
특히 삼성FDD의 대부분은 홀수 핀이 제거되어 있기 때문이다. 이런 FDD는 Moppy용으로 사용할 방법이 없기 때문에 쓸모가 없으며, 이 조건을 만족하는 FDD를 구하기도 상당히 힘든 편이다.[1] - 대부분 FDD는 오래 전에 단종되었고, 국내에서도 구하기가 쉽지 않으니 정 여건이 여의치 않다면 해외에서 수입해오는 것도 방법이 될 수 있다.
이거 하나 구하려고 해외직구를 해야 하다니만약 이 조건을 만족하는 FDD를 하나라도 구했다면 최대 고비는 넘겼다고 할 수 있다.
직구를 한다면 이베이쪽을 뒤져보자. 거긴 홀수 핀이 제거된 걸 찾기가 더 어려울 정도로 조건을 만족하는 FDD를 찾기가 쉽다.
- 다음은 Moppy로 만들 수 있는 FDD 목록이다. 아래 모델명으로 된 FDD를 중심으로 구하면 된다. 목록 추가 바람
- CHINON FB-354
- MITSUMI D359M3D
- NEC FD1231M
- Samsung SFD-321B[2], SFD-321D, SFD-321J[3]
- SONY MPF920-Z
- TEAC FD-235HF(참고로 비슷한 이름의 FD-235HG는 핀이 다 살아 있음에도 불구하고 연주가 안 된다. 헤더가 없는 모델로 추정.)
- 아두이노 UNO R3 [4]: 인터넷 상에서 택배비 포함 1만원이면 살 수 있다. R3 아두이노 1개에 FDD를 보통 6개 연결할 수 있다. Sammy1Am 의 FAQ에 의하면, 디지털 입력핀 외의 나머지 아날로그 입력핀을 활용하여 9개까지 연결할 수 있다고 한다.
There are only enough digital pins for 7 drives, how do I connect 8?The analog pins on the Arduino Uno can be used as digital pins numbered 14-19. An Arduino Uno can support up to 9 drives.
- 파워 서플라이 1개 : FDD에 전원을 공급할 장치이며, 20핀 메인 전원 커넥터(나머지 4핀은 불필요)와 4핀 플로피 전원 커넥터, 4핀 주변장치 전원 커넥터(들)만 사용한다. 정격출력이 클 필요는 없지만 되도록 ON/OFF 스위치가 있는 것을 사용해야 하며, 묻지마 파워만큼은 조심하도록 하자.
(FDD 전원입력핀을 FDD의 핀들이 모두 보이는쪽에서 봤을때 가장 오른쪽 전원 입력 핀과 그 오른쪽에 있는 핀에 각각 +5V,GND만 걸어주면 사용 가능하다.)
- 암-수 점퍼 와이어 케이블 : FDD 1개 당 6개의 케이블이 들어간다. 또한 길이에 한계에 따른 연장선이 필요할 지 모르니 넉넉히 준비하는 것이 좋다.
(2) 보조품
- 빵판 : 케이블끼리 연결할 때 한데 모아서 선 정리하기도 좋고 알아보기도 쉽게 하기 위해서는 필요한 편이다.
- 수-수 점퍼 와이어 케이블 or 철사 + 전기테이프 : 20핀 메인 전원 커넥터나 일부 케이블의 연결시 필요하다. 철사와 전기테이프를 적절히 활용하여 만들어서 사용해도 된다.
- 4핀 보조전원 커넥터 - 4핀 플로피 전원 커넥터 : 일반적인 파워 서플라이에는 4핀 플로피 전원 커넥터가 1개 정도밖에 구성되어 있을 뿐이다. Moppy를 1개만 구성하려면 상관없지만, 2개 이상 구성하려면 4핀 보조전원 커넥터에 또 다른 4핀 FDD 커넥터를 별도로 구매해서 연결하여 사용해야 한다.
2.2 소프트웨어 구성
- 아두이노 소프트웨어 : 2016년 8월 현재 최신버전은 1.6.10 이다. 윈도우, 맥, 리눅스 각 운영체제에 해당하는 프로그램을 설치하면 된다.
- 아두이노를 컴퓨터에 연결한 뒤 소스 코드를 컴파일하여 아두이노에 업로드 시켜주는 프로그램이다. 아두이노가 연결되어 있지 않아도 컴파일은 가능하다.
- JDK 7u80 with NetBeans 8.0.2 : 미디 파일을 불러들여 Moppy를 작동시키도록 하는 프로그램이다. 각 운영체제에 맞게 설치하면 된다.
- 아두이노 Moppy
- Timer 1
- MoppyDesk
- RXTXcomm Serial Driver
- 미디 파일 : 각 트랙마다 화음이 아닌 단음으로 구성된 단일(혹은 다중) 트랙으로 구성되어 있어야 한다. 만약 한 트랙 안에 다중 화음으로 구성되어있다면 작동시킬 수 없으며, 일일이 단음 다중 트랙으로 편집해서 따로 만들어 사용해야 한다. 미디 파일의 옥타브 구성은 C1~B4 까지 4옥타브 내에서만 구현해야 하며, 특히 C1~B1까지는 제대로 들리지 않을 수 있다. 또한 너무 음의 차이가 급격하게 크거나 매우 짧은 시간에 음을 연주하면 씹힐 수도 있으니 실제로 재생시켰을 때 온전히 재생되지 않을 수 있다는 것을 고려해야 한다.
3 제작 방법
앞의 하드웨어와 소프트웨어가 충분히 갖추어졌다면, 아래의 순서대로 제작하면 된다. 문서 상단의 제작 강좌 링크를 참고하라.
1. 먼저 파워 서플라이의 20핀에서 초록선(14핀, PS-ON)과 검정선(17핀 등, Ground) 중 하나를 수-수 점퍼 케이블[5]로 연결한다. 이렇게 하면 파워를 켜고 끌 때까지 FDD에 전력이 공급된다.
2. 다음에는 FDD의 후면 34핀 중 어느 핀을 사용하는지 알아둬야 한다.
보통 Moppy에 사용할 수 있는 FDD는 후면부에 보면 3핀만 비어있고 나머지 33개의 핀은 살아있다. 그 중 11~12, 17~20핀만 사용한다.
34핀중 몇개가 생략된 FDD는 Drive Select (윗줄 6번째 핀)을 아랫줄 아무데나 연결시켜주면 된다.
아랫줄은 모두 GND이다. 모두 GND이니 핀을 생략 가능한것이므로 34핀 FDD가 아니라고 슬퍼하지는 말자.
2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 | 32 | 34 |
1 | 없음 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 | 25 | 27 | 29 | 31 | 33 |
- 11핀(Drive Select Ground)
- 12핀(Drive Select) : FDD에 전원이 공급되었을 때, 전면부의 전구에 신호가 들어간다. 11핀과 같이 연결만 시켜두면 된다.
- 17핀(Direction Ground)
- 18핀(Direction) : 17핀(접지)과 연결되면 헤더가 앞으로 이동되고, 떼면 헤더가 뒤로간다.
- 19핀(Step Ground)
- 20핀(Step)
아두이노 핀 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14(Ground) |
FDD 핀 | 없음 | 1D | 1S | 2D | 2S | 3D | 3S | 4D | 4S | 5D | 5S | 6D | 6S | 없음 |
17핀과 19핀은 Ground로, 아두이노의 Ground인 14핀과 같이 연결하면 되며, 18핀과 20핀은 각각 아두이노의 짝수/홀수 핀에 연결해야 한다. 가령 1번째 FDD의 18핀은 아두이노의 2번, 20핀은 아두이노의 3번 핀에 연결하는 식이다.[6]
FDD의 GND를 사실상 아두이노 GND에 연결할 필요는 없다. [7]
왜냐? 연결 안해도 작동은 잘만 된다.
18번 핀을 아두이노 2번, 20번 핀을 아두이노 3번핀에 연결만 해도 작동한다 (호옹이?!)
3. 파워 서플라이의 4핀 FDD 전원 커넥터와 각 FDD의 전원부를 연결한다. 2개 이상의 FDD는 4핀 보조전원 커넥터에 FDD를 추가로 연결할 수 있는 커넥터를 연결하여 전원부를 연결하면 된다. 2번째 FDD부터 최대 6번째 FDD도 위와 같이 연결하면 된다. 맨 마지막에 파워 서플라이의 전원을 켜고 아두이노를 컴퓨터에 연결하면 하드웨어의 구성이 완성된다.
4. 아두이노 소프트웨어를 운영체제에 맞게 설치한다.
5. Timer1을 다운로드한 뒤 Documents/Arduino/libraries 에 TimerOne 폴더로 압축해제한다. 경로는 보통 Documents/Arduino/libraries/TimerOne 로 되어있을 것이다.
6. Arduino Moppy를 다운로드한 뒤 Documents/Arduino 에 Moppy 폴더로 압축해제한다. 경로는 보통 Documents/Arduino/Moppy 로 되어있을 것이다.
7. 아두이노 소프트웨어를 실행시킨 뒤, 파일 - 스케치북 - Moppy 를 클릭하면 새 창으로 Moppy에 대한 소스가 불러들여지게 된다. 컴퓨터에 아두이노를 연결한 후, (→) 버튼(업로드)을 클릭하면 Moppy 소스가 아두이노로 컴파일되어 저장된다.
만일 실수로 특정 케이블이 아두이노 기판 위에 올라가 이상한 소리가 났다면, 저장된 내용이 손실되었을 수 있으니 이 업로드를 다시 한 번 하는 것을 권장한다.
8. JDK 7u80 with NetBeans 8.0.2 를 운영체제에 맞게 설치한다.
9. RXTXcomm Serial Driver를 다운로드하여 압축해제한 뒤, 운영체제에 맞게 설치해야 한다.
윈도우 64비트 운영체제를 기준으로 설명하자면, SerialDrivers/rxtx-2.1-7-bins-r2/Windows/ch-rxtx-2.2-20081207-win-x64 폴더에 있는 RXTXcomm.jar, rxtxParallel.dll, rxtxSerial.dll 3개의 파일을 각각 복사하여 C:/Program Files/Java 폴더 내에 붙여넣어야 한다. 각 경로는 다음과 같다.
- RXTXcomm.jar : C:/Program Files/Java/jdk1.7.0_80/jre/lib
- rxtxParallel.dll : C:/Program Files/Java/jdk1.7.0_80/jre/bin
- rxtxSerial.dll : rxtxParallel.dll 과 동일
이 때, JAVA의 최신 버전이 아니라 NetBeans의 호환 버전에 맞는 JDK 폴더에 붙여넣어야 함에 주의해야 한다. NetBeans는 7u80에 호환되므로, jdk1.7.0_80 폴더 내에 붙여넣어야 한다. 만일 7u80 버전이 없다면 먼저 설치하도록 하자.
10. NetBeans를 실행하여, File - Import Project - From Zip 을 클릭한다. 폴더를 자동으로 생성하는 것이기 때문에, Documents/NetBeansProjects 폴더가 자동으로 생성되며 Cancel 을 눌러 빠져나오면 된다.
11. MoppyDesk 를 다운로드한 뒤 앞서 자동으로 생성된 폴더에 압축해제한다. 경로는 보통 Documents/NetBeansProjects/MoppyDesk 로 되어있을 것이다.
12. 다시 NetBeans를 실행하여 이번에는 File - Open Project로 프로젝트를 열자. 목록에는 MoppyDesk가 있을 것이며, 우측 하단의 Open Project 버튼을 클릭하면 프로젝트가 로드되어있을 것이다. 상단의 초록색 (▷) 버튼(Run Project (MoppyDesk))을 눌러 실행시키도록 하자.
만일 MoppyDesk라는 JAVA 창이 생성되지 않았다면, 앞서 과정에서 누락된 것이 있을 수 있다. 아두이노에 소스코드를 업로드하지 않았거나, NetBeans에 호환되는 JAVA 폴더에 RXTX 파일들을 넣지 않았을 경우일 것이다. 다시 한 번 꼼꼼하게 살펴보길 바란다.
13. 이제 Connect를 눌러 아두이노와 FDD, 컴퓨터를 모두 연결시키도록 하자. 마지막으로 Load Sequence 버튼을 눌러 미디 파일을 불러온 뒤 Start 버튼을 누르면 Moppy가 연주될 것이다!
4 Moppy 전문 업로더
유튜브에 영상을 전문적으로 올리는 유저들이 몇 있다. 재미있는건 촬영자마다 플로피디스크 드라이브의 배치스타일이 다르다. 몇몇은 배치된것만 보면 '아 누구거네'할 수 있을 정도.
- Arganalth : 6개의 FDD와 2개의 HDD를 알루미늄 가방에 붙여놓고 촬영한다. 이전에는 그냥 한데 널브러지게 해놓고 촬영했었다.
정리 안 된 선만 봐도 어지럽다
- Gigawipf : 14개의 FDD와 1개의 HDD를 박스에 넣어 촬영한다.
- Iron LongJohn : 6개의 FDD와 2개의 HDD로 연주한 것을 촬영한다. 영상의 갯수는 적은 편.
- Mitch Sandoe : 한 나무칸에 8개씩 2쌍으로 FDD를 넣어서 촬영한다.
- MrSolidSnake745 : 드라이브를 2열로 각잡아서 나눠놓고, 뒤에 모니터로 관련된 영상을 띄워놓고 촬영한다.
- Sammy1Am : 앞서 밝혔지만, Moppy를 쉽게 만들 수 있게 해주었다. 4개의 드라이브를 썼을 때는 그냥 붙여두거나 살짝 겹춰 뒀었으며, 현재는 8개의 드라이브를 타원형으로 배치하고 자잘한 소품을 둔 형태로 둔다. 사실 Moppy 라는 축약어도 이분이 명명한 것. 그전에는 Musical Floppy Drives 혹은 Floppy Music 이라고 불리며 현재도 이쪽이 더 많이 쓰인다.
- Techdisk : 8개의 FDD를 2단의 제단처럼 쌓아서 연주한 것을 촬영한다. 8/16비트나 게임 배경음악을 주제로 다룬다.
- ↑ 국내의 한 Moppy 제작자는 중고 FDD를 수백개 이상 판매하는 곳에 문의했을 때 조건에 만족하는 FDD가 손에 꼽을 정도로 적었다고 한다.
- ↑ 일부 모델은 Moppy로 사용할 수 없는 경우도 있으니 필히 확인해야 한다. 국내에선 홀수 핀이 없는 경우가 더 많다.
- ↑ 다른 FFD와 달리 헤더가 없음에도 연주가 된다.
- ↑ 꼭 아두이노일 필요는 없다.
안 그러면 유튜브에 올라와 있는 FDD 12개 이상 연결해놓은 물건을 아두이노로 어떻게 구현할려고?능력이 되는 선에서 적절한 개발자보드만 있으면 충분히 자작 악기를 만들수 있다능력이 되는 한에서. 단지 여기서 설명하는 대로 만들려면 아두이노가 필요할 뿐이다. - ↑ 혹은 철사+전기테이프도 괜찮지만, 특히 쇼트 등에 유의해야하니 노출이 되지 않도록 잘 감아둬야 한다.
- ↑ Sammy1Am은 유튜브 자막으로 크나큰 실수를 저질렀다고 인정하며 수정된 내용을 덧붙였지만, 잘못 보고 배운 사람들이 틀린 그림 설명까지 그대로 배껴서 제작법을 올려놓았다. 실제로 만들어본 사람이라면 여기서 시행착오를 겪고 잘못되었다는 것을 깨달았을 것이다.
- ↑ 아두이노의 전원과 FDD 전원을 분리해서 쓰는경우 FDD 인터페이스 핀중 GND 핀을 아두이노쪽에 연결 안하면 동작이 안되거나 신호가 올바르게 가지 않아 오작동 하는 경우가 있다.