<windows用Jack Audio Connection Kit>

Linux の音楽製作関係の人達が使うオーディオドライバーとして Jack  Audio Connection Kit がある。ちょうど Windows の ReWire のようなドライバーだ。Jadkdmp と いう C++ で書かれたマルチプロセッサ用の Jackサーバーが windows に対応している。

1. libjackのセットアップ

(1)jackdmpのサイトからjack-1.9.0.tgzをとってきてインストールした。

(2)PKGCFG用ファイル
以下のような jack.pc を作った

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: jack
Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server
Version: 0.101.1
Libs: -L${libdir} -ljack ""
Cflags: -I${includedir}

(3) jackd サーバーの起動のしかた
Jack Console で以下のようにやって手動で動かせることを確認する。
>jackdmp -R -S -d portaudio -p 1024
Jack Portaudio は jackd.exe のショートカットになってるので、プロパティを開き リンク先(T)に上のオプションを書き足す。
以降は Jack Portaudio で起動する。

(4)ringbuffer.oのリンク
いくつかのアプリで ringbuffer がないとってくるので
配布アーカイブのjack-1.9.0\jack-1.9.0\common に
jack-1.9.0\jack-1.9.0\windows\JackCompilerDeps_os.h をコピーし
$gcc -c ringbuffer.c  
$ar -ru libjack.a ringbuffer.o



2. コンパイル記録

(1)TiMidityCVS081206.tar.bz2
あっさりコンパイルできた。

(2) bio2jack
configureのなかの-ldlを消した。
あっさりコンパイルできた。

(3) jackbeat-0.6.1

1)llibsndfile-1.0.17.tar.gz
$CFLAGS=-O2 ./configure
$make
$make install

$CFLAGS=-O2 ./configure
$make
gcc.exe: unrecognized option '-rdynamic'
jackbeat-msg.o:msg.c:(.text+0x97): undefined reference to `_usleep'
jackbeat-msg.o:msg.c:(.text+0x108): undefined reference to `_usleep'
jackbeat-jab.o:jab.c:(.text+0x134): undefined reference to `_mkdtemp'
jackbeat-jab.o:jab.c:(.text+0x19f): undefined reference to `_WIFEXITED'
jackbeat-jab.o:jab.c:(.text+0x1b1): undefined reference to `_WEXITSTATUS'
jackbeat-jab.o:jab.c:(.text+0x15c2): undefined reference to `_mkdtemp'
jackbeat-jab.o:jab.c:(.text+0x1913): undefined reference to `_WIFEXITED'
jackbeat-jab.o:jab.c:(.text+0x1925): undefined reference to `_WEXITSTATUS'
め んどいからやめ

(4)fluidsynth (04/19)
fluidsynth-1.0.8.tar.gz
$CFLAGS=-O2 ./configure
**************************************************************
Summary:
ALSA:                  no
OSS:                   no
MidiShare:             no
JACK:                  yes
CoreAudio:             no
LADSPA support:        no
LASH support:          no
LADCCA support:        no
Readline:              no
Profiling:             no
Debug:                 no
Trap on FPE (debug):   no
Check FPE (debug):     no
**************************************************************
$make
/usr/local/include/jack/systemdeps.h:43: error: conflicting types for 'pthread_t'
fluid_jack.cで
#define pthread_t jack_pthread_t
#include <jack/jack.h>
とした。

コンパイルはできたけど
$fluidsynth  -a jack -j  サウンドフォント MIDIファイル.mid 
でならない。。。。  なんと実はこのバージョン dsound でも鳴らない。

(5)tuneit-0.3.tar.gz(070420)
configure.ac のalsa関係を削除
$aclocal
$autoconf
$autoheader
$automeke
$CFLAGS=-O2 ./configure
src/tuneit.c のalsa関係を #if 0  #endif でかこんで 
//  audio = &alsaInterface;
  audio = &jackInterface;
のようにかきかえ

動いたけどテストしてない

(6)jack_capture-0.9.3.tar.gz(070420)
#define pthread_t jack_pthread_t
#include <jack/jack.h>


#define usleep(a) Sleep(a1000)
#define sleep(a)  Sleep(a*1000)

みたいな感じであっさり動いた。



