나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2026-06-13 06:21:37

Moppy

파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 == null
{{{#!if 넘어옴1[넘어옴1.length - 1] >= 0xAC00 && 넘어옴1[넘어옴1.length - 1] <= 0xD7A3
{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴1[넘어옴1.length - 1] < 0xAC00 || 넘어옴1[넘어옴1.length - 1] > 0xD7A3
은(는)}}}}}}{{{#!if 넘어옴2 != null
, ''''''{{{#!if 넘어옴3 == null
{{{#!if 넘어옴2[넘어옴2.length - 1] >= 0xAC00 && 넘어옴2[넘어옴2.length - 1] <= 0xD7A3
{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴2[넘어옴2.length - 1] < 0xAC00 || 넘어옴2[넘어옴2.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴3 != null
, ''''''{{{#!if 넘어옴4 == null
{{{#!if 넘어옴3[넘어옴3.length - 1] >= 0xAC00 && 넘어옴3[넘어옴3.length - 1] <= 0xD7A3
{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴3[넘어옴3.length - 1] < 0xAC00 || 넘어옴3[넘어옴3.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴4 != null
, ''''''{{{#!if 넘어옴5 == null
{{{#!if 넘어옴4[넘어옴4.length - 1] >= 0xAC00 && 넘어옴4[넘어옴4.length - 1] <= 0xD7A3
{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴4[넘어옴4.length - 1] < 0xAC00 || 넘어옴4[넘어옴4.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴5 != null
, ''''''{{{#!if 넘어옴6 == null
{{{#!if 넘어옴5[넘어옴5.length - 1] >= 0xAC00 && 넘어옴5[넘어옴5.length - 1] <= 0xD7A3
{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴5[넘어옴5.length - 1] < 0xAC00 || 넘어옴5[넘어옴5.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴6 != null
, ''''''{{{#!if 넘어옴7 == null
{{{#!if 넘어옴6[넘어옴6.length - 1] >= 0xAC00 && 넘어옴6[넘어옴6.length - 1] <= 0xD7A3
{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴6[넘어옴6.length - 1] < 0xAC00 || 넘어옴6[넘어옴6.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴7 != null
, ''''''{{{#!if 넘어옴8 == null
{{{#!if 넘어옴7[넘어옴7.length - 1] >= 0xAC00 && 넘어옴7[넘어옴7.length - 1] <= 0xD7A3
{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴7[넘어옴7.length - 1] < 0xAC00 || 넘어옴7[넘어옴7.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴8 != null
, ''''''{{{#!if 넘어옴9 == null
{{{#!if 넘어옴8[넘어옴8.length - 1] >= 0xAC00 && 넘어옴8[넘어옴8.length - 1] <= 0xD7A3
{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴8[넘어옴8.length - 1] < 0xAC00 || 넘어옴8[넘어옴8.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴9 != null
, ''''''{{{#!if 넘어옴10 == null
{{{#!if 넘어옴9[넘어옴9.length - 1] >= 0xAC00 && 넘어옴9[넘어옴9.length - 1] <= 0xD7A3
{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴9[넘어옴9.length - 1] < 0xAC00 || 넘어옴9[넘어옴9.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴10 != null
, ''''''{{{#!if 넘어옴10[넘어옴10.length - 1] >= 0xAC00 && 넘어옴10[넘어옴10.length - 1] <= 0xD7A3
{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴10[넘어옴10.length - 1] < 0xAC00 || 넘어옴10[넘어옴10.length - 1] > 0xD7A3
은(는)}}}}}} 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html 인피니트 스트라토스의 인터넷 팬 캐릭터}}}에 대한 내용은 [[못피]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[못피#s-1|1]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[못피#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
인피니트 스트라토스의 인터넷 팬 캐릭터: }}}[[못피]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[못피#s-1|1]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[못피#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}


1. 개요2. 재료
2.1. 하드웨어2.2. 소프트웨어
3. 제작 방법4. Moppy 전문 업로더

1. 개요



Sammy1Am / Moppy - GitHub: Sammy1Am Moppy 페이지
Make Your Own Musical Floppy Drive - YouTube: Sammy1Am 영상 제작 강좌
A very-well diagrammed English tutorial: 제작 강좌

Moppy(Musical Floppy Controller)는 마이크로컨트롤러를 활용하여 플로피 디스크 드라이브의 헤드를 움직이는 방식으로 음악 연주가 가능한 장치이다. 미디 파일을 컴퓨터 프로그램을 통하여 재생시키면 컴퓨터와 연결된 아두이노를 거쳐 각 FDD에 각 채널에 일정한 음의 길이 및 높낮이가 저장된 단음 신호를 전송하여 연주시킨다.

빠르게 돌아가는 디스크 드라이브의 헤드 소리 자체에서 자아내는 드르륵 소리를 활용한 연주라, 킥드럼이 수천 BPM 이상으로 늘어나서 높은 가청주파수 소리에 가까운 소리를 내는 엑스트라톤과 맥락상으로는 원리를 일부 공유하고 있다.

Sammy1Am을 비롯하여 이러한 연주 장치를 보다 쉽게 제작할 수 있도록 제작 강좌가 나와 있으며, 재료만 갖춰져 있다면 그다지 어렵지 않게 만들 수 있다.

비슷한 다른 것으로는 스테퍼 모터 음악 등이 있다. NEMA 규격 스테퍼 모터를 활용한 음악 스테퍼 모터가 들어간 구형 하드 디스크나 3D 프린터 등을 사용 가능하다. Moppy와 다른 점은 플로피 디스크의 경우 헤드가 디스크를 긁으며 소리가 나는 것인데, 스테퍼 모터는 모터 자체가 속도에 따라 다른 피치의 진동음을 낸다.[1] Device Orchestra 또한 유명한 편인데, 전동 칫솔처럼 주변에서 보기 쉬운 물건의 진동으로 음을 만들어내고, 또 딸깍대는 등의 각종 기계 작동 소음이나 다리미까지 퍼커션을 담당하는 등 색다른 음악을 연주한다.

2. 재료

2.1. 하드웨어

파일:external/googledrive.com/cbafb0a1ac41b0389c0a898a68647266.jpg

2.2. 소프트웨어

3. 제작 방법

하드웨어와 소프트웨어가 충분히 갖추어졌다면, 아래의 순서대로 제작하면 된다. 문서 상단의 제작 강좌 링크를 참고하자.
  1. 파워 서플라이의 20핀에서 초록선(14핀, PS-ON)과 검정선(17핀 등, Ground) 중 하나를 수-수 점퍼 케이블로 연결한다. 이렇게 하면 파워를 켜고 끌 때까지 FDD에 전력이 공급된다. 철사+전기테이프도 괜찮지만, 특히 쇼트 등에 유의해야 하니 노출이 되지 않도록 잘 감아둬야 한다.
  2. FDD의 후면 34핀 중 어느 핀을 사용하는지 알아둬야 한다. 보통 Moppy에 사용할 수 있는 FDD는 후면부에 보면 3핀만 비어 있고 나머지 33개의 핀은 살아 있다. 그 중 11~12, 17~20번 핀만 사용한다. 아랫줄은 모두 GND이다. 모두 GND이니 핀을 생략 가능하고 다른 GND 핀으로 대체 가능하므로 34핀 FDD가 아니라고 슬퍼하지는 말자.
    파일:external/connector.pinouts.ru/34%20pin%20IDC%20keyed%20male.gif
    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 1 Ground)
    • 12번 핀(Drive Select 1): 신호 레벨이 Ground일 때 플로피가 활성 상태인 것으로 인식되며 LED가 점등된다. 11번이나 다른 GND 핀[5]과 같이 연결만 시켜 두면 된다.
    • 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 없음

    12번 핀이 Ground에 연결되지 않았다면 전원이 인가되어도 플로피 드라이브가 작동하지 않을 수도 있다. 보통 IBM PC 호환기종용 플로피 드라이브는 DS1 핀만 물리적으로 연결되어 있지만, 위에서 언급된 TEAC FD-235를 포함한 일부 플로피 드라이브는 Drive Select 신호가 여러 개 살아 있어서 DS0 등 다른 핀도 물리적으로 연결되어 있고, 어떤 Drive Select 신호에 응답할지 점퍼로 선택해야 할 수도 있다. 이런 드라이브를 사용한다면 점퍼 설정을 통해서 DS1로 변경한 다음 12번 핀을 Ground에 연결하면 된다. 17번 핀과 19번 핀은 Ground로, 아두이노의 Ground인 14번 핀과 같이 연결하면 된다. 만약 17번이나 19번 핀이 없다면 다른 홀수 번 핀을 아두이노의 Ground에 연결해야 한다. 18번 핀과 20번 핀은 각각 아두이노의 짝수/홀수 핀에 연결해야 한다. 가령 1번째 FDD의 18번 핀은 아두이노의 2번, 20번 핀은 아두이노의 3번 핀에 연결하는 식이다. (또는 18번 핀을 아두이노의 3번, 20번 핀을 아두이노의 2번)[6]

    FDD의 GND를 아두이노 GND에 연결하지 않으면 그라운드 레벨이 달라져서 신호가 올바르게 가지 않아 동작이 안 되거나 오작동할 수도 있기 때문에 연결해 두어야 한다. 아두이노의 전원과 FDD 전원을 분리해서 쓰는 경우에는 필수적이다.
    파일:external/miguelduarte.pt/pinout.png
  3. 파워 서플라이의 4핀 FDD 전원 커넥터와 각 FDD의 전원부를 연결한다. 2개 이상의 FDD는 4핀 보조전원 커넥터에 FDD를 추가로 연결할 수 있는 커넥터를 연결하여 전원부를 연결하면 된다. 2번째 FDD부터 최대 6번째 FDD도 위와 같이 연결하면 된다. 맨 마지막에 파워 서플라이의 전원을 켜고 아두이노를 컴퓨터에 연결하면 하드웨어의 구성이 완성된다.
    1. 아두이노 소프트웨어를 운영체제에 맞게 설치한다.
    2. Timer1을 다운로드한 뒤 Documents/Arduino/libraries 에 TimerOne 폴더로 압축해제한다. 경로는 보통 Documents/Arduino/libraries/TimerOne 로 되어 있을 것이다.
    3. MoppyArduino를 다운로드한 뒤 압축을 해제하고 폴더 안의 Moppy.ino를 더블클릭해 아두이노 소프트웨어로 소스를 불러온다.
    4. 컴퓨터에 아두이노를 연결한 후, (→) 버튼(업로드)을 클릭하면 Moppy 소스가 아두이노로 컴파일되어 저장된다. 업로드가 완료되면 FDD에서 테스트용 소리가 날 것이다.
    5. MoppyControlGUI를 다운로드받아 압축 해제한 뒤, 내부의 bin폴더 안의 MoppyControlGUI.bat를 실행한다. 만약 실행되지 않는다면 Java를 설치한 뒤 다시 해보자.
    6. 제대로 실행되었다면 Moppy Control이라는 JAVA창이 뜰 것이고 우측 Network Bridges에서 아두이노가 연결된 COM포트를 선택하고 Load File을 눌러 다운로드받은 MIDI파일을 불러온다. 점 3개가 찍혀있는 모양의 재생버튼을 누르면 Moppy가 연주될 것이다.

4. Moppy 전문 업로더

유튜브에 영상을 전문적으로 올리는 유저들이 몇 있다. 재미있는 건 촬영자마다 플로피디스크 드라이브의 배치스타일이 다르다.

이외에도 많다. Floppy Drive Music 으로 검색해 보자.


[1] 3D 프린터가 출력을 할 때 잘 들어보면 위이잉 소리가 들리는데, 이것이 스테퍼 모터 특유의 소음이다. 피치가 높아서 끼이익거리는 노이즈같기도 하다. 직선으로 출력을 할 경우 속도가 일정해 같은 피치로 기계음을 내서 눈치채기 힘들고, 곡선 출력을 할 때 가장 눈에 띄는데, X축과 Y축을 담당하는 각 모터의 속도가 서서히 바뀌다 보니 피치가 서서히 바뀌는 오묘한 소리를 낸다.[2] 만약 정 못 구하겠다면 그냥 스테퍼 모터로 대체해도 된다. 애초에 원리 자체가 FDD에 달려 있는 스테퍼 모터를 제어해서 소리가 나게 만든 것이기 때문이다. 3D 프린터로 대체한 예시[3] 국내에선 홀수 핀이 없는 경우가 더 많다.[4] 비슷한 이름의 FD-235HG는 핀이 다 살아 있음에도 불구하고 연주가 안 된다는 보고가 있다.[5] 34핀 중 일부가 생략된 드라이브의 경우[6] Sammy1Am은 유튜브 자막으로 크나큰 실수를 저질렀다고 인정하며 수정된 내용을 덧붙였지만, 잘못 보고 배운 사람들이 틀린 그림 설명까지 그대로 배껴서 제작법을 올려놓았다. 실제로 만들어본 사람이라면 여기서 시행착오를 겪고 잘못되었다는 것을 깨달았을 것이다.[7] 2.0 시스템부터는 본인도 컴퓨터 하드웨어 오케스트라라고 칭하고 있기도 하다.[8] 참고로 이 경우 FDD 대당 8000원, HDD 개당 5000원, 스캐너 대당 50000원으로 계산하면 제어 시스템을 제외한 단순 재생기 가격만 약 4,500,000원이 나온다.