· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/MIDI-HOWTO

You are not allowed to 'info'


The Linux MIDI-HOWTO

The Linux MIDI-HOWTO

Phil Kerr

¼ÛÁÖ¼º

           
        

ÀÓÀºÀç

           
        

v1.10, 2002 4¿ù

ÀÌ ¹®¼­´Â ¸®´ª½º¿¡¼­ ¹Ìµð(MIDI)¸¦ »ç¿ëÇϴµ¥ ÇÊ¿äÇÑ ¼ÒÇÁÆ®¿þ¾î¿Í Çϵå¿þ¾î, ±×¸®°í ±× ÀýÂ÷µî¿¡ ´ëÇؼ­ ¼³¸íÇÏ¿´½À´Ï´Ù.

고친 과정
고침 v1.12002³â 4¿ù 24ÀÏ고친이 venal
1.1 ¾÷µ¥ÀÌÆ®
고침 v1.02002³â 2¿ù 1ÀÏ고친이 eunjea
1.0 ¹ø¿ª

1. ¼Ò°³

ÀÌ ¹®¼­´Â ´ÙÀ½ÀÇ ³»¿ëÀ» °¡Áö°í ÀÖ´Ù:

  • ¹Ìµð ÀÎÅÍÆäÀ̽º ¼³Á¤

  • ¹Ìµð ÆÄÀÏ ¿¬ÁÖ

  • ½ÃÄö½Ì (Sequencing)

  • ¿ÜºÎ ¹Ìµð Àåºñ Á¶ÀÛ

  • ¼ÒÇÁÆ®¿þ¾î »ç¿îµå ½Åµð»çÀÌÀú¿Í ¹Ìµð

  • ¹Ìµð ¼ÀÇà ÄÚµå


1.1. ¹®¼­ÀÇ ¸ñÇ¥

ÀÌ ¹®¼­ÀÇ ÃÊÁ¡Àº ¹Ìµð ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÑ ¿ÜºÎ ¹Ìµð ±â±âÀÇ »ç¿ëÀÌ´Ù.


2. ¹®¼­ÀÇ ÀúÀÛ±Ç

This HOWTO is copyrighted 2002 Phil Kerr.

This document is distributed under the terms of the GNU Free Documentation License. You should have received a copy along with it. If not, it is available from:

ÀÌ ¹®¼­ÀÇ ÀúÀÛ±ÇÀº GNU ÀÚÀ¯ ¹®¼­ GNU Free Documentation License¸¦ µû¸¥´Ù.

http://www.fsf.org/licenses/fdl.html.


3. ÃֽŠ¹®¼­

ÀÌ ¹®¼­ÀÇ °ø½Ä ¹öÀüÀº Linux Documentation Project <http://www.linuxdoc.org/>¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù.

°¡Àå ÃÖ½ÅÀÇ ¹®¼­´Â <http://www.midi-howto.com>¿¡ ÀÖ´Ù.

ÀÌ ¹®¼­ÀÇ ¸¶Áö¸· ¹ø¿ªº»Àº <http://kldp.org/~eunjea/>¿¡ ÀÖ´Ù.


4. °¨»çÀÇ ±Û

ÀÌ HOWTO´Â Hideki Saito°¡ ¾´ MIDI-SB mini-HOWTO¸¦ ±âÃÊ·Î ÇÏ¿´´Ù. ¹®¼­¸¦ ¸®´ª½º Ä¿¹Â´ÏƼ¿¡ °ø°³ÇÑ ±×¿¡°Ô °¨»çµå¸°´Ù.

ÀÌ ¹®¼­¿¡ Æ÷ÇÔµÈ ¼ÀÇà ÄÚµåµéÀº Linux Audio Developers (LAD) ¸ÞÀϸµ ¸®½ºÆ®¿¡ ±âÃÊÇÏ¿´´Ù. ¼Ò½º¸¦ »ç¿ëÇÏ°Ô ÇØ ÁØ ±×µé¿¡°Ô °¨»çµå¸°´Ù.


5. Ã¥ÀÓÀÇ ÇÑ°è

ÀÌ ¹®¼­ÀÇ Á¤º¸¸¦ ÀÌ¿ëÇÔÀ¸·Î½á »ý±æ ¼ö ÀÖ´Â À§ÇèÀº ¿©·¯ºÐ ½º½º·Î°¡ Ã¥ÀÓÁ®¾ß ÇÑ´Ù.

º» ÀúÀÚ´Â ¹®¼­ÀÇ ³»¿ëÀÌ ¾ß±âÇÒ ¼ö ÀÖ´Â ¾î¶°ÇÑ °á°ú¿¡ ´ëÇؼ­µµ Ã¥ÀÓÀ» ÁöÁö ¾Ê´Â´Ù.

ÀÌ ¹®¼­ÀÇ °³³ä, ¿¹Á¦, Á¤º¸µéÀ» ÀÌ¿ëÇÔÀ¸·Î½á »ý±â´Â À§ÇèÀº ÀüÀûÀ¸·Î ¿©·¯ºÐ ÀÚ½ÅÀÌ Ã¥ÀÓ Á®¾ß ÇÑ´Ù.

Ưº°È÷ ¸í½ÃÇÏÁö ¾ÊÀº ÀÌ»ó ¸ðµç ÀúÀÛ±ÇÀº ±×°ÍÀÇ ¼ÒÀ¯ÀÚ°¡ °¡Áö°í ÀÖ´Ù.

ÀÌ ¹®¼­¿¡¼­ »ç¿ëÇÑ ¿ë¾î´Â »óÇ¥±Ç¿¡ ´ëÇÑ Æ¯º°ÇÑ Çã°¡¸¦ ¹ÞÁö ¾Ê¾Ò´Ù.

´Ü¼øÈ÷ »óÇ°À̳ª »óÇ¥ÀÇ À̸§À» ºÎ¸£±â À§ÇØ »ç¿ëÇÒ ¶§´Â ½ÂÀÎÀ» ¹ÞÀ» ÇÊ¿ä°¡ ¾øÀ» °Í °°¾Æ¼­ÀÌ´Ù.

½Ã½ºÅÛ¿¡ ¼³Ä¡ Çϱâ Àü¿¡, ±×¸®°í ÀûÀýÇÑ °£°ÝÀ¸·Î ½Ã½ºÅÛÀ» ¹é¾÷ÇÒ °ÍÀ» °­·ÂÈ÷ ±ÇÇÏ´Â ¹ÙÀÌ´Ù.


6. ¹ÌµðÀÇ ¹è°æ(±âÃÊ)

¹Ìµð´Â Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾îÀÇ ÇÁ·ÎÅäÄÝ·Î ÀüÀÚ ¾Ç±âÀÇ Åë½Å¿¡ »ç¿ëµÈ´Ù. 1982³â°æ¿¡ ù¹ø° ¸±¸®Áî°¡ ÀÖ¾úÀ¸¸ç, »ç½Ç»ó ÀüÀÚ ¾Ç±âÀÇ Ç¥ÁØÀÌ µÇ¾ú´Ù. ÀÌ ÇÁ·ÎÅäÄÝÀº ÄÉÀ̺í°ú ¾Ç±â¸¦ À§ÇÑ ¹°¸®ÀûÀÎ Çϵå¿þ¾î º¯¼ö¸¦ Á¤ÀÇÇÏ°í, À½¾Ç, ŸÀÌ¹Ö Á¤º¸ µ¥ÀÌÅ͸¦ ±³È¯ÇÏ´Â Åë½Å ÇÁ·ÎÅäÄݵéÀ» Á¦°øÇÑ´Ù.

