  The Linux MIDI-HOWTO
  By Phil Kerr, phil@plus24.com
  v1.20, May 2002
  {: щT, zap032161@nifty.ne.jp
  v1.20j, 20 Dec 2003

  ̕ɂ Linux  MIDI t쐬̂ɕKvȃn[hEFA
  \tgEFAт̎菇LqĂ܂B
  ______________________________________________________________________

  ڎ

  1. ͂߂
  2. ̒̕쌠
  3. ǂł̕ł邩
  4. ӎ
  5. Ɛ
  6. MIDI ɂĂ̗\m
  7. MIDI foCX̐ݒ
     7.1 ALSA 0.9 ̎葁CXg[@
     7.2 CeV

  8. \tgEFA
     8.1 hCo
        8.1.1 Alsa hCo
        8.1.2 OSS
        8.1.3 Notemidi
     8.2 MIDI t@CvC[
        8.2.1 KMid
        8.2.2 Pmidi
        8.2.3 TiMidity++
     8.3 V[PT
        8.3.1 Brahms
        8.3.2 Anthem
        8.3.3 Jazz++
        8.3.4 Linux Ultimate Music Editor
        8.3.5 Melys
        8.3.6 MidiMountain Sequencer
        8.3.7 MusE
        8.3.8 Rosegarden
     8.4 MIDI gbJ[
        8.4.1 tektracker
        8.4.2 ShakeTracker
     8.5 hGfB^
        8.5.1 DrumPatterns
     8.6 pb`GfB^
        8.6.1 JSynthLib
     8.7 \tgEFAVZ
        8.7.1 Spiral Synth
        8.7.2 UltraMaster Juno-6
        8.7.3 Pure-Data (PD)
        8.7.4 Csound
        8.7.5 Bristol synthesiser emulator
     8.8 vOC
        8.8.1 xmms-midi
     8.9 y쐬
        8.9.1 Mup
        8.9.2 Lilypond
     8.10 J
        8.10.1 sfront
        8.10.2 jMax
        8.10.3 TSE3
        8.10.4 KeyKit

  9. MIDI vO̊J
     9.1  1
     9.2  2
     9.3  3

  10. \tgEFAVZTCUƂ MIDI V[PTg
     10.1 ͂߂
     10.2 foCX̐ݒ
     10.3 MIDI Cxg̃[eBO
        10.3.1 aconnect
     10.4 OtBJ MIDI pb`xC
        10.4.1 aseqview
     10.5 AvP[V
     10.6 V[PT
        10.6.1 MusE
        10.6.2 ttrk
        10.6.3 Shaketracker
     10.7 \tgEFAVZTCU
        10.7.1 Pure Data
        10.7.2 Csound
        10.7.3 
     10.8 ӎ

  11. LpȃN
  12. tB[hobN
  13. {Ŏӎ

  ______________________________________________________________________

  1.  ͂߂

  ́̕Aȉ̍ڂԗĂ܂B

  o  MIDI C^tF[X̐ݒ

  o  \tgEFAVZTCU̐ݒƎgp

  o  MIDI t@C̉t

  o  V[PT̎gp

  o  O MIDI @̐

  o  MIDI ŃRg[\tgEFAx[X̉

  o  MIDI gvO

  2.  ̒̕쌠

   HOWTO ̒쌠 2002 Phil Kerr ɂ܂B

  u\tgEFAVZTCUƂ MIDI V[PTgv͂̒
   2002 Frank Barknecht ɂ܂B̕ GNU t[p
  _񏑂̏̂ƂŔzzĂ܂B{ɕtĂ͂ł
  AłȂꍇ́Aȉ̃TCgœł܂B

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

  3.  ǂł̕ł邩

  ̌̕o[W Linux Documentation Project ł
  :  <http://www.tldp.org/>

   HOWTO ̍ŐVłz[y[W  <http://www.midi-howto.com>
  łB

  4.  ӎ

   HOWTO  Hideki Saito ɂďꂽ MIDI-SB mini-HOWTO ̔W
  łłBނ Linux R~jeB[ւ̍vɐ[ӂ܂B HOWTO
  ɂ͌݁AFrank Barknecht ɂ 'HOWTO Use MIDI Sequencers With
  Softsynths' ܂܂Ă܂BFrank ɐ[ӂ܂B HOWTO Ɋ
  ܂ĂvȎ Linux Audio Developers (LAD) [O
  XgR̂̂łBvO̕Ɋ܂߂邱ƂĂ
  ނɐ[ӂ܂B

  5.  Ɛ

  ̕ɋLڂẮAȐӔCɂėpĂB

  M҂͂̓̕eɂāAȂӔC܂B̕ɋL
  ĂTOAȂ̓eɂẮASȎȐӔCɂėp
  ĂB

  LȂׂ̂Ă̒쌠͒쌠҂ɋA܂B

  ̕ŎgpꂪAȂ炩̏WT[rX}[N̗LNQ
  Ƃ݂ȂĂ͂Ȃ܂B

  ̐iuhxĂƂ݂ȂĂ͂Ȃ܂B

  K͂ȃCXg[Ƃ̑OɃVXẽobNAbv邱ƂƁA
  ̊ԊuŒIɃobNAbv邱Ƃ܂B

  6.  MIDI ɂĂ̗\m

  MIDI Ƃ́An[hEFAƃ\tgEFÃvgRЂƂ̃Zbg
  Ȃ̂ŁAdqy킪ʐM邽߂ɗp܂Bŏɐ肳ꂽ
   1982 N̂ƂŁAdqyԂ̕WʐMiɂȂ܂B̃v
  gR̓P[uуC^tF[X̕Iȃn[hEFÃp
  [^K肵Ay⎞Ԃ̃f[^邽߂̒ʐMvgR̂
  ƒ`ꂽZbg񋟂܂B

  MIDI ȑOɂAAiO̒ʐMvgR₻̌ɂłIȃfW^
  ̒ʐMvgR݂܂B 1974 N̍ł̂
  ́ȀdƂāAL[{[hʂ̃L[{[hւƓdo
  RőM܂B̌A1980 N  1981 NɁA[hЂ͏I
  ȃfW^̃vgRł DCB 쐬܂B MIDI Manufacturers
  Association (MMA) ͋@탁[J[Ƃ̋ƂŁAKiɏ][J[
  ̋@킷ׂĂ݂ɐڑʐMł悤ɂWvgRƕI
  ڑKi𐧒肵܂B

  1985 N MIDI C^tF[XƒpRs[^Ɏp͂߁A
  ̌シɃV[PT̃vOoꂵ܂B

  7.  MIDI foCX̐ݒ

  MIDI foCX̓TEhJ[hƈ̂ɂȂĂ邱Ƃ΁AƗ
  foCXɂȂĂ邱Ƃ܂BO MIDI C^tF[X́AVA
  |[g USB |[ĝǂ炩Ɏt邱Ƃł܂B

  ŏɂׂłAȂułdvȁvƂ́Ag̃J[hT
  |[gĂ邩ǂ`FbN邱Ƃł!

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

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

  MIDI foCX̐ݒ@́ALinux fBXgr[VɂėlX
  B悭T|[gĂJ[hƁAOS ̃CXg[ɐݒł
  B

  (: 2.4 ȑO)Linux J[lɂ OSS hCoA2.5 ̃J[l
   ALSA hCo܂܂Ă܂BẴfBXgr[Vɂ
  (ɃTEhJ[h) ݒc[pӂĂ܂BłATE
  hJ[hɂĂ MIDI |[gĝȂA MIDI |[g̐ݒ
  Kvł傤BRed Hat ł sndconfig A SuSE ł yast
  AMandrake ł DrakConf g܂B

  L̃c[łg MIDI C^tF[XݒłȂA͖
  ꍇ́A̒iK𓥂ނׂłB

  lsmod  MIDI ֌W̃W[\܂? OSS x[X̃VXe
  ̓T^Iȏo͂͂̂悤Ȃ̂łB

  ______________________________________________________________________
  [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)

  #---- Soundcard modules
      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 TĂB

  USB foCXgȂAUSB W[邩ǂ`FbN̂
  YꂸɁB

  ݒ`FbNɂ́Asndstat t@C cat ܂:

  ______________________________________________________________________
  [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)
  ______________________________________________________________________

   MIDI foCX mad16 ЂƂł邱Ƃ킩܂BL lsmod
  ̏o͂ɂXgAbvĂ܂ˁB

   MIDI ֘ÃfoCXȂ΁A/etc/modules.conf t@C
  e`FbNĂ݂܂傤B

  ______________________________________________________________________
  [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

  #---- Soundcard
      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
  ______________________________________________________________________

  MIDI ̃W[J[lɃ[hĂ邩ǂA/proc/modules
  o͂ă`FbN܂B

  ______________________________________________________________________
  [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)

  #---- MIDI device
      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
  ______________________________________________________________________

  Ȃ̂ƂłALɎʂɂȂ͂łBłȂ΁A
  MIDI hCoCXg[Kv܂B

  ALSA 0.5x hCoĝ͂߂قłAǂĂg\
  ȂALNœł Valentijn Sessink  Alsa-sound-
  mini-HOWTO 悭ǂނƂ߂܂B

  <http://www.tldp.org/HOWTO/Alsa-sound.html>

  o[W 0.9 V ALSA gƂA܂B 0.9 
   ALSA hCoɂ́AMadhu Maddy  ALSA-HOWTO 悭ǂނƂ
  łB

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

  7.1.  ALSA 0.9 ̎葁CXg[@

  ȉ́AALSA 0.9 hCoƁAĂ MIDI AvP[VKv
  郉CuƂĂ葁CXg[菇łB

  ______________________________________________________________________
  [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
  ______________________________________________________________________

  ɁA/etc/modules.conf ҏWKv܂B́AfBXg
  r[VɂẮAmodules fBNgɂ ALSA t@C
  ҏWKv܂B

  ɂAMIDI ȊÕfoCX̃Gg邩Ȃ̂ŁAt@
  CҏWۂ͒ӂĂBT^IȃVXeɂ́At@C
  Â ALSA  OSS ̐ݒ肪邩Ȃ̂ŁAARgAEg
  Kv܂B

  ȉ modules.conf t@ĆAT^I OSS ݊ ALSA ̐ݒӏ
  B

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

  alias snd-card-0 (MIDI/TEhJ[h)
  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/TEhJ[h) ̃Ggg̃J[ĥ̂ɕύX܂B
  ̏͒ʏAALSA ̃EFuTCgŌ܂B

  ALSA hCoCXg[A ALSA x[X̃vOɕKv
  ȃwb_ƃCut@CCXg[Kv܂B́A
  alsa-libs pbP[WɊ܂܂Ă܂B

  ______________________________________________________________________
  [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
  ______________________________________________________________________

  g̃VXe̐ݒ肪܂ :)

  ȒP C ̃vOŁAݒ肪܂`FbNł܂BRp
  CƎsłAVXe͂܂Ă͂łB

  ______________________________________________________________________
  // Compile this test program like so: 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.  CeV

  MIDI ̓A^C̃vgRȂ̂ŁACeV͏dȖłB

  ݁AԒZk̂߂̍ƂĂ鉽l̊J҂܂BJ[l
  ̉ԂZkƁALinux  MIDI ̂΂炵vbg
  tH[ɂȂĂ܂B

  W Linux fBXgr[Vłɓ삷邩܂
  Av̋@ɂ̓ECeVpb`ĂׂłB

  ڍׂȏ͂œł܂:

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

  <http://www.linuxdj.com/audio/lad/resourceslatency.php3>

  ECeV Mini Howto

  <http://www.djcj.org/LAU/guide/Low_latency-Mini-HOWTO.php3>

  8.  \tgEFA

  Linux x[X MIDI VXeւ̊֐S܂ɂāÃXg͓
  \ MIDI \tgEFA̐mȐԂ񔽉fȂȂĂł
  BłAAvP[V̑ÓȑIɂ͂ȂĂ͂łB
  ́AɃXgAbvĂȂ MIDI AvP[VJ
  ĂA͂mȂ΁A҂Ƀ[B

  8.1.  hCo

  8.1.1.  Alsa hCo

  Advanced Linux Sound Architecture ́A̕ō\Ă
  B܂ɋ̂͊SɃW[ꂽTEhhCo
  ŁAW[̎[hAdevfsAisapnp ̎ݒT|[gAI[
  fBIn[hEFÃAiOI[fBIAfW^I[fBIARg[
  A~LT[AVZTCUADSPAMIDIA^C}[Ƃeւ̊S
  ȃANZXł悤ɂȂ܂B܂ASȃJ[lxł̃V[P
  TAOSS/Free AvP[V̂߂̊SȌ݊񋟂郌C
  AALSA J[lhCõAvP[V̋@\ (NCAg/
  T[oAvOCAPCM VFAO/}`vNVO, PCM [^
  OȂ) Jo[IuWFNgw C CuAhCo
  ΘbIɐݒ肷vOA{IȊǗsȂ̃Vv
  [eBeB܂܂Ă܂B

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

  8.1.2.  OSS

  OSS  Linux  FreeBSD łĂ̈ʓIȃTEhJ[h̃TE
  hJ[hhCo񋟂܂BhCóATEhJ[h̃fW^I[
  fBIAMIDIAVZTCUA~LT[̋@\T|[g܂BTEhh
  Co Open Sound System API ̎dlɊS܂BOSS ̓TE
  hhCõCXg[TEhJ[h̐ݒ肪ƂĂȒPɂȂ郆[U
  th[ GUI 񋟂܂B 200 𒴂ނ̃TEhJ[hT
  |[gATEhJ[h̎oAvOAhvCAPCI I[fBI
  TEhJ[hAtf[vbNXI[fBĨT|[g񋟂Ă
  ܂B

  <http://www.opensound.com/>

  8.1.3.  Notemidi

  Notemidi ̓m[gubN/bvgbvRs[^ RS-232 VA|[
  goR MIDI o͂邽߂̃foCXhCołB Notemidi 
  MIDIator MS-124W C^tF[XA Roland Sound Canvas TEhW[
  A Yamaha MU-x V[YTEhW[Ŏgpł܂B

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

  8.2.  MIDI t@CvC[

  8.2.1.  KMid

  KMid ́ALinux  FreeBSD ɑΉ X11 / KDE x[X MIDI vC
  [łBJIPt@C̉̎\ہAtĂӏ̐F
  ω̂ŁAȂȒPɒǂ܂BKMid ́A/dev/sequencer OVZ
  TCUA AWEAFMAGUS J[hT|[go̓foCXƂĎg܂B

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

  8.2.2.  Pmidi

  Pmidi ́AALSA V[PToR MIDI t@CtȒPȃR}h
  C̃vOłB

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

  8.2.3.  TiMidity++

  TiMidity  MIDI  WAVE ւ̃Ro[^łBʓI MIDI t@C
  fW^I[fBIf[^𐶐̂ Gravis Ultrasound V[Y
  ݊̃pb`t@Cg܂BꂽI[fBIf[^́ACӂ̃T
  EhfoCXoRł̉tfBXNւ̕ۑ\łB}V
  ƁAA^Cŉtł܂B

  <http://www.onicos.com/staff/iz/timidity/>

  8.3.  V[PT

  8.3.1.  Brahms

  Brahms ̓V[PTy쐬vOłB_ŁAXRAAsAm
  [AhA}X^[gbNGfB^܂ޗlXȕҏW@Ă
  ܂B C++ vO}ł΁AʓIȃGfB^NXؗpĂ
  GfB^̂͊ȒPłBMIDI ̃C|[gƃGLX|[g
  Ă܂B aRts-0.3.4 Ƒgݍ킹ƁAwave t@C̍Đ
  \ɂȂA MIDI Cxg\tgEFAVZɑM̂ aRts 
  MIDI oXgpł悤ɂȂ܂B

  ȑO KooBase ƂOŒmĂ܂B

  <http://brahms.sourceforge.net/>

  8.3.2.  Anthem

  Anthem ͐iIȃI[v\[X MIDI V[PTłBAnthem ł́A
  ꂽ]̍IuWFNgw̋ZpgāAy̘^AҏWA
  \łB

  <http://anthem.sourceforge.net/>

  8.3.3.  Jazz++

  JAZZ++ ͊SȁAI[fBIΉ MIDI V[PTłB Linux 
  Windows ɑΉĂ܂B

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

  8.3.4.  Linux Ultimate Music Editor

  UltiMusE-LX (the Ultimate Music Editor) ͍ȃvOłBƂ
  AȂ̂߂ɍȂĂ킯ł͂܂Býu[v
  vłB}EXARs[^̃L[{[hgāAʏŊy
  ܂B 16 p[g 16 ܂ł̉A7 ܂ł̕\ɏ
  ܂BĂ̕WIȉyLT|[gĂ܂BMIDI ypb
  `̕ύXA MIDI CxgAA^CNbNT|[gĂ܂B

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

  8.3.5.  Melys

  Melys  Advanced Linux Sound Architecture (ALSA) Ή MIDI V[P
  TAvP[VłB Melys  ALSA ̃V[PTT|[ggp
  BGNOME CûŃV[PTptȒPɑł
  B

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

  8.3.6.  MidiMountain Sequencer

  MidiMountain ̓X^_[h MIDI t@C̕ҏW@\V[PT
  BȒPɎgC^tF[X́AMIDI ̊y(V[PX)ҏWE쐬
  鏉S҂̏ɂȂł傤B̂ MidiMountain ́AX^_[h
  MIDI t@C MIDI ]vgRׂ̂Ă̒`\ȒPȃsAm[
  ̕ҏWoCĩVXeGNXN[VubZ[W̕ύX܂Ł\
  Wł悤ɐ݌vĂ܂B

  <http://www.midimountain.com/>

  8.3.7.  MusE

  MusE  Qt 2.1 x[X Linux V[PTŁAҏW^ł܂B
  V[PT̍ĐłAsAm[GfB^XRAGfB^gă
  A^CŃCxgҏWł܂BL^ꂽ MIDI Cxg̓p[g
  ƂɃO[v邱ƂłAAWGfB^ŕҋȂł܂B

  <http://muse.seh.de/>

  8.3.8.  Rosegarden

  Rosegarden ́AMIDI V[PTƊyGfB^ꂽ\tgEFA
  B

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

  8.4.  MIDI gbJ[

  8.4.1.  tektracker

  ttrk (tektracker) ́AgbJ[X^C̃XebvGfB^R
  \[ MIDI V[PTłBCutɍĂAg₷g
  bN~[g{^ƃ[vRg[@\܂Bttrk  MIDI
  NbNpX̑MƓ̗T|[gĂ܂B

  <http://div8.net/ttrk/>

  8.4.2.  ShakeTracker

  ShakeTracker ́AgbJ[̃C^tF[XS MIDI V[P
  TڎwĂ܂Bډ̂ƂA\Ȃ삷AقƂǂ̃g
  bJ[̃GtFNgT|[gĂ܂BȑO Impulse gbJ[
  gƂ́AȂ݂̂銴ł傤B͂߂Ďg
  ́AȒPȂL͈͂ɂ킽wvVXepӂĂ܂BR}h
  ƃV[gJbĝقƂǂ́AgbJ[̂ɎĂ܂B

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

  8.5.  hGfB^

  8.5.1.  DrumPatterns

  DrumPatterns ̓t[ŃI[v\[X́Aweb w̃hp^[WF
  l[^łBpr̓hp^[菕邱ƂłBx
  ỸY邱Ƃł܂BAXRAAMIDI ł̏o
  ͂\ŁAԂ̃Tv܂܂Ă܂B

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

  8.6.  pb`GfB^

  8.6.1.  JSynthLib

  JSynthLib ̓I[v\[X́AlXȊŎgVZTCUpb`G
  fB^/ CuA\tgŁAJava ŏĂ܂BT|[g
  ĂȂVZp̃hCoGfB^[UJvWFNgɊ
  ł悤ɁÂƋZp񋟂邱ƂɂāAŏIIɂ
  ݂邷ׂẴVZTCUT|[g邱Ƃ̃vWFNg͎u
  Ă܂B

  8.7.  \tgEFAVZ

  8.7.1.  Spiral Synth

  Spiral Synth ̓|tHjbNAiOVZTCU𕨗f\
  tgEFAłBn[hEFAAiOVZɂč邽̉
  AdqyɎgmCY̍쐬\łBƊȉ̍쐬ɂ
  g܂BMIDI T|[gĂA܂AWI OSS/Free TEh
  o (/dev/dsp) gp܂B

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

  : p SpiralSynthModular A݊ɊJĂ܂B

  <http://www.pawfal.org/Software/SSM/>

  8.7.2.  UltraMaster Juno-6

  UltraMaster Juno-6 ́ARoland Juno-6 |tHjbNVZTCU𒉎
  Ƀ\tgEFAōČ̂łBA^C 64 rbgC^[i
  ULTRANALOG EF[uVZVXA80 N㏉X^C̃AyWG[^[
  R[XApҎg̃JX^ZbeBOۑ邽߂ 100 ̃pb
  `FłBׂẴp[^̓A^CŁAXN[ GUI
   O MIDI Rg[oRŃRg[ł܂B

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

  8.7.3.  Pure-Data (PD)

  Pd  pure data ̗̂łBPd ͉y}`fBÃCuptH[
  }X̂߂̃A^C\tgEFAVXełB Miller Puckette
  ɂĊɊJĂ܂BVXe͖łAxȃv
  WFNgɂ\g܂Bł Linux, IRIX, e Windows Ƀ|[g
  Ă܂B

  : ݂ł Mac OSX ɂ|[gĂ܂B

  <http://www.pure-data.org/>

  8.7.4.  Csound

  Csound ̓\tgEFÃvOłBłPȂ邻𒴂
  ܂B Csound ł́Ã\tgEFA/n[hEFAVZTCUɑ
  悤Ȑ󂯂邱Ƃ܂BЂƂ̃vOgpł
  IV[^tB^̑ɐȂ̂łBɁACsound ͊S
  W[łBłACsound ̂ǂ̋@\푽lȂŎg
  pł܂B

  <http://www.csound.org/>

  8.7.5.  Bristol synthesiser emulator

  Bristol ̓VZTCUG~[ṼpbP[WłB Moog Mini,
  Moog Voyager, Hammond B3, Prophet 5, Juno 6, DX 7 Ȃǂ܂܂Ă
  B

  <http://www.slabexchange.org/index.cgi?DOWNLOAD>

  8.8.  vOC

  8.8.1.  xmms-midi

  xmms ( x11amp) ɁA(timidity oR邱Ƃɂ) MIDI t@C
  ̃T|[gǉ܂BȂ~LT[C^tF[XAݒ_C
  AOɂĒ񋟂܂B

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

  8.9.  y쐬

  8.9.1.  Mup

  Mup ̓eLXgt@C͂ɗpāAyp PostScript o͂
  ܂Bʂ̊yƃ^u̗܂ (MIDI ł̏o͂\ł)B

  <http://www.arkkra.com/>

  8.9.2.  Lilypond

  LilyPond ͕ʗp̐A\tgłBTvLqꂽt@C͂ɗp
  āAʂ𐶐܂BLilyPond  GNU Project ̈ꕔłB

  <http://www.lilypond.org/>

  8.10.  J

  8.10.1.  sfront

  Sfront  MPEG 4 Structured Audio (MP4-SA) ̃rbgXg[As
  ɃI[fBI𐶐I C vOɃRpC܂B
  MP4-SA Ƃ́AK͂ɏ]ASY~bNȃTEhp̋KiŁAI[
  fBIVOi (SAOL) ƃXRA (SASL Ƌ MIDI t@C
  `) ̂łB Linux ł́ASfront ̓A^CAE
  CeVȃI[fBIóATEhJ[h̃[J MIDI ́A
  RTP  SIP pẴlbg[NoRł MIDI ͂T|[gĂ
  Bo[N[̃LpXŃzXgꂽ SIP T[oZbVǗ
  ܂B Web TCgɂ́AMP4-SA ɂẴICubN
  B

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

  8.10.2.  jMax

  jMax g΁AΘbIɃf[^t[H݌vł܂Bgpł{
  Iȃf[^^Cv͐AV{AXgȂǂłBCxghũV
  XeŁAMIDI ̏ɎgĂ܂BVXe̕ʂ̕ (DSP) 
  ́AHɌpIȐM𗬂Ƃł܂B́APCM TEh (
  킿A}CNoR̉TEht@CȂ) ɂƂčłLpłBVX
  e̓VFA[hCu̎gpɂĊg\Ȃ̂ŁAf[^vZb
  T^CvAf[^^CvAGUI vfAfoCX^CvȂǉł
  Bf[^vZbTHƂĂ̐݌vėp\łB

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

  8.10.3.  TSE3

  TSE3  C++ ŏꂽptȃI[v\[X̃V[PTGW
  BȂuV[PTGWvȂ̂ƂƁATSE3 ̓V[PT̎
  񋟂邾ŁA[UC^tF[X̃tH[񋟂Ȃ
  B TSE3 Cug΁AV[PTAvP[V}`fB
  Av[e[VpbP[W쐬ہA MIDI V[PẌy
  ɂȂ܂B

  <http://TSE3.sourceforge.net/>

  8.10.4.  KeyKit

  KeyKit ̓}`^XÑC^v^^vOł (awk ɐG
  Ă܂)BA^CASY~bN MIDI ̑ɓ
  ݌vĂ܂BKeyKit  GUI ́AASY~bNȉyp̗lX
  ȃc[_[X܂B̒ɂ̓}`gbNV[PTh
  p^[GfB^܂܂Ă܂B GUI ƂׂẴc[́AS
  KeyKit ꂻꎩ̂ŏĂ܂BŁA[U͂ƂVXe
  ̓쒆łA݂Ăc[ɐVȃc[▽߂ǉł܂B

  <http://nosuch.com/keykit/>

  9.  MIDI vO̊J

  MIDI AvP[V̊Ju]҂ɂƂāAJɒ肷邽߂ɗǂv
  OႪKvƂȂ邱Ƃ͂肪łB

  ɋ́ALAD [OXǵAvOƕE`[g
  AɂẴXbhɓe܂B

  9.1.   1

  ȉ̃vO Dr. Matthias Nagorni ɂAƂV[PT
  ̃[`łBNWɃXgAbvĂ Matthias ̃TCg
  ɑ̗Ⴊł܂B

  ̂悤ɃRpC܂:

  ______________________________________________________________________
  [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);
      }
    }
  }
  ______________________________________________________________________

  9.2.   2

  ȉ Nick Dowell  ALSA 0.9 Ή MIDI _CN^łB

  ______________________________________________________________________
  /* ALSA Sequencer MIDI redirector.
     Redirects the input to outputs determined by the MIDI channel
     (as requested by Nathaniel Virgo on Linux-Audio-Dev ;-)
     based on Dr. Matthias Nagorni's ALSA seq example

     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;
  }
  ______________________________________________________________________

  9.3.   3

  ȉ Craig Stuart Sapp ɂAOSS  /dev/midi C^tF[XɃf[
  ^ޗłB

  N̐߂ɃXgAbvĂ Craig ̃TCgɂ́Aɑ̗
  ܂B

  ______________________________________________________________________
  //
  // 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.  \tgEFAVZTCUƂ MIDI V[PTg

  Frank Barknecht  <barknech@ph-cip.uni-koeln.de>

  <http://linux-sound.org/quick-toots/4-sequencers_and_softsynths/quick-
  toot-midisynth_howto.html>
  : { <http://www.linux.or.jp/JF/JFdocs/midisynth-howto/>

   HOWTO ł́AMIDI M\ȃ\tgEFAVZTCUA MIDI V[
  PT ALSA 0.9 ̉zI MIDI ڑoRŐ䂷ۂɕKvƂȂ
  qׂ܂B{͎Rɖ|zz\łB GNU Free
  Documentation License ŌJĂ܂B

  10.1.  ͂߂

  Csound, PD, jMax, Spiral Synth Modular ̂悤ȃ\tgEFAVZTC
  ÚAm▢mAq͊ȉ̌nقƂǖ̎
  R񋟂܂B\tgEFAVZTCÚAȃn[hEFAVZT
  CUAȃTEhJ[h́AƂ MIDI VZTCU
  @\ (ɂĂ Linux ŃT|[gĂ΂ł) u
  Ƃł܂BÃ\tgEFAVZTCUgčȂ
  ̂͑ދȍƂɂȂ邱Ƃ܂\Ƃ Csound ł́A\vZ\tg
  ̂悤ȍ@ŉʂĂȂLqȂĂ͂ȂȂ̂łB́A
  ŷɉKȂ肩ł͂܂B

  MIDI V[PTAvP[V́AƂɂKĂ܂B
  V[PT́A}f[^𐧌䂵肷C^tF[Xg
  ₷肩Ł\ỷAsAm[̃}[NAMIDI Cxg
  XgƂD݂ɉ\@Ł\񋟂܂B̎ނ MIDI V[
  PTɂ́A͂̂ɃgbJ[̂悤ȃXebv͕
  ̂܂B̐lBÂ肩V[ł̍Ő[
  Âǂォ犵ełłBŌɁAYĂ͂ȂȂ
  ܂B MIDI V[PT̒ɂ́AՂ⑼̕foCXł̉t
  L^ł̂܂B́Ã[UɂƂčłRȍȕ
  @łB

  ƂŁAMIDI V[PT́Aʏ͉ MIDI foCXɏo͂܂B
  ʁAMIDI Cxg𐢊E̊O\Ȃ킿n[hEFAVZTv
  [\ɑMƂƂłBłz MIDI foCXg΁AMIDI
  f[^Rs[^̓ɃL[vA}VŎsĂ鑼̃\t
  gEFA𐧌䂳邱Ƃł܂B HOWTO ł́A̖ړIɒB
  ߂ɕKvȂׂĂqׂ܂B

  10.2.  foCX̐ݒ

   HOWTO ɂݒł́A ALSA <http://www.alsa-project.org> ̃
  CuƃhCoW[p܂BȂȂAALSA  Linux Ŗ{i
  IɃI[fBI MIDI gł̕WIȎi (邢͂Ȃׂ)
  łB̃`[gAł́AALSA  0.9.0 u`̎gp
  ܂BłAz MIDI ̃W[ ALSA 0.5.x ɂ̂ŁAȉ
  qׂقƂǂ ALSA 0.5.x łlɓKłł傤B OSS/Free
  (2.5.x ȑÕJ[lɂTEhW[) OSS/Linux
  <http://www.opensound.com> TEhA[LeN`ł v_midi W[
  g܂A͖{̔eł͂܂B

  ALSA ̉z MIDI J[hgɂ́Asnd-card-virmidi W[݂
  ĂȂĂ͂Ȃ܂BŐVo[W ALSA ( 2.5.x JŃJ[l
  ) ł snd-card-virmidi  '-card' ڒ(~htBbNX)菜
  Asnd-virmidi ɖOς܂B̃W[rhƂ
  mFĂBۂɎgĂJ[h̃W[rh悤
  ALSA  configure ł́A炭̃W[̓rhĂ
  Ȃł傤B

  z MIDI |[g𗘗p\ɂɂ́Avirmidi W[[hȂ
  Ă͂Ȃ܂B蓮ŎIɃ[hł܂:

  ______________________________________________________________________
   $ modprobe snd-virmidi snd_index=1

  ______________________________________________________________________

  :

  alsa-driver 0.9.0rc4 ȍ~Asnd_index IvV index ɖ̕ύX
  ܂BŐV alsa g̏ꍇ́Aindex=1 ƂĂB

  snd_index ̒lA󂢂ĂJ[h index ̂ЂƂڂɂȂ悤ɐݒ肵
  ܂B (J[hЂƂȂÃJ[hł index 0 Ȃ̂ŁA
  virmidi  index=1 ɐݒ肷) łAz MIDI J[hKvɂȂ
  ɁAIɐݒ肪Ȃ悤ɃW[ݒ肷ƁA֗łB
  ̂߂ɂ́A/etc/modules.conf (fBXgr[VɂāAʂ
  ꏊɂ邱Ƃ܂)  ALSA ɊւӏɁA̍ڂǉ
  :

  ______________________________________________________________________
   # OSS  /dev/sequencer  /dev/music (ʖ /dev/sequencer2)
   # T|[g悤ɐݒ肷
   # 䗲񂪁ÃT[rXЂƂڂ̃J[hA
   # Ȃ킿 card 0 ȊOɃGCAXKv͂Ȃ
   # AhoCXĂ܂
   alias sound-service-0-1 snd-seq-oss
   alias sound-service-0-8 snd-seq-oss

   # J[h 1 (ӂڂ̃J[h) z MIDI J[hɐݒ肷
   alias sound-slot-1 snd-card-1
   alias snd-card-1 snd-virmidi

  ______________________________________________________________________

  ł́Ag̃TEhJ[h̃n[hEFAЂƂƉ肵Az
  MIDI J[h index 1 łӂڂ̃J[hƂĐݒ肵܂ (
  ƂĂLpƎv܂)BȂM҂̂悤ɂӂڂ̃TEh
  J[hłɂȂAȉǂŏLݒύXĂ:

  ______________________________________________________________________
   # J[h 2 (Oڂ̃J[h) z MIDI J[hɐݒ肷
   alias sound-slot-2 snd-card-2
   alias snd-card-2 snd-virmidi

  ______________________________________________________________________

  Ƒ̃J[hgłAȏ̐pΉ΂
  ͂łˁc

  ݒ肵AALSA TEhVXeċNKv܂B̌A
  z MIDI J[h /proc/asound/cards ŊmFł͂ł:

  ______________________________________________________________________
  $ cat /proc/asound/cards
   0 [card0          ]: ICE1712 - M Audio Audiophile 24/96
                        M Audio Audiophile 24/96 at 0xb800, irq 5
   1 [card1          ]: EMU10K1 - Sound Blaster Live!
                        Sound Blaster Live! at 0xc800, irq 11
   2 [card2          ]: VirMIDI - VirMIDI
                        Virtual MIDI Card 1

  ______________________________________________________________________

  M҂̃}V̗ł́AVirMIDI J[h index 2 łOڂ̃J[h
  ȂĂ܂B̍\́A/proc/asound/devices [MIDI foCX̂ݕ\
  ]ł́A raw MIDI foCXQƂĔf܂B

  ______________________________________________________________________
   $ cat /proc/asound/devices
     8: [0- 0]: raw MIDI
    41: [1- 1]: raw MIDI
    42: [1- 2]: raw MIDI
    75: [2- 3]: raw MIDI
    74: [2- 2]: raw MIDI
    73: [2- 1]: raw MIDI
    72: [2- 0]: raw MIDI

  ______________________________________________________________________

  M҂̏ꍇ́A'2-' ł͂܂foCXz MIDI foCXłBg
  ̃VXeɂn[hEFÃTEhJ[hЂƂȂA'1-' 
  ͂܂foCXz MIDI foCXɂȂł傤B

  ALSA Ɋ܂܂Ă aconnect [eBeBgƁAƕ₷
  ꗗ\܂Baconnect ͈ȌlXȗprŕKvɂȂł
  B-o ( -lo) IvVtŎsƁAMIDI o͂\
  MIDI foCX\܂B܂A-i IvVtŎsƁAMIDI
  ͂\ MIDI foCX\܂:

  ______________________________________________________________________
   $ aconnect -o
   [...]
   client 80: 'Virtual Raw MIDI 2-0' [type=kernel]
       0 'VirMIDI 2-0     '
   client 81: 'Virtual Raw MIDI 2-1' [type=kernel]
       0 'VirMIDI 2-1     '
   client 82: 'Virtual Raw MIDI 2-2' [type=kernel]
       0 'VirMIDI 2-2     '
   client 83: 'Virtual Raw MIDI 2-3' [type=kernel]
       0 'VirMIDI 2-3     '
   $ aconnect -i
   [...]
   client 80: 'Virtual Raw MIDI 2-0' [type=kernel]
       0 'VirMIDI 2-0     '
   client 81: 'Virtual Raw MIDI 2-1' [type=kernel]
       0 'VirMIDI 2-1     '
   client 82: 'Virtual Raw MIDI 2-2' [type=kernel]
       0 'VirMIDI 2-2     '
   client 83: 'Virtual Raw MIDI 2-3' [type=kernel]
       0 'VirMIDI 2-3     '

  ______________________________________________________________________

  \ꂽfoCXQ́A/proc/asound/dev fBNgc[ɂA
  ALSA 񋟂 OSS ݊ raw MIDI foCXQƈv܂B
  ƁA/proc/asound/dev/midiC2D0 ́Aindex 2 ̉z MIDI J[hɂЂ
  ڂ MIDI foCXłB aconnect ł Virtual Raw MIDI 2-0 
  \܂B Debian ł́ÃfoCXt@C /dev/snd/ fB
  NgɂA OSS foCX̏ꏊł /dev/midiXX ֓I
  ɃNĂ܂BV{bNN𒣂 /dev/midiXX  ALSA
   raw MIDI |[gɃANZXł̂mFɂ:

  ______________________________________________________________________
   $ ln -s /dev/snd/midiC2D0 /dev/midi20
   $ ln -s /dev/snd/midiC2D1 /dev/midi21
   [...]

  ______________________________________________________________________

  łA͕Kvsł͂܂B̃}VłĂ͂
  !

  :

  ŋ߂ alsa ł /proc/asound/dev p~A/dev/snd ȉ̃f
  oCXt@CɂȂ܂B

  ܂łŉz MIDI J[h̍쐬Ɛݒ肪܂̂ŁA MIDI f
  oCXƑSlɁAg̃AvP[VŎgp邱Ƃł܂B
  D݂̃V[PTVZTCŨAvP[V̂Ƃݒӏ
  ɁA OSS ݊Ȃ /dev/midi20 ̂悤Ȍ`AALSA MIDI |[gȂ 80:0
  ̂悤Ȍ`ŁAKvȃfoCXL邾łB

  10.3.  MIDI Cxg̃[eBO

  10.3.1.  aconnect

  z MIDI J[h̍쐬ƐݒŁAȂ鏀ȂƁA MIDI
  CxgV[PT\tgVZɑM邱Ƃ͂ł܂B̂
  ߂ɂ́Aŏɂӂ̃|[g\zʂ\ aconnect [eBeB
  ڑKv܂B̃c[͂ӂA͂葽̃|[
  gڑ܂B-i  -o gp\ȃ|[g\IvVł
  Ƃ́AłɈȑOʂłBȒPȍ\ŁÃ|[g
  ɐڑ邱Ƃł܂B

  ______________________________________________________________________
   $ aconnect [M|[g] [M|[g]
   $ aconnect 80:0 81:0

  ______________________________________________________________________

  ̗ł́Aport 80:0 ɑMꂽׂĂ MIDI f[^ port 80:1 
  ă[eBO܂B{̍\ƁA/dev/midi20 ɓĂ
  ׂẴCxg /dev/midi21 ɑM邱ƂɂȂ̂ŁA/dev/midi21
  瑼̃AvP[V͂ MIDI Cxgǂ(M) Ƃ
  ܂B

  VirMIDI J[hJ[h index 1 łӂڂ̃J[hƂĐݒ肵
  Ã|[g݂͂ł:

  ______________________________________________________________________
   $ aconnect -lo
   client 72: 'Virtual Raw MIDI 1-0' [type=kernel]
       0 'VirMIDI 1-0     '
   client 73: 'Virtual Raw MIDI 1-1' [type=kernel]
       0 'VirMIDI 1-1     '
   client 74: 'Virtual Raw MIDI 1-2' [type=kernel]
       0 'VirMIDI 1-2     '
   client 75: 'Virtual Raw MIDI 1-3' [type=kernel]
       0 'VirMIDI 1-3

  ______________________________________________________________________

  ̎_ŁAƂ΃|[g 72:0 (/dev/midi10) |[g 73:0
  (/dev/midi11) ɐڑł܂:

  ______________________________________________________________________
   $ aconnect 72:0 73:0

  ______________________________________________________________________

  aconnect  -lo  -li IvVgƁAڑ󋵂\ł܂:

  ______________________________________________________________________
   $ aconnect -lo
   client 72: 'Virtual Raw MIDI 1-0' [type=kernel]
       0 'VirMIDI 1-0     '
           Connecting To: 73:0
   client 73: 'Virtual Raw MIDI 1-1' [type=kernel]
       0 'VirMIDI 1-1     '
           Connected From: 72:0
   client 74: 'Virtual Raw MIDI 1-2' [type=kernel]
       0 'VirMIDI 1-2     '
   client 75: 'Virtual Raw MIDI 1-3' [type=kernel]
       0 'VirMIDI 1-3

  ______________________________________________________________________

  "Virtual Raw MIDI 1-0"  "Virtual Raw MIDI 1-1" ɐڑĂ
  Ƃ܂B̎_ŁA"Virtual Raw MIDI 1-0" ɑMꂽ MIDI
  f[^ "Virtual Raw MIDI 1-1" ǂݏoƂł܂B OSS ݊
  foCXƁA/dev/midi10 ɑMꂽ MIDI f[^ /dev/midi11 ւ
  oHƂA/dev/midi11 ǂݏoƂł܂BǂǵA
  g̃AvP[Vɂ܂B

  ӂȏ̃|[gAЂƂ̃|[gɐڑ邱Ƃł܂Bȉ̂
   aconnect xs:

  ______________________________________________________________________
   $ aconnect 72:0 73:0
   $ aconnect 72:0 74:0

  ______________________________________________________________________

  /dev/midi10 ɑM̂Ɠf[^A/dev/midi11  /dev/midi12 
  lɎMł܂BRAƂ̉z MIDI J[h쐬A
  ł߂ɐڑꍇ́A{Ƀ}Vg邱ƂɂȂ܂B
  킽~߂̂͂Ȃɂ܂c

  ׂẴ|[g̐ڑ؂ɂ:

  ______________________________________________________________________
   $ aconnect -x

  ______________________________________________________________________

  ڑЂƂ؂ɂ:

  ______________________________________________________________________
   $ aconnect -d 72:0 74:0

  ______________________________________________________________________

  10.4.  OtBJ MIDI pb`xC

  Bob Ham  ALSA MIDI Patch Bay <http://pkl.net/~node/> ́AALSA 
  MIDI ڑ̐ݒ̂ɂƂĂLpȃOtBbNtgGhłB
  g͂ƂĂȒPŒIł:  MIDI Cxg𑗐M\ MIDI
  |[gQŁẢEɂ͎M\ MIDI |[gQ܂B
  ̃|[gNbNƁAɃNbNẼ|[gւ̐VȐڑ
  ł悤ɂȂ܂BẼ|[gNbNƁÃ|[gڑ
  Ăꍇ͂؂܂B{ HOWTO ]vȂ̂ɂĂ܂˂
  炢N[ŊȒPȃc[ł. ;)

  10.4.1.  aseqview

  MIDI Cxg[eBO邽߂̂ЂƂ̗Lpȃc[A ALSA
  JҊ䗲 aseqview łB䂳̃z[y[W
  <http://members.tripod.de/iwai/alsa.html> Ń_E[hł܂A
  ̃fBXgr[Vɂ܂܂Ă܂B̃OtBJȃ[
  eBeB́ARs[^ʉ߂ MIDI Cxg𒭂߂ύX
  ړIŐ݌v܂A aconnect ̂悤ɁAقȂ MIDI |[gɃC
  xg[eBO邱Ƃł܂B aconnect ł͎ɑłȂ
  Ƃ OSS V[PTfoCXgAvP[VȂ
  ȂȂɁA aseqview ͗LpłBR}hCIvVȂ
  aseqview NƁAꂢ GUI ƐV MIDI |[gɓ
  BftHg port 128:0 łB̂悤ɂȂ܂:

  ______________________________________________________________________
   client 128: 'MIDI Viewer' [type=user]
      0 'Viewer Port 0 '

  ______________________________________________________________________

  ̃|[ggāA܂ŐĂ aconnect ̍ƂׂĂ\
  BłAaseqview ̃|[gʂ̃|[gɐڑ邱ƂKvȂA
  -d IvVg΁Aaseqview Ŏł܂:

  ______________________________________________________________________
   $ aseqview -d 73:0 &

  ______________________________________________________________________

  傤 aseqview ̋NA(gp\ł) port 128:0 
  port 73:0 ɐڑȂ܂B

  ̃c[ƂƂĂ悭@\OtBJ aconnect c[
  قɂ܂BMaarten de Boer ́AIWi aconnect
  ̃\[XR[ĥقƂǂgāAFLTK c[Lbg "aconnectgui" 
  OtBJtgGh܂B
  <http://www.iua.upf.es/~mdeboer/> ŁAł܂BM҂̈ӌł́A
  ̃\tgEFAłh悢łB

  lIɁAM҂ kaconnect gĂ܂BԂ񖼑O΂Z
  ̂ŁA^Cvł邩ł傤Bkaconnect  Suse  Dr. Matthias
  Nagorni ɂāAALSA ̃c[ƃ\tgVZ̃V[Ył
  kalsatools ̈ꕔƂĊJ܂BO "k" Ă邩
  āAႢȂłBkaconnect  KDE KvƂAQT GUI
  Cug܂Bkaconnect ̑
  <http://www.suse.de/~mana/kalsatools.html> ŁAł܂B

  10.5.  AvP[V

  Ō̂̐߂ł́AlXȃAvP[Vł̉z MIDI ڑ̎g
  A̎Ő܂BVXe̒ŁAz MIDI J[hO
  ڂ̃J[hɂȂĂāA ALSA MIDI |[g 80:0  83:0 ܂łAraw
  OSS MIDI foCX /dev/midi20  /dev/midi23 AALSA raw MIDI f
  oCX /dev/snd/midiC2D0  /dev/snd/midiC2D3 ƈv
  ܂B̂Aŏ̂ӂ 'aconnect' Ă܂:

  ______________________________________________________________________
   $ aconnect 80:0 81:0

  ______________________________________________________________________

  ܂ŐĂƂA͂܂ /dev/midi20 ( port
  80:0  /dev/snd/midiC2D0) ɑꂽׂĂ MIDI f[^
  ́A/dev/midi21 ( port 80:1  /dev/snd/midiC2D1) œǂ
  Ă邱ƂӖĂ܂B

  10.6.  V[PT

  10.6.1.  MusE

  MusE ́AWerner SchweerɂčꂽS MIDI V[PTłB
  <http://muse.seh.de> œł܂B ``Config->Midi Ports'' ZNV
  ŁAz MIDI |[go̓|[gƂĐݒ肷Kv܂B MusE
  ł́Aw肷|[g ALSA ł̖O 'VirMIDI X-X' ł:

  ŁAo̓|[gɐ|[gIł邩mFĂB܂
   MIDI CxgMEt\tgEFAVZTCU҂
  Ă`lłB

  ǂ킯AM҂ MuSE 0.4.9 ŁA'VirMIDI 2-0' o̓foCXƂ
  ĎgƂł܂łB'VirMIDI 2-1' ŎMA'VirMIDI
  2-0' foCXɑM̂łÂӂtɂĎgȂ
  ͂ȂȂ̂łBM҂܂ʂȂȂ̂ł傤AM҂ɂ͌
  Ȃ̂ŁAȂ͂ƎȂĂ͂ȂȂ
  B midi02  midi2 `̃foCXgƂ\ł傤B

  10.6.2.  ttrk

  Billy Biggs  ttrk <http://div8.net/ttrk/> ́AVvŌy肵
   MIDI V[PTŁAgbJ[̂悤ȃXebv͂̃C^tF[X
  Ă܂B̃V[PT́AMIDI f[^ $HOME/.ttrkrc t@C
  ݒ肳ꂽ MIDI |[gɑM邱Ƃł܂B

  ttrk  /dev/snd/midiC2D0 ɑM悤ɂɂ́A̍s
  $HOME/.ttrkrc t@CɏĂB

  ______________________________________________________________________
  mididev = /dev/snd/midiC2D0
  ______________________________________________________________________

  Őݒ芮ł...

  10.6.3.  Shaketracker

  Juan Linietsky  Shaketracker <http://reduz.com.ar/shaketracker>
  ́AMIDI ŃgbJ[̃C^tF[X𕜊܂B̓_ ttrk
  lłAShaketracker ́AÓTIȃgbJ[̃GtFNg MIDI
  f[^ɁA芮ɕϊ܂BɂAMIDI o͂ɂ raw MIDI fo
  CXł͂Ȃ OSS V[PTfoCX (/dev/sequencer) ĝŁA
  M҂ aconnect pē삳邱Ƃł܂łBł
  aseqview gȂǂΉ͉\łB Shaketracker NO
  aseqview N΁A Shaketracker  aseqview ̃|[gFA
  g܂BKvȍƂ́AShaketracker  'User Devices' ZNV
  ł̃|[gIԂłB'User Devices' ZNVł ALSA ł̖
  O 'Viewer Port 0' Ƃĕ\܂:

  ̃[UfoCXɁA'Null Output' ̂ɕ₷O
  ƕ֗łB

  aseqview AR}hCIvVȂŋNꍇA aseqview 
  |[g\tgVZ̃|[g aconnect Kv܂BłAȑO
  悤ɁAڑ|[g̎wŒ aseqview N邱Ƃ
  ł܂B\tgVZɑMegbNƂɁA̐Vȃ[Ufo
  CXgp̂YȂłBM҂͂ȃVFXNv
  gp Shaketracker N܂B aseqview NA|[g
  鎞Ԃ҂Aꂩ Shaketracker N܂:

  ______________________________________________________________________
   #!/bin/sh
   aseqview -d 81:0 &
   # sleep 2 seconds to let aseqview do its work:
   sleep 2
   shaketracker

  ______________________________________________________________________

  10.7.  \tgEFAVZTCU

  10.7.1.  Pure Data

  Miller Puckette ́AI[v\[X̃\tgEFAVZ}`fB
  AJ Pure Data <http://crca.ucsd.edu/~msp/software.html> 
  񂾓V˂łBPD  MAX 甭WAꂪt MAX ̊gł MSP 
  bƂȂ܂BPD ł MIDI Cxgǂނ̂ raw MIDI foCX
  gƂł܂Braw MIDI foCX '-midiindev <foCX̔ԍ>'
  IvVŎw肵܂BAgpfoCXw肷肩ɂ
  炢炳܂B̂悤Ȍ`ł: /dev/midi0 gɂ́APD 
  '-midiindev 1' IvVŋN܂B/dev/midi1 gɂ
  '-midiindev 2' ŁAȉlłBł܂? ̃IvV
  ́Aۂ̃foCXԍ 1 𑫂w肵ȂĂ͂ȂȂ̂
  Bʂ̗ł: /dev/midi21 gɂ́A'-midiindev 22' IvV
  PD N܂B

  PD ɂ 'Test audio and MIDI' Ƃ̃wvpb`pӂĂ
  B MIDI foCXmFŁAƂĂd󂵂܂B

  10.7.2.  Csound

  Csound <http://www.csounds.com> ́A܂ǂ̃\tgEFAVZTCU
  قƂǂ̑cɂ܂BāAMIDI ɂΉȂĂ
  B'csound --help' sƁAMIDI ̓foCX̐ݒ肪Kvȉӏ
  \܂:

  ______________________________________________________________________
   -M dnam or --midieventdev=dnam ........ Read MIDI realtime events from device
  ______________________________________________________________________

  Ė{̗ł́ACsound ȉ̂悤ɋNKv܂:

  ______________________________________________________________________
   $ csound -M /dev/midi21 -o devaudio midi.csd
  ______________________________________________________________________

  10.7.3.  

  ܂ł̐ŁAMIDI V[PTōȁEĐyA\tgEFA
  VZTCỦŉt@ɂȂƎv܂B
  Aaconnect  aseqview ̂悤ȃc[́AK MIDI \tgEFA
  V[PTƂɎgKvł͂܂BÕV[PT
  O MIDI L[{[h}VɓĂCxgAMIDI V[P
  Tʂɒڃ\tgEFAVZɃ_CNg邱Ƃł܂B
  O MIDI foCXAg̃\tgVZATEhJ[h̃I
  {[hVZ 'aconnect' 邾ł悢̂łBUԂĂ炢:
  PD, Csound, 邢 KeyKit <http://www.nosuch.com/keykit/index.html>
  ̂悤Ȋł́AASY~bNȂ肩 MIDI Cxg쐬
  Ƃł܂BASY~bNȍȂ́AÓTI Cubase CN
  MIDI V[PTł͂قƂǕs\łBaconnect gƁAꂽ
  MIDI CxgAg MIDI M\ȃTEhW[Ȃǂ̂
  Ȃ̂ɂł[eBOł܂B

  10.8.  ӎ

  M҂́A䗲ɁA̋LɂĂ̋ZpIȉƁA
  {ɊւMdȃAhoCXƂӂ܂BA
  Ƃ!

  11.  LpȃN

  ȉ MIDI  Linux Jo[TCgƏ񌹂ւ̃NꗗłB

  <http://www.linux-sound.org/> Sound & MIDI Software For Linux. MIDI 
  I[fBI֘A̋ȏ񌹁B

  <http://www.linuxdj.com/audio/lad/> Linux Audio Developers mailing
  list. J҂Ɋ֘Ac_B

  <http://www.linuxdj.com/audio/quality> The Linux Audio Quality HOWTO.
  MIDI J[h̐߂悢BLinux X^WI\ẑɕKǁB

  <http://www.alsa-project.org/> Alsa Project - I[fBI/MIDI hCo

  <http://www.4front-tech.com/> OSS - I[fBI/MIDI hCo

  <http://www.gardena.net/benno/linux/audio/> Low Latancy patches

  : J[l 2.4 
  <http://www.zip.com.au/%7Eakpm/linux/schedlat.html> Linux scheduling
  latency

  <http://ccrma-www.stanford.edu/~craig/articles/linuxmidi/>
  Introduction to MIDI programming in Linux.  Craig Stuart Sapp ɂ钘
  q C/C++ ł OSS hCoΉ̊{I MIDI [eBeB̏
  ԗĂ܂B

  <http://www.suse.de/~mana> Dr. Matthias Nagorni ɂďꂽ ALSA
  0.9 ł MIDI  PCM  C vO̗DꂽRNVB

  12.  tB[hobN

  ˑRƂāA{ HOWTO ͐isłBLinux  MIDI gVȃA
  vP[V₻̑Ĵ̂ɂāAtB[hobN
  Ƃ肪łB

  MIDI J[h͎ނ߁AhCõT|[gݒIvV̗lX
  ȒiKɉݒɋJ邱Ƃ܂B̂߂̃xXgȎQ
  ƌ́AALSA  OSS ̃EFuTCgAj[YO[vłBłs
  l܂ꍇ́ALinux Audio [OXǧĂ݂Ă
  B

  13.  {Ŏӎ

  |ɂMdȃAhoCXALAJ[eXTq
  Ɋӂ܂B

