개인적으로 사운드 트랙 128 DDMA(흔히 사트루비라고 불리는 기종)을 리눅스에서 사용하면서 얻은 팁을 모아두었다.
현재 지원되는 사운드 카드는
먼저 받은 파일을 디렉토리에 푼다.
[root@ganadist src]# tar xvfz sam9407-0.8.9.tar.gz
그다음 디렉토리에 들어 간다.
[root@ganadist src]# cd sam9407-0.8.9
[root@ganadist sam9407-0.8.9]#
그다음 컴파일 환경설정을 해준다.
[root@ganadist sam9407-0.8.9]# ./configure
loading cache ./config.cache
checking for gcc... (cached) gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler...
no
checking whether we are using GNU C... (cached) yes
....
....
....
checking wether module versions is enabled... yes
creating ./config.status
creating Makefile
creating kernel/Makefile
creating init/Makefile
creating x9407/Makefile
[root@ganadist sam9407-0.8.9]#
컴파일을 해준다.
[root@ganadist sam9407-0.8.9]# make
make[1]: Entering directory `/usr/local/src/sam9407-0.8.9/kernel'
gcc -O2 -Wall -m486 -fomit-frame-pointer -fno-strength-reduce -I/usr/src/linux/include
-D__KERNEL__ -DMODULE -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h
-DSAM_VERSION_MAJOR=0 -DSAM_VERSION_MINOR=8 -DSAM_VERSION_TINY=9 -DSAM_MAJOR=145
-c alloc.c
....
....
....
g++ -o x9407 x9407.o controls.o panes.o device.o utils.o api_none.o
api_vanilla.o api_homstdr.o Tab.o Dial.o PeakMeter.o Layout.o laygram.o
laylex.o sfDir.o sfDraw.o sfPath.o sfSelFile.o -L/usr/X11R6/lib -lXaw3d
-lXmu -lXt -lXpm -lSM -lICE -lX11
make[1]: Leaving directory `/usr/local/src/sam9407-0.8.9/x9407'
[root@ganadist sam9407-0.8.9]#
다음 설치를 한다.
[root@ganadist sam9407-0.8.9]# make install
rm -f //etc/rc.d/init.d/sam9407
sed -e 's#@''VERSION@#0.8.9#g' -e 's#@''DEV_MAJOR@#145#g' -e 's#@''SBIN_DIR@#//sbin#g'
-e 's#@''MACHINE@#i386#g' etc/sam9407-redhat-init.sh.in >//etc/rc.d/init.d/sam9407
....
....
....
sed -e 's#@''VERSION@#0.8.9#g' -e 's#@''DEV_MAJOR@#145#g' -e 's#@''SBIN_DIR@#//sbin#g'
-e 's#@''MACHINE@#i386#g' etc/install.sh.in >/tmp/sam9407-install.sh
sh /tmp/sam9407-install.sh
rm -f /tmp/sam9407-install.sh
[root@ganadist sam9407-0.8.9]#
다음 모듈 의존성을 만든다.
[root@ganadist sam9407-0.8.9]#depmod -a
모듈을 올려본다.
[root@ganadist sam9407-0.8.9]# modprobe sam9407
[root@ganadist sam9407-0.8.9]# lsmod
Module
Size Used by
sam9407
80916 0 (autoclean)
autofs
9188 1 (autoclean)
ne
6256 1 (autoclean)
8390
6052 0 (autoclean) [ne]
vfat
9084 4 (autoclean)
fat
30272 4 (autoclean) [vfat]
[root@ganadist sam9407-0.8.9]#dmesg
....
....
....
sam9407: found st128pci port=0xe000, irq=0
[root@ganadist sam9407-0.8.9]#
이제 펌웨어와 사운드 폰트를 로딩한다.
로딩하는 방식은 명령행에서 명령주는 방법과 안에 포함된 믹서(x9407)에서
로딩하는 방법이 있다.
여기서는 명령행으로 로딩하는 방법이다.
[root@ganadist sam9407-0.8.9]# sam9407 -f /etc/sound/hoon4d.bin -b
0:/etc/sound/gssbk32l.94b
이제 확인 한다.
[root@ganadist sam9407-0.8.9]# cat /dev/sam0_sndstat
driver: sam9407-0.8.9
soundcard: st128pci
firmware: hoon4d
have-audio: yes
have-midi: yes
memory-total: 10240k
memory-free: 271k
memory-sbank: 3691k
memory-audio: 0k
channels-play: 0/8
channels-rec: 0/1
[root@ganadist sam9407-0.8.9]#
/etc/sam9407.conf 이용하기 이 파일은 sam9407을 실행시킬때 기본으로 읽어들이는 설정 파일이다.
이 파일안에는 사운드카드의 폰트램 크기, irq설정, 펌웨어 위치, 사운드
뱅크 위치 등등을 설정 해준다.
저같은 경우에는 파일이 이렇게 구성되어 있다.
[root@ganadist src]# cat /etc/sam9407.conf
mem 4M
irq 5
firmware /etc/sound/hoon4d.bin
soundbank0 /etc/sound/gssbk32l.94b
이런식으로 파일은 만든후에는 sam9407에 어떠한 옵션도 붙일 필요가 없다.
단지 sam9407만 실행 시켜주면 된다.
[root@ganadist src]# /sbin/sam9407
이것을 시스템시작할때 자동으로 로딩하게 할수 있는 방법이 없을까?
모듈을 설치하고 나면 시스템 데몬 서비스 스크립트가 모여있는
/etc/rc.d/init.d/ 디렉토리에 다음과 같은 스크립트가 설치되어 있는 것을 볼수 있다.
[root@ganadist /root]# ll /etc/rc.d/init.d/sam9407
-rwxr-xr-x 1 root root
404 Oct 28 12:02 /etc/rc.d/init.d/sam9407*
우리는 단지 이것을 각각의 런레벨에 맞게 심벌릭 링크만 해주면 된다.
[root@ganadist /root]# cd /etc/rc.d/rc3.d
[root@ganadist rc3.d]# ln -s ../init.d/sam9407 S85sam9407
[root@ganadist rc3.d]# cd ../rc5.d
[root@ganadist rc5.d]# ln -s ../init.d/sam9407 S85sam9407
이제 다음부터는 시스템이 시작할때 다음과 같은 메세지를 볼수 있을 것이다.
Initializing SAM9407
[OK]
spawn_options=-b -r 11025 -terminate -nobeeps -as 2
-b는 8비트로 설정 -r 숫자는 샘플링레이트 설정이다.
그놈과 enl에서 소리를 들을수 있다는 장점 이외에는 없지만
동시 8출력이 되는 사운드카드에서 1개쯤 써도 상관은 없을듯 하다 :)