¹Ìµð ÀÌÀü¿¡´Â ¾Æ³¯·Î±×(ÈÄ¿¡´Â ±âÃÊÀûÀÎ µðÁöÅÐ ¹æ½Ä) Åë½Å ÇÁ·ÎÅäÄÝÀÌ »ç¿ëµÇ¾ú´Ù. 1974³â ÀÌÀü¿¡´Â Àü¼±À» ÅëÇÑ Àü±âÀûÀÎ ½ÅÈ£·Î °Ç¹ÝµéÀ» ¿¬°áÇß´Ù. 1980 - 1981³â ÀÌÈÄ, ·Ñ·£µå°¡ DCB¶ó´Â ±âº» µðÁöÅÐ ÇÁ·ÎÅäÄÝÀ» ¸¸µé¾ú´Ù. MIDI Manufacturers Association (MMA)ÀÌ Ç¥ÁØ ÇÁ·ÎÅäÄÝ°ú ¹°¸®ÀûÀÎ ¿¬°áÀ» Á¤ÀÇÇÔÀ¸·Î½á ±ÔÁ¤¿¡ µû¸£´Â ¸ðµç ¹Ìµð ±â±âµéÀÇ ¿¬°áÀÌ °¡´ÉÇÏ°Ô µÇ¾ú´Ù.

1985³â°æ ºÎÅÍ ¹Ìµð ÀÎÅÍÆäÀ̽º°¡ °¡Á¤¿ë ÄÄÇ»ÅÍ¿ëÀ¸·Î ³ª¿Ô°í °ð ½ÃÄö½Ì ÇÁ·Î±×·¥µéµµ µîÀåÇß´Ù.


7. ¹Ìµð ÀåÄ¡ ¼³Á¤

¹Ìµð ÀåÄ¡´Â »ç¿îµå Ä«µå¿¡ Æ÷ÇԵǰųª º°µµÀÇ ÀåÄ¡·Î Á¸ÀçÇÑ´Ù. ¿ÜºÎ ¹Ìµð ÀÎÅÍÆäÀ̽º´Â ½Ã¸®¾ó Æ÷Æ®³ª USB Æ÷Æ®¿¡ ¿¬°áµÇ±âµµ ÇÑ´Ù.

ù¹ø° °¡Àå Áß¿äÇÑ°ÍÀº ´ç½ÅÀÇ Ä«µå°¡ Áö¿øµÇ´Â °ÍÀÎÁö È®ÀÎÇÏ´Â °ÍÀÌ´Ù!

http://www.alsa-project.org/soundcards.php3

http://www.4front-tech.com/osshw.html

¸®´ª½º ¹èÆ÷º»ÀÇ ¼³Á¤À» º¯°æÇÏ¿© ¹Ìµð ÀåÄ¡µéÀ» ¼³Ä¡ÇÑ´Ù. °£´ÜÇÏ°Ô, ¸®´ª½º¸¦ Àß Áö¿øÇÏ´Â Ä«µåµéÀº OS¸¦ ¼³Ä¡ÇÒ ¶§ ¼³Á¤ÀÌ µÉ °ÍÀÌ´Ù.

¸®´ª½º Ä¿³ÎÀº OSS µå¶óÀ̹ö¿Í 2.5 ¹öÀü¿¡¼­´Â ALSA µå¶óÀ̹ö¸¦ °¡Áö°í ÀÖ´Ù. ´ëºÎºÐÀÇ ¹èÆ÷º»µéÀº »ç¿îµå Ä«µå ¼³Á¤À» À§ÇÑ ÅøÀ» Á¦°øÇϴµ¥, »ç¿îµå Ä«µåÀÇ ¹Ìµð Æ÷Æ®¸¦ »ç¿ëÇÑ´Ù¸é À̰͵µ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ·¹µåÇòÀº sndconfig, ¼ö¼¼´Â yast, ¸Çµå·¹ÀÌÅ©´Â DrakConf¸¦ »ç¿ëÇÑ´Ù.

¸¸¾à ÀÌ·± ÅøµéÀÌ ¹Ìµð ÀÎÅÍÆäÀ̽º¸¦ ¼³Á¤ÇÒ ¼ö ¾ø°Å³ª ¹®Á¦°¡ ÀÖ´Ù¸é ´ÙÀ½ ´Ü°è¸¦ µû¸¥´Ù:

lsmodÀÇ Ãâ·Â °á°ú°¡ ¹Ìµð °ü·Ã ¸ðµâÀ» Æ÷ÇÔÇÏ°í Àִ°¡? ´ÙÀ½Àº OSS ±â¹Ý ½Ã½ºÅÛ¿¡¼­ÀÇ ÀüÇüÀûÀÎ Ãâ·Â ¿¹ÀÌ´Ù.

[root@beatbox]# lsmod
Module                  Size  Used by
lockd                  32208   1  (autoclean)
sunrpc                 54640   1  (autoclean) [lockd]
autofs                  9456   2  (autoclean)
usb-ohci               12624   0  (unused)
usbcore                43632   1  [usb-ohci]
hisax                 470096   0  (autoclean) (unused)
isdn                  104208   0  (autoclean) [hisax]
slhc                    4544   0  (autoclean) [isdn]
eepro100               16144   1  (autoclean)

#---- »ç¿îµå Ä«µå °ü·Ã ¸ðµâ
    opl3                   11376   2 
    mad16                   7968   1 
    ad1848                 16848   1  [mad16]
    sb                     34752   1  [mad16]
    uart401                 6384   1  [mad16 sb]
    sound                  58368   0  [opl3 mad16 ad1848 sb uart401]

soundlow                 464   0  [sound]
soundcore               2800   6  [sb sound]
nls_cp437               3952   2  (autoclean)
vfat                    9408   1  (autoclean)
fat                    30432   1  (autoclean) [vfat]
ide-scsi                7664   0 

mpu401, olp3, uart401, oss¸¦ º¸¶ó.

USB ÀåÄ¡¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é USB ¸ðµâÀ» È®ÀÎÇÏ´Â °ÍÀ» ÀØÁö ¸»¶ó.

sndstat ÆÄÀÏÀ» È®ÀÎÇØ º»´Ù:

[root@beatbox]# cat /dev/sndstat 
OSS/Free:3.8s2++-971130
Load type: Driver loaded as a module
Kernel: Linux mega 2.2.17-21mdk #1 Thu Oct 5 13:16:08 CEST 2000 i686
Config options: 0

Installed drivers: 

Card config: 

Audio devices:
0: MAD16 WSS (82C930) (DUPLEX)

Synth devices:
0: Yamaha OPL3

Midi devices:
0: Mad16/Mozart

Timers:
0: System clock

Mixers:
0: MAD16 WSS (82C930)

¿©±â¼­ mad16ÀÌ ¹Ìµð ÀåÄ¡¶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ¸¸ç ÀÌ°ÍÀº À§ÀÇ lsmod Ãâ·Â¿¡¼­µµ º¼ ¼ö ÀÖ¾ú´Ù.

¸¸¾à ¹Ìµð¿Í °ü·ÃµÈ °ÍÀÌ ¾Æ¹«°Íµµ Ãâ·ÂµÇÁö ¾Ê´Â´Ù¸é /etc/modules.conf ÆÄÀÏÀ» È®ÀÎÇغ»´Ù.

[root@beatbox]# cat /etc/modules.conf
alias net-pf-4 ipx 
pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start 
alias usb-interface usb-ohci 
alias parport_lowlevel parport_pc 
alias block-major-11 scsi_hostadapter 
pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq 
alias scsi_hostadapter ide-scsi 
alias eth0 eepro100 
alias eth1 hisax 

