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

You are not allowed to 'diff'


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
Recent investments will yield a slight profit.


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.0020 sec