HOWTO Use MIDI Sequencers With Softsynths

Frank Barknecht

barknech@ph-cip.uni-koeln.de

щT - {

     zap03216@nifty.ne.jp
    

Revision History                                                       
Revision                      Apr 04 2002                              

 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

 

Table of Contents
1. ͂߂
2. foCX̐ݒ
3. MIDI Cxg̃[eBO
   
    3.1. aconnect
    3.2. ALSA MIDI Patch Bay
    3.3. aseqview
   
4. AvP[V
   
    4.1. V[PT
    4.2. \tgEFAVZTCU
   
5. 
6. ӎ
7. {łƂ

1. ͂߂

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

MIDI V[PTAvP[V́AƂɂKĂ܂BV
[PT́A}f[^𐧌䂵肷C^tF[Xg
₷肩Ł\ỷAsAm[̃}[NAMIDI Cxg̃X
gƂD݂ɉ\@Ł\񋟂܂B̎ނ MIDI V[P
Tɂ́A͂̂ɃgbJ[̂悤ȃXebv͕񋟂
̂܂B̐lBÂ肩V[ł̍Ő[Â
ǂォ犵ełłBŌɁAYĂ͂ȂȂ
܂B MIDI V[PT̒ɂ́AՂ⑼̕foCXł̉tL^
ł̂܂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Ă鑼̃\tgEFA
𐧌䂳邱Ƃł܂B HOWTO ł́A̖ړIɒB邽߂ɕKv
ȂׂĂqׂ܂B

 

2. foCX̐ݒ

 HOWTO ɂݒł́A ALSA <http://www.alsa-project.org> ̃C
uƃhCoW[p܂BȂȂAALSA  Linux Ŗ{iI
Ƀ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)菜A
snd-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҂̂悤ɂӂڂ̃TEhJ[
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 fo
CX\܂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 ȉ
    ̃foCXt@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

 

3. MIDI Cxg̃[eBO

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 ݊fo
CXƁA/dev/midi10 ɑMꂽ MIDI f[^ /dev/midi11 ւ̌oH
ƂA/dev/midi11 ǂݏoƂł܂BǂǵAg
̃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                                                
                                                                       

 

3.2. ALSA MIDI Patch Bay

Bob Ham  ALSA MIDI Patch Bay <http://pkl.net/~node/> ́AALSA 
MIDI ڑ̐ݒ̂ɂƂĂLpȃOtBbNtgGhłBg
͂ƂĂȒ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[ł. ;)

Figure 1. ALSA Midi Patch Bay

[alsa-patch]

 

3.3. aseqview

 

Figure 2. aseqview

[aseqview]

MIDI Cxg[eBO邽߂̂ЂƂ̗Lpȃc[A ALSA
JҊ䗲 aseqview łB䂳̃z[y[W http://
members.tripod.de/iwai/alsa.html Ń_E[hł܂ÃfBX
gr[Vɂ܂܂Ă܂B̃OtBJȃ[eBeB
ARs[^ʉ߂ MIDI Cxg𒭂߂ύX肷ړIŐ
v܂A aconnect ̂悤ɁAقȂ MIDI |[gɃCxg[
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

 

4. 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 fo
CX /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

 

4.1. V[PT

4.1.1. MusE

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

Figure 3. MusE - MIDI Device Configuration

[muse-01]

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

Figure 4. MusE - Trackview

[muse-02]

ǂ킯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

 

4.1.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                                            
                                                                       

Őݒ芮ł...

 

4.1.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 foCXł
Ȃ OSS V[PTfoCX (/dev/sequencer) ĝŁAM҂
aconnect pē삳邱Ƃł܂łBł aseqview g
ȂǂΉ͉\łB Shaketracker NO aseqview N
΁A Shaketracker  aseqview ̃|[gFAg܂BK
vȍƂ́AShaketracker  'User Devices' ZNVł̃|[gI
łB'User Devices' ZNVł ALSA ł̖O 'Viewer Port 0'
Ƃĕ\܂:

Figure 5. Shaketracker - User Device Selection

[shaketrack]

̃[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ȃ[UfoC
Xgp̂YȂłBM҂͂ȃVFXNvg
p 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                                                           
                                                                       

 

4.2. \tgEFAVZTCU

4.2.1. Pure Data

Miller Puckette ́AI[v\[X̃\tgEFAVZ}`fB
AJ Pure Data <http://crca.ucsd.edu/~msp/software.html> (PD)
𐶂񂾓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

Figure 6. PD - MIDI Test Patch

[pd]

 

4.2.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                           
                                                                       

 

5. 

܂ł̐ŁAMIDI V[PTōȁEĐyA\tgEFAV
ZTCỦŉt@ɂȂƎv܂BA
aconnect  aseqview ̂悤ȃc[́AK MIDI \tgEFAV[P
TƂɎgKvł͂܂BÕV[PTO
 MIDI L[{[h}VɓĂCxgAMIDI V[PT
ɒڃ\tgEFAVZɃ_CNg邱Ƃł܂BO
MIDI foCXAg̃\tgVZATEhJ[h̃I{[hV
Z '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 CxgA
g MIDI M\ȃTEhW[Ȃǂ̂悤Ȃ̂ɂł[
eBOł܂B

 

6. ӎ

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

 

7. {łƂ

̍ŐVł http://linux-sound.org/quick-toots/
4-sequencers_and_softsynths/quick-toot-midisynth_howto.html ɁA
B

|ɂMdȃAhoCXA앐YA_茒Ɋ
ӂ܂B (2003/08/09)

