@@ -5,79 +5,89 @@ title: "How does JACK compare to ..."
55
66# How does JACK compare to ...
77
8- ## How does JACK compare to...?
8+ Please mail the jack-devel mailing list if you have any concerns about
9+ the answers to these questions. Also, no disrespect to any effort is
10+ intended, only a recognition of different goals and design principles.
911
10- Please mail the jackit-devel mailing list if you have any concerns about the
11- answers to these questions. Also, no disrespect to any effort is intended,
12- only a recognition of different goals and design principles.
13-
14- ### Other Linux-centered systems
12+ ## Other Linux-centered systems
1513
1614* ALSA: both a HAL and a user-space library for audio under Linux.
17- ALSA is used to provide the default audio i/o driver for JACK.
18- ALSA is a very powerful audio API, but it does not provide a
19- callback-based API or offer any solutions for inter-application
20- communication, though it has been discussed and is theoretically possible.
15+ ALSA is used to provide the default audio i/o driver for JACK. ALSA
16+ is a very powerful audio API, but it does not provide a callback-based
17+ API or offer any solutions for inter-application communication, though
18+ it has been discussed and is theoretically possible.
19+
2120* aRts, a streaming media architecture:
2221 aRts was not designed from the ground up with low-latency in mind.
23- Not a fault, but a design decision. A jack output element could be written
24- for aRts, though, as far as I can tell.
25- Note: aRts is not really used anymore by any Linux systems.
22+ Not a fault, but a design decision. A jack output element could be
23+ written for aRts, though, as far as I can tell. Note: aRts is not
24+ really used anymore by any Linux systems.
25+
2626* GStreamer, another streaming media architecture:
2727 GStreamer is designed for in-process construction of media pipelines,
2828 and is not used to link applications.
29- JACK elements for GStreamer are under available.
29+ JACK elements for GStreamer are under available.
30+
3031* LADSPA, LV2: LADSPA is an internal plugin API for DSP routines,
31- not a way of linking external applications together.
32- * Phonon
33- * Canberra
32+ not a way of linking external applications together.
3433
35- ### Cross-platform systems
34+ * Phonon
3635
37- * PortAudio:
36+ * Canberra
37+
38+ ## Cross-platform systems
39+
40+ * PortAudio:
3841 a "cross platform, open-source, audio I/O library" offering both
39- callback- and blocking I/O-based APIs.
40- PortAudio backends exist for various Windows, Mac, and Unix HALs.
41- It is mainly focused on hardware I/O rather than a general concept of
42- ports and connections. The callback-style API used by both projects
43- makes it relatively easy to port between the two (no pun intended),
44- and there is a JACK backend for PortAudio so porting is not always necessary.
45- * SDL:
46- * SFML:
47- * OpenAL:
48-
49- ### MacOS- and/or Windows-centered systems
42+ callback- and blocking I/O-based APIs. PortAudio backends exist for
43+ various Windows, Mac, and Unix HALs. It is mainly focused on hardware
44+ I/O rather than a general concept of ports and connections. The
45+ callback-style API used by both projects makes it relatively easy to
46+ port between the two (no pun intended), and there is a JACK backend
47+ for PortAudio so porting is not always necessary.
48+
49+ * SDL:
50+
51+ * SFML:
52+
53+ * OpenAL:
54+
55+ ## MacOS- and/or Windows-centered systems
5056
5157* CoreAudio, the Mac OS X audio API:
52- Very similar to JACK in some the sense of being centered on
53- a synchronous-execution-via-callback API, but does not include
58+ Very similar to JACK in some the sense of being centered on a
59+ synchronous-execution-via-callback API, but does not include
5460 inter-application audio routing. CoreAudio also includes a
55- hardware-level abstraction layer, whereas JACK uses higher-level drivers
56- for that purpose. The first JACK driver was based on ALSA,
57- but others are available for the OSS and PortAudio interfaces.
61+ hardware-level abstraction layer, whereas JACK uses higher-level
62+ drivers for that purpose. The first JACK driver was based on ALSA, but
63+ others are available for the OSS and PortAudio interfaces.
64+
5865* ASIO:
59- a HAL for both Windows and MacOS that replaces the native device driver model
60- with something much cleaner. It supports hardware-level latencies,
61- but it does not connect applications to each other.
62- Also, it is subject to license restrictions, and does not exist for Linux
63- (though it would not be impossible to implement it on top of ALSA).
66+ a HAL for both Windows and MacOS that replaces the native device
67+ driver model with something much cleaner. It supports hardware-level
68+ latencies, but it does not connect applications to each other. Also,
69+ it is subject to license restrictions, and does not exist for Linux
70+ (though it would not be impossible to implement it on top of ALSA).
71+
6472* ReWire, an inter-app communications API for Windows and MacOS
65- from PropellerHeads and Steinberg, ReWire is similar in that it provides
66- inter-application audio routing, but does not allow for
67- fully independent processes, and has silly restrictions
68- ("up to 64 channels", etc).
69- JACK also comes without silly license restrictions.
73+ from PropellerHeads and Steinberg, ReWire is similar in that it
74+ provides inter-application audio routing, but does not allow for fully
75+ independent processes, and has silly restrictions ("up to 64
76+ channels", etc). JACK also comes without silly license restrictions .
77+
7078* VST, AudioUnits, DirectX, MAS, RTAS:
7179 these are all Windows/MacOS audio plugin APIs. None of them permit
72- inter-application data sharing. Some plugin hosts can make this possible
73- by using some other system such as ReWire. These APIs also require that
74- the callback you write to process/generate data be executed
75- in the context of the plugin host;
76- JACK allows your callback to be executed within the context
77- of your own application (if you wish to).
80+ inter-application data sharing. Some plugin hosts can make this
81+ possible by using some other system such as ReWire. These APIs also
82+ require that the callback you write to process/generate data be
83+ executed in the context of the plugin host; JACK allows your callback
84+ to be executed within the context of your own application (if you wish
85+ to).
86+
7887* Virtual Audio Cable, VAC (Windows only):
7988 Creates a set of virtual audio devices named "Virtual Cables", each
80- consisting of a pair of the waveform input/output devices. Applications
81- can send audio stream to an output side of a cable, and any other
82- application can receive this stream from an input side. ASIO-compatible.
89+ consisting of a pair of the waveform input/output devices.
90+ Applications can send audio stream to an output side of a cable, and
91+ any other application can receive this stream from an input side.
92+ ASIO-compatible.
8393
0 commit comments