#---- »ç¿îµå Ä«µå
    alias sound-slot-0 mad16 
    options sound dmabuf=1 
    alias midi opl3 
    options opl3 io=0x388 
    options sb support=1 
    options mad16 io=0x530 irq=5 dma=0 dma16=1 mpu_io=0x300 mpu_irq=7 joystick=1

´ÙÀ½Àº ¹Ìµð ¸ðµâÀÌ ·ÎµåµÇ¾úÀ»¶§ /proc/modules À» È®ÀÎÇÑ °á°úÀÌ´Ù.

[root@mega /proc]# cat modules
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)

#---- ¹Ìµð ÀåÄ¡
    0300-0303 : MPU-401 UART

0376-0376 : ide1
0388-038b : Yamaha OPL3
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0530-0533 : MAD16 WSS config
0534-0537 : MAD16 WSS
de00-de1f : Intel Speedo3 Ethernet
f000-f007 : ide0
f008-f00f : ide1

À§¿Í ºñ½ÁÇÑ °á°ú°¡ È®ÀεǾî¾ß ÇÑ´Ù. ±×·¸Áö ¾Ê´Ù¸é ¹Ìµð µå¶óÀ̹ö¸¦ ¼³Ä¡ÇؾßÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.

¸¸¾à ALSA 0.5x µå¶óÀ̹ö¸¦ »ç¿ëÇÒ °Í À̶ó¸é Valentijn Sessink°¡ ¾´ Alsa-sound-mini-HOWTO ¹®¼­¸¦ Âü°íÇÑ´Ù:

http://www.linuxdoc.org/HOWTO/mini/Alsa-sound.html

ALSA µå¶óÀ̹ö 0.9x ÀÌÈÄ ¹öÀüÀº Madhu MaddyÀÇ ALSA-HOWTO ¹®¼­¸¦ Àо¶ó.

http://www.alsa-project.org/alsa-doc/alsa-howto/


7.1. ALSA 0.9 ºü¸¥ ¼³Ä¡

¾Æ·¡´Â ALSA 0.9 µå¶óÀ̹ö¿Í ´ëºÎºÐÀÇ ¹Ìµð ÇÁ·Î±×·¥ÀÇ ¼³Ä¡¸¦ À§ÇØ ÇÊ¿äÇÑ ¶óÀ̺귯¸®µéÀ» ¼³Ä¡Çϱâ À§ÇÑ ¿¹½ÃÀÌ´Ù.

[root@beatbox] # tar jxvf alsa-driver....tar.bz2
[root@beatbox] # cd alsa-driver.....
[root@beatbox] # ./configure

messages - no errors

[root@beatbox] # make

messages - no errors

[root@beatbox] # make install

messages - no errors

[root@beatbox] # ./snddevices

ÀÌÁ¦ /etc/modules.conf ÆÄÀÏÀ» ÆíÁýÇϴµ¥, ´Ù¸¥ ¹èÆ÷º»¿¡¼­´Â ´Ù¸¥ µð·ºÅ丮¿¡ ÀÖÀ» ¼ö ÀÖ´Â ALSA ÆÄÀÏÀ» ÆíÁýÇÑ´Ù. ÆÄÀÏ¿¡´Â ¹Ìµð°¡ ¾Æ´Ñ ´Ù¸¥ ÀåÄ¡µéÀ» À§ÇÑ Á¤º¸µéµµ ÀÖÀ¸´Ï ÁÖÀÇÇؼ­ ´Ù·ç±â ¹Ù¶õ´Ù.

ÀϹÝÀûÀ¸·Î ¼³Á¤ ÆÄÀÏ¿¡´Â ALSA³ª OSS¸¦ À§ÇÑ ¿¹Àü ¼³Á¤µéÀÌ ÀûÇô ÀÖÀ» °ÍÀ̹ǷÎ, Áö¿ìµçÁö Ä¿¸ÇÆ® 󸮸¦ ÇϵçÁö ÇØ¾ß ÇÑ´Ù.

¾Æ·¡´Â OSS ±â¹ÝÀÇ ALSA ¼³Á¤À» À§ÇÑ ÀüÇüÀûÀÎ modules.conf ÆÄÀÏÀÌ´Ù.

alias char-major-116 snd
alias char-major-14 soundcore

alias snd-card-0 (MIDI/Sound card)
alias sound-slot-0 snd-card-0

alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-12 snd-pcm-oss

(MIDI/Sound card) ºÎºÐ¿¡ ÀûÇÕÇÑ Ä«µå À̸§À» Àû´Â´Ù. ÀÌ Á¤º¸´Â ALSA À¥»çÀÌÆ®¿¡¼­ ãÀ» ¼ö ÀÖ´Ù.

ÀÌÁ¦ ALSA ±â¹Ý ÇÁ·Î±×·¥µéÀ» ÀÌ¿ëÇϱâ À§ÇÑ ¶óÀ̺귯¸® ÆÄÀϵéÀ» ¼³Ä¡ÇؾßÇÑ´Ù. ÀÌ ÆÄÀϵéÀº alsa-libs ÆÐÅ°Áö¿¡ ÀÖ´Ù.

alsa-drivers ¿Í alsa-libs ÀÇ ½ÖÀ¸·Î ¸ÅÄ¡µÇ´Â °ÍÀ» È®ÀÎÇ϶ó!

[root@beatbox] # tar jxvf alsa-libs....tar.bz2
[root@beatbox] # cd alsa-libs.....
[root@beatbox] # ./configure

messages - no errors

[root@beatbox] # make

messages - no errors

[root@beatbox] # make install

ÀÌÁ¦ ¼³Á¤ÀÌ ³¡³µ´Ù :)

°£´ÜÇÑ C ÇÁ·Î±×·¥À¸·Î üũÇØ º¼ ¼ö ÀÖ´Ù. ÀÌ ÇÁ·Î±×·¥ÀÌ ÄÄÆÄÀÏµÇ°í ½ÇÇàµÇ¸é ½Ã½ºÅÛ ¼³Á¤ÀÌ Á¦´ë·Î µÈ °ÍÀÌ´Ù.

// ÀÌ·¸°Ô ÄÄÆÄÀÏÇ϶ó: gcc alsatest.c -o alsatest -lasound

#include <stdio.h>
#include <alsa/asoundlib.h>

int main (int argc, char *argv[])
{
  snd_seq_t *seq_handle;

  if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
    fprintf(stderr, "Error opening ALSA sequencer.\n");
    exit(1);
  }

printf("The ALSA libraries are installed.\n");
return 0;
}



7.2. Áö¿¬(Latency)

¹Ìµð´Â ½Ç½Ã°£ ÇÁ·ÎÅäÄÝ·Î latency´Â ½É°¢ÇÑ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù.

ÇöÀç ¸î¸î °³¹ßÀÚµéÀÌ ÀÌ°Í°ú °ü·ÃµÇ¾î ¸®´ª½º°¡ ¹Ìµð Ç÷§ÆûÀ¸·Î »ç¿ëÇϱâ ÀûÇÕÇϵµ·Ï Ä¿³Î ÇØÅ·À» ÇÏ°í ÀÖ´Ù.

±âÁ¸ÀÇ ¸®´ª½º Ä¿³Îµµ º° ¹«¸®¾øÀÌ »ç¿ë°¡´É ÇÏÁö¸¸ low-latency ÆÐÄ¡¸¦ Àû¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â ´ÙÀ½ ¸µÅ©¿¡¼­ ãÀ» ¼ö ÀÖ´Ù:

http://www.gardena.net/benno/linux/audio/


8. ¼ÒÇÁÆ®¿þ¾î