2008.12.08
 sけいし(s_keishi@yahoo.co.jp)



以下は古い情報

Linux の音楽製作関係の人達が使うオーディオドライバーとして Jack  Audio Connection Kit がある。ちょうど Windows の ReWire のようなドライバーだ。Jadkdmp と いう C++ で書かれたマルチプロセッサ用の Jackサーバーが windows でも開発されてるのは知ってたけど肝心の libjack がなきゃ鳴らせないじゃんと放置してた。
今回 libjackmp というのが libjack互換であることに気づいていくつかの Jack 対応プログラムをコンパイルしてみた。

1. libjackmpのセットアップ

(1)ヘッダファイル
linuxマシンから  /usr/include/jack フォルダを そのままコピーし てきた。

(2)インポートファイル
libjackmp.lib から reimip を使って作った。
$ reimp libjackmp.lib
$ mv liblibjackmp.a libjackmp.a

(3)PKGCFG用ファイル
以下のような jack.pc を使った。
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: jack
Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server
Version: 0.101.1
Libs: -L${libdir} -ljackmp ""
Cflags: -I${includedir}

(4) jackdmpサーバーの起動のしかた
>jackdmp -R -S -d portaudio -p 1024


(5)ringbuffer.oのリンク(070420)
いくつかのアプリで ringbuffer がないとってくるので
jackdmp_0.62/src/common で
$gcc -c ringbuffer.c  
$ar -ru libjackmp.a ringbuffer.o
$cp libjackmp.a libjack.a



2. コンパイル記録

(1)TiMidity++
あっさりコンパイルできた。

(2) bio2jack
configureのなかの-ldlを消した。
あっさりコンパイルできた。

(3) Jackbeat

1)llibsndfile-1.0.17.tar.gz
$CFLAGS=-O2 ./configure
$make
$make install

$CFLAGS=-O2 ./configure
$make
jackbeat-msg.o:msg.c:(.text+0x112): undefined reference to `jack_ringbuffer_read'等 ringbuffer がエラーになる。
め んどいからやめ

むぅ他のは結構はまるな 後日ゆっくりチャレンジしよう。

(4)fluidsynth (04/19)
fluidsynth-1.0.7.tar.gz
$CFLAGS=-O2 ./configure
**************************************************************
Summary:
ALSA:                  no
OSS:                   no
MidiShare:             no
JACK:                  yes
CoreAudio:             no
LADSPA support:        no
LASH support:          no
LADCCA support:        no
Readline:              no
Debug:                 no
Profiling:             no
use long long:         no
**************************************************************
$make
jack/jack.h:32: error: conflicting types for 'pthread_t'
fluid_jack.cで
#define pthread_t jack_pthread_t
#include <jack/jack.h>
#undef pthread_t
とした
jack/types.h:27: error: conflicting types for 'int8_t'
jack/types.h:31: error: conflicting types for 'int32_t'
jack/types.h:32: error: conflicting types for 'uint32_t'
コメントアウトした。

コンパイルはできたけど
$fluidsynth  -a jack -j  サウンドフォント MIDIファイル.mid 
でならない。。。。  なんと実はこのバージョン dsound でも鳴らない。

fluidsynth-1.0.6.tar.gz ではちゃんと鳴ったよかった♪

(5)tuneit-0.3.tar.gz(070420)
configure.ac のalsa関係を削除
$aclocal
$autoconf
$autoheader
$automeke
$CFLAGS=-O2 ./configure
src/tuneit.c のalsa関係を #if 0  #endif でかこんで 
//  audio = &alsaInterface;
  audio = &jackInterface;
のようにかきかえ

動いたけどテストしてない

(6)jack_capture-0.9.3.tar.gz(070420)
#define pthread_t jack_pthread_t
#include <jack/jack.h>
#undef pthread_t

#define usleep(a) Sleep(a1000)
#define sleep(a)  Sleep(a*1000)

みたいな感じであっさり動いた。



2007.04.17
 sけいし(s_keishi@yahoo.co.jp)



戻る



このHPの内容に問題等 ありましたらsけいし(skeishi@yahoo.co.jp)までメールを下さい。

sけいし発HP
[PR]看護師の好条件求人なら:転職のプロがサポート!年間5万人が利用