¸®´ª½º »ó¿¡¼­ ¹Ìµð¿¡ ´ëÇÑ °ü½ÉÀÌ ³ô¾ÆÁ® °¨¿¡ µû¶ó ¸¹Àº ¼ÒÇÁÆ®¿þ¾îµéÀÌ °³¹ßµÇ°í ÀÖÀ¸¹Ç·Î, ¿©±â¿¡¼­ ¸ðµç ¹Ìµð ¼ÒÇÁÆ®¿þ¾î¸¦ ´Ù·çÁö´Â ¸øÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸, ÀûÇÕÇÑ ¾îÇø®ÄÉÀ̼ÇÀ» °í¸£´Âµ¥ µµ¿òÀÌ µÉ°Í ÀÌ´Ù.

¸¸¾à ¿©±â¿¡ ³ª¿­µÇÁö ¾ÊÀº ¹Ìµð ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÁßÀ̰ųª ¾Ë°í ÀÖ´Ù¸é ÀúÀÚ¿¡°Ô ¾Ë·Á Áֱ⠹ٶõ´Ù.


8.1. µå¶óÀ̹ö

8.1.1. Alsa µå¶óÀ̹ö

Alsa (Advanced Linux Sound Architecture)´Â ¸î°¡Áö ºÎºÐÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ±× ù¹ø°´Â ¿ÏÀüÈ÷ ¸ðµâÈ­µÈ »ç¿îµå µå¶óÀ̹ö·Î ¸ðµâÀÇ ÀÚµ¿ ·Îµù, devfs, isapnp ¼³Á¤°ú ¾Æ³¯·Î±×/µðÁöÅÐ ¿Àµð¿À Á¢±Ù, ¹Í¼­, ½Åµð»çÀÌÀú, DSP, MIDI ¿Í ¿Àµð¿À Çϵå¿þ¾îÀÇ Å¸ÀÌ¹Ö ÄÜÆ®·Ñ·¯µîÀÌ´Ù. ¶ÇÇÑ ÀÌ°ÍÀº Ä¿³Î ¼öÁØÀÇ ½ÃÄö¼­¸¦ Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç, OSS/Free ¾îÇø®ÄÉÀ̼ǰú ȣȯµÇ°í, ¾îÇø®ÄÉÀÌ¼Ç (Ŭ¶óÀ̾ðÆ®/¼­¹ö, Ç÷¯±×ÀÎ, PCM °øÀ¯/¸ÖƼ Ç÷¢½Ì, PCM meteringµî)À» °´Ã¼ÁöÇâ C ¶óÀ̺귯¸®¿Í ALSA Ä¿³Î µå¶óÀ̹öÀÇ ±â´Éµé·Î Áö¿øÇÑ´Ù.

http://www.alsa-project.org/


8.1.2. OSS

OSS »ç¿îµå Ä«µå µå¶óÀ̹ö´Â ´ëºÎºÐÀÇ À¯¸íÇÑ »ç¿îµå Ä«µå¸¦ ¸®´ª½º¿Í FreeBSD¿¡¼­ Áö¿øÇÑ´Ù. ÀÌ µå¶óÀ̹ö´Â µðÁöÅÐ ¿Àµð¿À, ¹Ìµð, ½Åµð»çÀÌÀú, ¹Í¼­µéÀ» Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç, Open Sound System API¸¦ µû¸¥´Ù. OSS´Â »ç¿ëÀÚ ÆíÀÇÀÇ GUI¸¦ Á¦°øÇÏ¿© Æí¸®ÇÏ°Ô ¼³Ä¡¿Í ¼³Á¤À» ÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº 200 °¡Áö ÀÌ»óÀÇ »ç¿îµå Ä«µå¸¦ Áö¿øÇÏ°í ÀÚµ¿À¸·Î ÀνÄÇÑ´Ù. ¶ÇÇÑ Plug-n-Play¸¦ Áö¿øÇÏ°í PCI »ç¿îµå Ä«µå¿Í full duplex ¿Àµð¿À¸¦ Áö¿øÇÑ´Ù.

http://www.opensound.com/


8.1.3. Notemidi

Notemidi´Â ³ëÆ®ºÏ/·¦Å¾ ÄÄÇ»ÅÍÀÇ RS-232 ½Ã¸®¾ó Æ÷Æ®¸¦ »ç¿ëÇÑ ¹Ìµð Ãâ·Â µå¶óÀ̹öÀÌ´Ù. ³ëÆ®¹Ìµð´Â MIDIator MS-124W, ·Î·£µå »ç¿îµå ĵ¹ö½º ¸ðµâ, ¾ß¸¶ÇÏ MU-x ½Ã¸®Áî »ç¿îµå ¸ðµâ°ú »ç¿ë ÇÒ ¼ö ÀÖ´Ù.

http://www.michaelminn.com/linux/notemidi


8.2. ¹Ìµð ÆÄÀÏ ¿¬ÁÖ±â

8.2.1. KMid

KMid´Â ¸®´ª½º¿Í FreeBSD¸¦ À§ÇÑ X11 / KDE ±â¹ÝÀÇ ¹Ìµð ¿¬ÁÖ±âÀÌ´Ù. ÀÌ°ÍÀº °¡¶ó¿ÀÄÉ ÆÄÀÏÀÇ ÅؽºÆ®¸¦ Ç¥½ÃÇÏ°í »ö»óÀ» º¯È­½ÃÄÑ ½±°Ô µû¶ó ºÎ¸¦ ¼ö ÀÖ´Â ±â´Éµµ °¡Áö°í ÀÖ´Ù. KMid´Â /dev/sequencer¸¦ Ãâ·Â ÀåÄ¡·Î Áö¿øÇÏ¿© ½Åµð, AWE, FM, GUS Ä«µå¸¦ Áö¿øÇÑ´Ù.

http://perso.wanadoo.es/antlarr/kmid.html


8.2.2. Pmidi

Pmidi´Â °£´ÜÇÑ ¸í·ÉÇà ÇÁ·Î±×·¥À¸·Î ALSA ½ÃÄö¼­¸¦ ÅëÇØ ¹Ìµð ÆÄÀÏÀ» ¿¬ÁÖÇÑ´Ù.

http://www.parabola.demon.co.uk/alsa/pmidi.html


8.2.3. TiMidity++

TiMidity´Â ¹Ìµð - WAVE º¯È¯±â·Î, Gravis Ultrasound(*)-ȣȯ ÆÐÄ¡ ÆÄÀÏÀ» »ç¿ëÇÏ¿© ÀϹÝÀûÀÎ ¹Ìµð ÆÄÀÏÀ» µðÁöÅÐ ¿Àµð¿À µ¥ÀÌÅÍ·Î º¯È¯ÇØÁØ´Ù. ¿Àµð¿À µ¥ÀÌÅÍ´Â ¾î¶°ÇÑ ¼Ò¸® ÀåÄ¡¸¦ ÅëÇؼ­µµ ¿¬ÁÖµÉ ¼ö ÀÖÀ¸¸ç, µð½ºÅ©¿¡ ÀúÀåÇÒ ¼öµµ ÀÖ´Ù. ºü¸¥ ÄÄÇ»ÅÍ¿¡¼­´Â ½Ç½Ã°£À¸·Î ¿¬ÁÖ°¡ °¡´ÉÇÏ´Ù.

http://www.goice.co.jp/member/mo/timidity/


8.3. Sequencers

8.3.1. Brahms

Brahms´Â ½ÃÄö¼­¿Í À½¾Ç ±âº¸ ÇÁ·Î±×·¥À¸·Î ¾Çº¸-, ÇǾƳë·Ñ-, µå·³-, ¸¶½ºÅÍ Æ®·¢ ÆíÁý±â µîÀÇ ÆíÁý ¸ðµå¸¦ Á¦°øÇÑ´Ù. ¹ÌµðÀÇ ¼ö/ÃâÀÔ ¶ÇÇÑ Áö¿øÇϸç aRts-0.3.4 ¿Í »ç¿ëÇÏ¿© ¿þÀ̺ê ÆÄÀÏÀ» ¿¬ÁÖÇÏ°í ¼ÒÇÁÆ®¿þ¾î ½Åµð»çÀÌÀú·ÎÀÇ ¹Ìµð¹ö½º¸¦ »ç¿ëÇÑ ¹Ìµð À̺¥Æ® Ãâ·Âµµ °¡´ÉÇÏ´Ù.

KooBase·Îµµ ¾Ë·ÁÁ® ÀÖ´Ù.

http://brahms.sourceforge.net/


8.3.2. Anthem

AnthemÀº Áøº¸ÀûÀÎ ¿ÀÇ ¼Ò½º ¹Ìµð ½ÃÄö¼­ÀÌ´Ù. AnthemÀº ¼¼·ÃµÇ°í °´Ã¼ ÁöÇâÀûÀÎ ³ë·¡ ±â¹ýÀ» »ç¿ëÇÑ ³ìÀ½, ÆíÁý, ¿¬ÁÖµîÀÌ °¡´ÉÇÏ´Ù.

http://anthem.sourceforge.net/


8.3.3. Jazz++

JAZZ++´Â ¸®´ª½º¿Í À©µµ¿ì¸¦ À§ÇÑ ¹Ìµð ½ÃÄö¼­ÀÌ´Ù.

http://www.jazzware.com/cgi-bin/Zope.cgi/jazzware/


8.3.4. Linux Ultimate Music Editor

UltiMusE-LX (the Ultimate Music Editor)´Â ÀÛ°î ÇÁ·Î±×·¥À¸·Î ´ç½ÅÀÌ À½¾ÇÀ» ¾²´Âµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ´ç½ÅÀº ¸¶¿ì½º/Å°º¸µå·Î ¾Çº¸¸¦ ±×¸± ¼ö ÀÖÀ¸¸ç, ´ëºÎºÐÀÇ Ç¥ÁØ ±âº¸¹ýÀ» Áö¿øÇÏ°í, ¹Ìµð Àåºñ ÆÐÄ¡ º¯È¯, À̺¥Æ®, ¸®¾óŸÀÓ Å¬·°µîÀ» Áö¿øÇÑ´Ù.

http://hometown.aol.com/knudsenmj/myhomepage/umuselx.htm


8.3.5. Melys

Melys´Â Advanced Linux Sound Architecture (ALSA)¸¦ À§ÇÑ ¹Ìµð ½ÃÄö¼­ ¾îÇø®ÄÉÀ̼ÇÀÌ´Ù. Melys´Â ALSAÀÇ ½ÃÄö¼­ Áö¿øÀ» »ç¿ëÇϸç GNOME ȯ°æ¿¡¼­ ÀÛµ¿ÇÑ´Ù.

http://www.parabola.demon.co.uk/melys/


8.3.6. MidiMountain Sequencer

MidiMountainÀº Ç¥ÁØ ¹Ìµð ÆÄÀÏ ÆíÁý±âÀÌ´Ù. »ç¿ëÇϱ⠽¬¿î ÀÎÅÍÆäÀ̽º·Î ¹Ìµð ÆÄÀÏÀ» Ãʺ¸ÀÚµµ ½±°Ô ÆíÁýÇÏ°í ¸¸µé¼ö ÀÖÀ¸¸ç, ÇÇ¾Æ³ë ·Ñ¿¡¼­ ºÎÅÍ ¹ÙÀ̳ʸ® exclusive ¸Þ¼¼Áö±îÁö ¸ðµç Ç¥ÁØ ¹Ìµð ÇÁ·ÎÅäÄÝÀÇ ÆíÁýÀÌ °¡´ÉÇÏ´Ù.

http://www.midimountain.com/


8.3.7. MusE

MusE´Â Qt 2.1 ±â¹ÝÀÇ ¹Ìµð ½ÃÄö¼­·Î ³ìÀ½°ú ÆíÁýÀÌ °¡´ÉÇÏ´Ù. ½ÃÄö¼­°¡ ¿¬ÁÖÁß¿¡ À̺¥Æ®¸¦ ÇǾƳë·Ñ°ú ¾Çº¸ ÆíÁý±â¿¡¼­ ½Ç½Ã°£À¸·Î ¼öÁ¤ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ³ìÀ½µÈ ¹Ìµð À̺¥Æ®´Â ±×·ì°ú ºÎºÐÀ¸·Î Æí°î ¼öÁ¤±â¿¡¼­ ´Ù·ê ¼ö ÀÖ´Ù.

http://muse.seh.de/


8.3.8. Rosegarden

·ÎÁî°¡µçÀº ¹Ìµð ½ÃÄö¼­¿Í ¾Çº¸ ÆíÁý±âÀÌ´Ù.

http://www.all-day-breakfast.com/rosegarden/


8.4. MIDI Trackers

8.4.1. tektracker

ttrk (tektracker)´Â Æ®·¢Ä¿ÇüÀÇ ÆíÁý±â¸¦ °¡Áö°í ÀÖ´Â ÄÜ¼Ö¿ë ¹Ìµð ½ÃÄö¼­ÀÌ´Ù. ¹ÂÆ® ´ÜÃß¿Í ·çÇÁ Á¦¾î°¡ °¡´ÉÇÑ ¿¬Áֱ⸦ ³»ÀåÇÏ°í ÀÖ´Ù. ttrk´Â ¹Ìµð Ŭ·° ÆÞ½º¸¦ º¸³»´Â °Í°ú ½ÌÅ©°¡ °¡´ÉÇÏ´Ù.

http://div8.net/ttrk/


8.4.2. ShakeTracker

ShakeTracker´Â Æ®·¢Ä¿ ÀÎÅÍÆäÀ̽º¿Í ¿ÏÀüÇÑ ±â´ÉÀÇ ¹Ìµð ½ÃÄö¼­¸¦ ÁöÇâÇÑ´Ù. ÀÌ°ÍÀº ´ëºÎºÐÀÇ Æ®·¢Ä¿ È¿°ú¸¦ Àß Áö¿øÇϸç Impulse Æ®·¢Ä¿¸¦ »ç¿ëÇÏ´ø »ç¿ëÀÚµéÀº ½±°Ô ÀûÀÀÇÒ °ÍÀÌ´Ù.

http://reduz.com.ar/shaketracker/


8.5. µå·³ ÆíÁý±â

8.5.1. DrumPatterns

µå·³ÆÐÅÏÀº ¿ÀÇ ¼Ò½º·Î À¥ ÁöÇâÀûÀÎ µå·³ ÆÐÅÏ »ý¼º±âÀÌ´Ù. ÀÌ°ÍÀº µå·³ ÆÐÅÏ°ú Áøº¸ÀûÀÎ ¸®µëÀÇ ±âÃʵîÀ» °¡¸£Ä¡´Â ¸ñÀûÀ¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù. ¾Çº¸, ¹Ìµð·ÎÀÇ Ãâ·ÂÀÌ °¡´ÉÇÏ¸ç ¸î½Ã°£ ºÐ·®ÀÇ ¿¹Á¦¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù.

http://www.linux-france.org/prj/drumpatterns/index-en.html


8.6. ÆÐÄ¡ ÆíÁý±â

8.6.1. JSynthLib

JSynthLib´Â ÀÚ¹Ù·Î ¾º¿©Áø ¿ÀÇ ¼Ò½º ½Åµð»çÀÌÀú ÆÐÄ¡ ÆíÁý±â / ¶óÀ̺귯¸®¾ÈÀÌ´Ù.


8.7. ¼ÒÇÁÆ®¿þ¾î ½Åµð

Spiral Synth´Â Æú¸®Æ÷´Ð ¾Æ³¯·Î±× ½Åµð»çÀÌÀú¸¦ ¸ðµ¨·Î ÇÏ¿©, ¾Æ³¯·Î±× ½Åµð»çÀÌÀúÀÇ ¼Ò¸®³ª ÀâÀ½À» ¸¸µé¾î ³¾ ¼ö ÀÖ´Ù. ¶ÇÇÑ ´ç½ÅÀº ÀÌ°ÍÀ» »ç¿ëÇÏ¿© ÀÌ»óÇÑ ¼Ò¸®¸¦ ¸¸µé¾î ³¾ ¼öµµ ÀÖ´Ù. ¹Ìµð¸¦ Áö¿øÇÏ°í Ç¥ÁØ OSS/Free ¼Ò¸® Ãâ·Â (/dev/dsp)¸¦ »ç¿ëÇÑ´Ù.

http://www.pawfal.org/SpiralSynth/


8.7.1. UltraMaster Juno-6

UltraMaster Juno-6´Â Roland Juno-6 Æú¸®Æ÷´Ð ½Åµð»çÀÌÀú¸¦ ÀçÇöÇÑ ¼ÒÇÁÆ®¿þ¾îÀÌ´Ù. 80³â´ë ÃÊ ½ºÅ¸ÀÏÀÇ arpeggiator, ÄÚ·¯½º¸¦ ½Ç½Ã°£ 64ºñÆ® ³»Àå ULTRANALOG ¿þÀ̺ê ÇÕ¼ºÀ½À¸·Î Áö¿øÇϸç, 100°³ ÀÌ»óÀÇ ÀڽŸ¸ÀÇ ÆÐÄ¡¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Ù. ¸ðµç º¯¼öµéÀº GUI¿Í ¿ÜºÎ ¹Ìµð ÄÜÆ®·Ñ·¯¸¦ ÅëÇØ ½Ç½Ã°£À¸·Î Á¶Àý °¡´ÉÇÏ´Ù.

http://www.ultramaster.com/juno6/index.html


8.8. Ç÷¯±×ÀÎ

8.8.1. xmms-midi

x11amp¸¦ À§ÇÑ ¹Ìµð ÆÄÀÏ Áö¿ø (timidity »ç¿ë). ¼³Á¤ ´Ùµð¾ó·Î±× âÀ» ÅëÇØ Çã¼úÇÑ ¹Í¼­ ÀÎÅÍÆäÀ̽º°¡ Á¦°øµÈ´Ù.

http://ban.joh.cam.ac.uk/~cr212/xmms-midi/


8.9. °³¹ß

8.9.1. sfront

Sfont´Â ´É·üÀûÀÎ C ÇÁ·Î±×·¥À¸·Î MPEG 4 ±¸Á¶¸¦ °¡Áö´Â ¿Àµð¿À (MP4-SA) ºñÆ®½ºÆ®¸²À» Áö¿øÇÑ´Ù. MP4-SA´Â algorithmic »ç¿îµåÀÇ Ç¥ÁØÀ¸·Î ¿Àµð¿À ½Ã±×³Î ÇÁ·Î¼¼½Ì ¾ð¾î (SAOL)°ú ¾Çº¸ ¾ð¾î(SASL°ú ÀüÅëÀûÀÎ ¹Ìµð ÆÄÀÏ Æ÷¸Ë)·Î ÀÌ·ç¾îÁø´Ù. sfont´Â ¸®´ª½º »ó¿¡¼­ ½Ç½Ã°£, low-latency ¿Àµð¿À ÀÔ/Ãâ·Â, »ç¿îµå Ä«µå·Î ºÎÅÍ ·ÎÄà ¹Ìµð ÀԷ°ú RTP ¿Í SIP¸¦ »ç¿ëÇÑ ³×Æ®¿öÅ©»óÀÇ ¹Ìµð ÀÔ·ÂÀ» Áö¿øÇÑ´Ù. MP4-SA¿¡ °üÇÑ ¹®¼­¸¦ À¥ »çÀÌÆ®¿¡¼­ ÀÐÀ» ¼ö ÀÖ´Ù.

http://www.cs.berkeley.edu/~lazzaro/sa/index.html


8.9.2. jMax

jMax´Â dataflow circuitÀ» µðÀÚÀÎÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ±âº» µ¥ÀÌÅÍ Çü½ÄÀº integers, symbols, listsµîÀÌ »ç¿ëµÉ ¼ö ÀÖÀ¸¸ç, ÀÌ°ÍÀº À̺¥Æ®-µå¶óÀÌºì ½Ã½ºÅÛÀ¸·Î ¹Ìµð 󸮿¡ »ç¿ë µÈ´Ù. µÎ¹ø° ½Ã½ºÅÛ ºÎºÐ(DSP)´Â circuitÀÇ ½Ã±×³Î È帧À» Áö¼ÓÇÏ°Ô ÇØÁÖ¸ç, ÀÌ°ÍÀº PCM »ç¿îµå(¿¹: ¸¶ÀÌÅ©·ÎÆù, ¼Ò¸® ÆÄÀϵî)¿¡¼­ ¸Å¿ì À¯¿ëÇÏ´Ù. ½Ã½ºÅÛÀº µ¿Àû ¶óÀ̺귯¸®¿¡ ÀÇÇØ È®ÀåÀÌ °¡´ÉÇÏ°í, ´ç½ÅÀº µ¥ÀÌÅÍ ÇÁ·Î¼¼¼­, µ¥ÀÌÅÍ Çü, GUI ¿ä¼Ò, µð¹ÙÀ̽º Çü½ÄµîÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Ù. µ¥ÀÌÅÍ ÇÁ·Î¼¼¼­´Â circuit¿¡ µû¶ó µðÀÚÀεǰí Àç »ç¿ëÇÒ ¼ö ÀÖ´Ù.

http://www.ircam.fr/equipes/temps-reel/jmax/


8.9.3. TSE3

TSE3´Â C++·Î ¾º¿©Áø °­·ÂÇÑ ¿ÀÇ ¼Ò½º ½ÃÄö¼­ ¿£ÁøÀÌ´Ù. ÀÌ°ÍÀÌ '½ÃÄö¼­ ¿£Áø'ÀÎ ÀÌÀ¯´Â À¯Àú ÀÎÅÍÆäÀ̽º°¡ ¾ø±â ¶§¹®ÀÌ´Ù. ½ÃÄö¼­ ¾îÇø®ÄÉÀÌ¼Ç ¶Ç´Â ¸ÖƼ¹Ìµð¾î ÆÐÅ°Áö´Â TSE3 ¶óÀ̺귯¸®¿Í ¿¬°áµÇ¾î »ç¿ëÀÚ¿¡°Ô ¹Ìµð ½ÃÄö½Ì ±â´ÉÀ» Á¦°øÇÒ ¼ö ÀÖ´Ù.

http://TSE3.sourceforge.net/


8.9.4. KeyKit

KeyKitÀº ´ÙÁß Ã³¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î 󸮱â (awk¿¡¼­ ¿µ°¨À» ¾òÀº)·Î ½Ç½Ã°£, algorithmic ¹Ìµð Á¶ÀÛ¿¡ ¾²ÀÏ ¼ö ÀÖ´Ù. KeyKitÀÇ GUI´Â ÀÌ·¯ÇÑ algorithmic À½¾Ç ½ÇÇèÀ» À§ÇÑ µµ±¸¸¦ Á¦°øÇϸç, ´ÙÁß Æ®·¢ ½ÃÄö¼­¿Í µå·³ ÆÐÅÏ ÆíÁý±â¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. GUI¿Í µµ±¸µéÀº ¸ðµÎ KeyKit ¾ð¾î ÀÚü·Î ¾º¿©Á® ÀÖ´Ù. ÀÌ°ÍÀº »ç¿ëÀÚ°¡ Á÷Á¢ »õ·Î¿î µµ±¸¸¦ Ãß°¡ ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

http://nosuch.com/keykit/


9. ¹Ìµð °³¹ß

¹Ìµð ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀ» À§Çؼ± ÁÁÀº ¿¹Á¦µéÀÌ Á¾Á¾ ÇÊ¿äÇÏ´Ù. For those looking to develop MIDI applications, good examples are often needed to get you started.

´ÙÀ½ÀÇ ¿¹Á¦µéÀº LAD ¸ÞÀϸµ ¸®½ºÆ®¿¡ ¿¹Á¦³ª ¹®¼­/Âü°íÀÚ·á·Î Æ÷½ºÆà µÆ´ø °ÍµéÀÌ´Ù. The following examples were posted to the LAD mailing list in a thread about examples and documentation/tutorials.

¾Æ·¡´Â Dr. Matthias NagorniÀÇ ALSA 0.9 ½ÃÄö¼­ Ŭ¶óÀ̾ðÆ® ¼ÀÇÃÀÌ´Ù. ÀÌ°ÍÀº ÀÔ·Â °¡´ÉÇÑ(writeable) ½ÃÄö¼­ Ŭ¶óÀ̾ðÆ®¸¦ ¸¸µé°í, Pitchbender-, 7-Bit Controller-, Note-event µéÀ» stderr¸¦ ÅëÇØ Ãâ·ÂÇÑ´Ù.

´õ ¸¹Àº ¿¹Á¦µéÀ» ÀÌ ¹®¼­ÀÇ ¸µÅ© ¼½¼Ç¿¡ ÀÖ´Â MatthiasÀÇ »çÀÌÆ®¸¦ ÅëÇØ ÀÔ¼öÇÒ ¼ö ÀÖ´Ù.

´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏÇ϶ó:

[phil@beatbox] $ gcc seqdemo.c -o seqdemo -lasound


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <alsa/asoundlib.h>

snd_seq_t *open_seq();
void midi_action(snd_seq_t *seq_handle);

snd_seq_t *open_seq() {

  snd_seq_t *seq_handle;
  int portid;

  if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
    fprintf(stderr, "Error opening ALSA sequencer.\n");
    exit(1);
  }
  snd_seq_set_client_name(seq_handle, "ALSA Sequencer Demo");
  if ((portid = snd_seq_create_simple_port(seq_handle, "ALSA Sequencer Demo",
            SND_SEQ_PORT_CAP_WRITE|SND_SEQ_PORT_CAP_SUBS_WRITE,
            SND_SEQ_PORT_TYPE_APPLICATION)) < 0) {
    fprintf(stderr, "Error creating sequencer port.\n");
    exit(1);
  }
  return(seq_handle);
}

void midi_action(snd_seq_t *seq_handle) {

  snd_seq_event_t *ev;

  do {
    snd_seq_event_input(seq_handle, &ev);
    switch (ev->type) {
      case SND_SEQ_EVENT_CONTROLLER: 
        fprintf(stderr, "Control event on Channel %2d: %5d       \r",
                ev->data.control.channel, ev->data.control.value);
        break;
      case SND_SEQ_EVENT_PITCHBEND:
        fprintf(stderr, "Pitchbender event on Channel %2d: %5d   \r", 
                ev->data.control.channel, ev->data.control.value);
        break;
      case SND_SEQ_EVENT_NOTEON:
        fprintf(stderr, "Note On event on Channel %2d: %5d       \r",
                ev->data.control.channel, ev->data.note.note);
        break;        
      case SND_SEQ_EVENT_NOTEOFF: 
        fprintf(stderr, "Note Off event on Channel %2d: %5d      \r",         
                ev->data.control.channel, ev->data.note.note);           
        break;        
    }
    snd_seq_free_event(ev);
  } while (snd_seq_event_input_pending(seq_handle, 0) > 0);
}

int main(int argc, char *argv[]) {

  snd_seq_t *seq_handle;
  int npfd;
  struct pollfd *pfd;
    
  seq_handle = open_seq();
  npfd = snd_seq_poll_descriptors_count(seq_handle, POLLIN);
  pfd = (struct pollfd *)alloca(npfd * sizeof(struct pollfd));
  snd_seq_poll_descriptors(seq_handle, pfd, npfd, POLLIN);
  while (1) {
    if (poll(pfd, npfd, 100000) > 0) {
      midi_action(seq_handle);
    }  
  }
}

¾Æ·¡´Â Nick Dowell °¡ ¸¸µç ALSA 0.9 MIDI ¸®´ÙÀÌ·ºÅÍ(redirector) ÀÌ´Ù.

/* ALSA Sequencer MIDI redirector.
   ÀÎDzÀ» ¹Ìµð ä³ÎÀ» ÅëÇØ ¼³Á¤µÈ ¾Æ¿ôDzÀ¸·Î ¸®´ÙÀÌ·ºÆ®ÇÑ´Ù.
   (Linux-Audio-Dev ¿¡¼­ Nathaniel Virgo ¿¡°Ô¼­ ¿äû¹ÞÀº °ÍÀÓ ;-)
   Dr. Matthias Nagorni ÀÇ ALSA seq ¿¹Á¦¸¦ ±âÃÊ·Î ÇßÀ½
   
   Nick Dowell <nixx@nixx.org.uk>
   */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <alsa/asoundlib.h>

int
main()
{
  snd_seq_t *seq_handle;
  snd_seq_event_t *ev;
  int i;
  int portid;              /* input port */
  int oportid[16];         /* output ports */
  int npfd;
  struct pollfd *pfd;
  char txt[20];

  if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
    fprintf(stderr, "Error opening ALSA sequencer.\n");
    exit(1);
  }

  snd_seq_set_client_name(seq_handle, "MIDI Redirect");
  
  /* open one input port */
  if ((portid = snd_seq_create_simple_port
       (seq_handle, "Input",
        SND_SEQ_PORT_CAP_WRITE | SND_SEQ_PORT_CAP_SUBS_WRITE,
        SND_SEQ_PORT_TYPE_APPLICATION)) < 0) {
    fprintf(stderr, "fatal error: could not open input port.\n");
    exit(1);
  }
  /* open 16 output ports for the MIDI channels */
  for (i=0; i<16; i++){
    sprintf( txt, "MIDI Channel %d", i );
    if ((oportid[i] = snd_seq_create_simple_port
         (seq_handle, txt,
          SND_SEQ_PORT_CAP_READ | SND_SEQ_PORT_CAP_SUBS_READ,
          SND_SEQ_PORT_TYPE_APPLICATION)) < 0) {
      fprintf(stderr, "fatal error: could not open output port.\n");
      exit(1);
    }
  }

  npfd = snd_seq_poll_descriptors_count(seq_handle, POLLIN);
  pfd = (struct pollfd *)alloca(npfd * sizeof(struct pollfd));
  snd_seq_poll_descriptors(seq_handle, pfd, npfd, POLLIN);

  while (1)  /* main loop */
    if (poll(pfd, npfd, 1000000) > 0){
      do {
        snd_seq_event_input(seq_handle, &ev);
        snd_seq_ev_set_source( ev, oportid[ev->data.control.channel] );
        snd_seq_ev_set_subs( ev );
        snd_seq_ev_set_direct( ev );
        snd_seq_event_output_direct( seq_handle, ev );
        snd_seq_free_event(ev);
      } while (snd_seq_event_input_pending(seq_handle, 0) > 0);
    }
  return 0;
}

¾Æ·¡´Â Craig Stuart SappÀÌ ÀÛ¼ºÇÑ, OSSÀÇ /dev/midi ÀÎÅÍÆäÀ̽º¿¡ µ¥ÀÌÅ͸¦ º¸³»´Â ¿¹Á¦ÀÌ´Ù.

´õ ¸¹Àº ¿¹Á¦µéÀ» ÀÌ ¹®¼­ÀÇ ¸µÅ© ¼½¼Ç¿¡ ³ª¿Í ÀÖ´Â Craig ÀÇ »çÀÌÆ®¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù.

//
// Programmer:    Craig Stuart Sapp [craig@ccrma.stanford.edu]
// Creation Date: Mon Dec 21 18:00:42 PST 1998
// Last Modified: Mon Dec 21 18:00:42 PST 1998
// Filename:      ...linuxmidi/output/method1.c
// Syntax:        C 
// $Smake:        gcc -O -o devmidiout devmidiout.c && strip devmidiout
//

#include <linux/soundcard.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

int main(void) {
   char* device =  "/dev/midi" ;
   unsigned char data[3] = {0x90, 60, 127};

   // step 1: open the OSS device for writing
   int fd = open(device, O_WRONLY, 0);
   if (fd < 0) {
      printf("Error: cannot open %s\n", device);
      exit(1);
   }

   // step 2: write the MIDI information to the OSS device
   write(fd, data, sizeof(data));

   // step 3: (optional) close the OSS device
   close(fd);

   return 0;
}


10. À¯¿ëÇÑ ¸µÅ©

´ÙÀ½Àº ¸®´ª½º¿Í ¹Ìµð¿Í °ü·ÃµÈ ¸µÅ©µéÀÌ´Ù.

http://www.bright.net/~dlphilp/linuxsound/ ¸®´ª½º¿ë »ç¿îµå & ¹Ìµð ¼ÒÇÁÆ®¿þ¾î. ¹Ìµð¿Í ¿Àµð¿À °ü·Ã Á¤º¸°¡ dzºÎÇÏ´Ù.

http://www.linuxdj.com/audio/lad/ ¸®´ª½º ¿Àµð¿À °³¹ßÀÚ ¸ÞÀϸµ ¸®½ºÆ®. °³¹ß¿¡ °üÇÑ ³íÀǵéÀÌ ÀÖÀ½.

http://www.linuxdj.com/audio/quality ¸®´ª½º ¿Àµð¿À À½Áú HOWTO. ¹Ìµð Ä«µå¿Í ¸®´ª½º ¿Àµð¿À ½ºÆ©µð¿À¸¦ ¸¸µå´Âµ¥ µµ¿òÀÌ µÈ´Ù.

http://www.alsa-project.org/ Alsa ÇÁ·ÎÁ§Æ® - Audio/MIDI Driver

http://www.4front-tech.com/ OSS - Audio/MIDI Driver

http://www.gardena.net/benno/linux/audio/ Low Latancy ÆÐÄ¡

http://ccrma-www.stanford.edu/~craig/articles/linuxmidi/ ¸®´ª½º¿¡¼­ÀÇ ¹Ìµð ÇÁ·Î±×·¡¹Ö ¼Ò°³. Craig Stuart Sapp´Â OSS µå¶óÀ̹ö¸¦ À§ÇØ C/C++¸¦ »ç¿ëÇÑ ±âÃÊÀûÀÎ ¹Ìµð À¯Æ¿¸®Æ¼µé¿¡ ´ëÇØ Á¤º¸¸¦ Á¦°øÇÏ°í ÀÖ´Ù.

http://www.suse.de/~mana Dr. Matthias NagorniÀÇ ALSA 0.9 ¹Ìµð¿Í PCM ¿¡ °üÇÑ C ÇÁ·Î±×·¥ ¿¹Á¦¸ðÀ½.


11. Çǵå¹é

ÀÌ HOWTO´Â °è¼Ó ÁøÇàÁßÀÌ´Ù. ¸®´ª½º»ó¿¡¼­ÀÇ »õ·Î¿î ¶Ç´Â °³¹ßÁßÀÎ ¹Ìµð °ü·Ã ¾îÇø®ÄÉÀ̼ǿ¡ °üÇÑ Á¤º¸´Â ȯ¿µÇÑ´Ù.

¹Ìµð Ä«µå´Â ¸Å¿ì ´Ù¾çÇϸç, ¾î¶² °æ¿ì¿¡´Â ¼³Á¤¿¡ ¾î·Á¿òÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. Á¤º¸¸¦ ã¾Æ º¼ ¼ö ÀÖ´Â °¡Àå ÁÁÀº °÷Àº ´º½º ±×·ì°ú ¸®´ª½º ¿Àµð¿À ¸ÞÀϸµ ¸®½ºÆ®ÀÌ´Ù.


12. ¿ªÀÚ Ãß°¡

¿ªÀÚ´Â MPU-401 ÀÎÅÍÆäÀ̽º¿Í ½Åµð»çÀÌÀú »ç¿îµå ¸ðµâµé, ±âŸ ÇÁ·Î¼¼¼­µîÀ» °¡Áö°í Àִµ¥ ¾ó¸¶ Àü±îÁö¸¸ Çصµ ¸®´ª½º¿¡¼­´Â ¾µ¸¸ÇÑ ÇÁ·Î±×·¥ÀÌ ¾ø¾î¼­ À©µµ¿ì¿¡¼­ ÄÉÀÌÅ© ¿öÅ©³ª Å¥º£À̽º¸¦ »ç¿ëÇß¾ú½À´Ï´Ù. ÇÏÁö¸¸, Áö±ÝÀº ¿ÀÇ ¼Ò½ºÀÇ ºü¸¥ ¹ßÀüÀ¸·Î ÀÌ ¸ðµç°ÍÀÌ ¸ðµÎ ¸®´ª½º¿¡¼­µµ °¡´ÉÇÏ°Ô µÇ¾ú½À´Ï´Ù. :)

Çѱ۷Π¹ø¿ªÇÏÁö ¾Ê°í ±×´ë·Î ¿µ¹®À» ¿Å°Ü ¾´ ºÎºÐÀº ±×°ÍÀÌ ´õ ÀÌÇØÇϱ⠽¬¿ï °ÍÀ̶ó°í »ý°¢Ç߱⠶§¹®ÀÔ´Ï´Ù. ¹Ìµð¿Í °ü·Ã Àåºñ¸¦ ´Ù·ç¾î º¸½Å ºÐµéÀº ´Ù ÀÌÇØÇÏ½Ç °ÍÀ̶ó°í »ý°¢ÇÕ´Ï´Ù. ;)

ÀÌ ¹®¼­ÀÇ ¸¶Áö¸· ¹ø¿ªº»Àº http://kldp.org/~eunjea/¿¡ ÀÖÀ¸¸ç ¿À·ù/¼öÁ¤ »çÇ×Àº ·Î ¾Ë·Á ÁÖ¼¼¿ä.

MIDI : Musical Instrument Digital Interface


ID
Password
Join
Stop searching forever. Happiness is just next to you.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:29
Processing time 0.0022 sec