Content deleted Content added
m →General |
m Disambiguating links to Object-orientation (link changed to Object-oriented programming) using DisamAssist. |
||
(388 intermediate revisions by more than 100 users not shown) | |||
Line 1:
{{short description|None}}
{{multiple issues|
{{notability|date=January 2015}}
{{original research|date=January 2015}}
{{more citations needed|date=January 2015}}
}}
Software '''audio synthesis environments''' typically consist of an [[audio programming language]] (which may be [[Visual programming language|graphical]]) and a user environment to design/run the language in. Although many of these environments are comparable in their abilities to produce high-quality audio, their differences and specialties are what draw users to a particular platform. This article compares noteworthy audio synthesis environments, and enumerates basic issues associated with their use.
==Subjective comparisons==
Audio synthesis environments comprise a wide and varying range of software and hardware configurations. Even different versions of the same environment can differ dramatically. Because of this broad variability, certain aspects of different systems cannot be directly compared. Moreover, some levels of comparison are either very difficult to objectively quantify, or depend purely on personal preference.
Some of the commonly considered subjective attributes for comparison include:
* [[Usability]] (how difficult is it for beginners to generate some kind of meaningful output)
* [[Usability#Definition|Learnability]] (how steep the [[learning curve]] is for new, average, and advancing users)
* Sound "quality" (which environment produces the most subjectively appealing sound)
* [[Flow (psychology)|Creative flow]] (in what ways does the environment affect the creative process - e.g. guiding the user in certain directions)
These attributes can vary strongly depending on the tasks used for evaluation.
Some other common comparisons include:
* Audio performance (issues such as throughput, latency, concurrency, etc.)
* System performance (issues such as ''buggyness'' or stability)
* Support and community (who uses the system and who provides help, advice, training and tutorials)
* System capabilities (what is possible and what is not possible [regardless of effort] with the system)
* Interoperability (how well does the system integrate with other systems from different vendors)
=== Building blocks of sound and sound "quality" ===
Audio software often has a slightly different "sound" when compared against others. This is because there are different ways to implement the basic building blocks (such as [[sinewave]]s, [[pink noise]], or [[Fast Fourier transform|FFT]]) which result in slightly different aural characteristics. Although people can of course prefer one system's "sound" over another, perhaps the best output can be determined by using sophisticated audio analyzers in combination with the listener's ears. The idea of this would be to arrive at what most would agree is as "pure" a sound as possible.
=== User interface ===
The interface to an audio system often has a significant influence on the creative flow of the user, not because of what is ''possible'' (the stable/mature systems listed here are fully featured enough to be able to achieve an enormous range of sonic/compositional objectives), but because of ''what is made easy'' and ''what is made difficult''. This is again very difficult to boil down to a brief comparative statement. One issue may be which [[interface metaphor]]s are used (e.g. boxes-and-wires, documents, flow graphs, hardware mixing desks).
==General==
{| class="wikitable sortable" style="text-align: center"
! Name
! Creator
! Primary
! First release date
! Most recent update
! Most recent version
! Cost
! License
! Main user interface type
! Development status
|-
|Bidule
|[[Plogue Art et Technologie, Inc.|Plogue]]
|Realtime synthesis, [[live coding]], [[algorithmic composition]], [[acoustics|acoustic research]], all-purpose programming language
|2002
|2017-06
|0.9757
|{{nonfree}}
|Proprietary
|Graphical
|Mature
|-
| [[ChucK]]
| Ge Wang and Perry Cook
|
| 2004
| 2023-12
|
| {{free}}
| [[GNU General Public License|GPL]]
| Document
| Immature
Line 35 ⟶ 69:
| [[Csound]]
| [[Barry Vercoe]]
| Realtime performance, sound synthesis, [[algorithmic composition]], [[acoustics|acoustic research]]
| 1986
| 2022-10-22
|
| {{free}}
| [[GNU Lesser General Public License|LGPL]]
| Document, graphical
| Mature
|-
| [[Impromptu (programming environment)|Impromptu]]
| Andrew Sorensen
| [[Live coding]], [[algorithmic composition]], hardware control, realtime synthesis, 2d/3d graphics programming
| 2006
| 2010-10
| v2.5
| {{free}}
| Proprietary
| Document
| Stable
|-
| [[Keykit]]
| Tim Thompson
| [[MIDI]] synthesis and [[algorithmic composition]]
| 1995
| 2021-03-15
| v7.7e
| {{free}}
| [[GNU General Public License|GPL]]
| Graphical
| Mature
|-
| [[Kyma (sound design language)|Kyma]]
| [[Carla Scaletti]]
| Realtime audio synthesis, hardware control, [[Acoustic Research|acoustic research]], [[algorithmic composition]], data sonification, live-performance multi-effects processing
| 1986
| 2018-9-03
| v7.23
| {{nonfree}}
| Proprietary
| Graphical
| Mature
|-
| [[Max/MSP]]
| [[Miller Puckette]]
| Realtime audio + video synthesis, hardware control, GUI design
|
| 2024-01-17
| v8.6.0
| {{nonfree}}
| Proprietary
| Graphical
| Mature
Line 55 ⟶ 124:
| [[Pure Data]]
| [[Miller Puckette]]
| Realtime synthesis, hardware control, [[acoustics|acoustic research]]
|
| 2023-07-04
|
| {{free}}
| [[BSD licenses|BSD]]-like
| Graphical
|
|-
| [[Reaktor]]
| [[Native Instruments]]
| Realtime synthesis, hardware control, [[GUI]] design
| 1996
| 2023-04-19
| 6.5
| {{nonfree}}
| Proprietary
| Graphical
| Mature
|-
| [[SuperCollider]]
| James McCartney
| Realtime synthesis, [[live coding]], [[algorithmic composition]], [[
|
| 2023-02-19
|
| {{free}}
| [[GNU General Public License|GPL]]
| Document
|
|-
| [[Sporth]]
| Paul Batchelor
| Sound design, algorithmic composition, live coding, embedded systems
| 2015
| 2016-05
| -
| {{free}}
| [[MIT]]
| Document
| Immature
|-
| [[SynthEdit]]
|Jeff McClintock
|Realtime synthesis, live coding, effects coding, GUI design
|1999
|2021
|1.4
| {{nonfree}}
|Proprietary/BSD
|Graphical
|Mature
|-
|[[VCV Rack]]
|Andrew Belt
|Realtime audio synthesis
|2017-09
|2022-02-26
|2.1.0
| {{free}}
|[[GNU General Public License|GPL]]
|Graphical
|Immature
|}
==Programming language features==
<!-- Note: Because various of these features are not necessarily "good" or "bad", it is not recommended to use the WKP templates that turn the table cells green for "Yes" and red for "No"! -->
{|
! Name
! Textual/graphical
! [[Object-oriented programming|Object-oriented]]
! [[Type system]]
|-
|Bidule
|Graphical
|No
|
|-
| [[ChucK]]
| Textual
| Yes
| Static
|-
| [[Csound]]
| Textual/Graphical (FLTK/Qt/HTML5)
|
| In development
|
| [[Impromptu (programming environment)|Impromptu]]
| Mostly textual
| -
| Dynamic & static
|-
| [[Kyma (sound design language)|Kyma]]
| Mostly Graphical
| Yes
| Dynamic
|-
| [[Max/MSP]]
| Graphical
| No
|
|-
| [[Pure Data]]
| Graphical
| No
|
|
| [[Reaktor]]
| Graphical
| No
|
|-
| [[SuperCollider]]
| Textual/Graphical (Cocoa/Swing/Qt)
| Yes
|
|-
| [[SynthEdit]]
|Graphical
|Yes
|Static
|-
| [[MPEG-4 Structured Audio|MPEG-4/SA]]
| Textual
| No
| No
|-
|}
==Data interface methods==
Interfaces between the language environment and other software or hardware (not ''user'' interfaces).
{| class="wikitable" style="text-align: center"
! rowspan="2" | Name
! colspan="2" | Shell scripting
! colspan="2" | [[MIDI]]
! colspan="2" | [[
! rowspan="2" | [[Human interface device|HID]]
! rowspan="2" | [[Virtual Studio Technology|VST]]
! colspan="2" | [[Audio Units]]
! rowspan="2" | Other
|-
Line 132 ⟶ 274:
! In
! Out
! As host
! As unit
|-
|Bidule
|
|
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
|
|-
| [[ChucK]]
| {{yes}}
| {{yes}}
|
|
|
|
| {{yes}}
|
|
|
| Chunity allows to run ChucK in the Unity game engine
|-
| [[Csound]]
|
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
|
| {{no}}
|
|
| binding from [[Haskell]] (hCsound), [[C (programming language)|C]], [[C++]], [[Java (programming language)|Java]], [[JavaScript]], [[Lisp (programming language)|Lisp]], [[Lua (programming language)|Lua]], [[Python (programming language)|Python]]
|-
| [[Impromptu (programming environment)|Impromptu]]
|
|
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
|
|
| {{yes}}
| {{no}}
| Bidirectional [[Scheme (programming language)|Scheme]] to [[Objective-C]] bridge
|-
| [[Kyma (sound design language)|Kyma]]
|
|
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
|
|
|
|
|-
| [[Max/MSP]]
|
|
|
|
|
|
| {{yes}}
| {{yes}}
| {{yes}}
|
|
|-
| [[Pure Data]]
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{some}}
| {{some}}
|
* bindings for [[GStreamer]], [[Java (programming language)|Java]], [[Lua (programming language)|Lua]], [[Python (programming language)|Python]]
* the Camomile [[Plug-in (computing)|plug-in]] may host PD as plug-in within DAW
* PD-extended presently has multiple options to host LADSPA plug-ins within PD environment
|-
| [[Reaktor]]
|
|
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
|
| {{yes}}
| {{no}}
| {{yes}}
|
|-
| [[SuperCollider]]
|
|
|
|
|
|
|
|
| {{no}}
| {{yes}}
| LADSPA Host, scsynth can be controlled by OSC messages (Haskell, Scala, Python, Ruby, Scheme etc.)
|-
| [[SynthEdit]]
|
|
| {{yes}}
| {{yes}}
| {{no}}
| {{no}}
|
| {{yes}}
| {{no}}
| {{yes}}
|
|-
|[https://vcvrack.com/ VCV Rack]
|
||
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
|
| {{yes}}
|
|
|
|-
|}
==Technical==
{| class="wikitable sortable" style="text-align: center"
! Name
! Operating system(s)
! Source code language(s)
! Programming ([[Plug-in (computing)|plug-in]]) API language(s)
! Other technical features
|-
|Bidule
|[[macOS]], [[Microsoft Windows|Windows]]
|[[C++]]
|[[C++]]
|[[Audio Stream Input/Output|ASIO]]/ CoreAudio (Mac)/ [[ReWire]] support. Possible to write custom modules via API if [[Non-disclosure agreement|NDA]] accepted.
|-
| [[ChucK]]
| [[macOS]], [[Linux]], [[Microsoft Windows|Windows]]
| [[C++]]
| [[C++]]
| Unified timing mechanism (no separation between audio-rate and control-rate), [[command-line]] access
|-
| [[Csound]]
| [[macOS]], [[Linux]], [[Microsoft Windows|Windows]]
| [[C (programming language)|C]], [[C++]]
| [[C (programming language)|C]]; also [[C++]], [[Java (programming language)|Java]], [[Lisp (programming language)|Lisp]], [[Lua (programming language)|Lua]], [[Python (programming language)|Python]], [[Tcl]]
| IDE (QuteCsound), multitrack interface (blue); several analysis/resynthesis facilities; can compute double-precision audio; [[Python (programming language)|Python]] and [[LuaJIT]] [[algorithmic composition]] library; multi-threaded processing
|-
| [[Impromptu (programming environment)|Impromptu]]
| [[macOS]]
| [[Lisp (programming language)|Lisp]], [[Objective-C]], [[Scheme (programming language)|Scheme]]
| [[C (programming language)|C]], [[C++]], [[Objective-C]], [[Scheme (programming language)|Scheme]]
| Native access to most macOS APIs including [[Core Image]], [[Quartz (graphics layer)|Quartz]], [[QuickTime]] and [[OpenGL]]. Impromptu also includes its own statically typed (inferencing) systems language for heavy numeric processing - OpenGL, RT AudioDSP etc.
|-
| [[Kyma (sound design language)|Kyma]]
| [[macOS]], [[Microsoft Windows|Windows]]
| [[Smalltalk]], [[C (programming language)|C]], [[Objective-C]]
|[[Smalltalk]]
|The Kyma hardware processes user algorithms at [[Sample rate|sample-rate]], as opposed to a vector of samples<ref>{{Cite web|url=http://www.symbolicsound.com/cgi-bin/bin/view/Products/ChoosingTheRightConfigurationForYourApplication|title=Symbolic Sound Kyma: Products ChoosingTheRightConfigurationForYourApplication|website=www.symbolicsound.com|language=en|access-date=2018-10-13}}</ref> Kyma has a [[Frequency]] resolution of .0026 [[Hz]], and large multi-dimensional arrays can be transferred through spectral algorithms at the speed of a single [[Window function#Discrete-time signals|Frame]].
|-
| [[Max/MSP]]
| [[macOS]], [[Microsoft Windows|Windows]]
| [[C (programming language)|C]], [[Objective-C]]
| [[C (programming language)|C]], [[Java (programming language)|Java]], [[JavaScript]], also [[Python (programming language)|Python]] and [[Ruby (programming language)|Ruby]] via externals
|
|-
| [[Pure Data]]
| [[macOS]], [[Linux]], [[Microsoft Windows|Windows]], [[iPod]], [[Android (operating system)|Android]]
| [[C (programming language)|C]], [[Tcl]] (for GUI)
| [[C (programming language)|C]], [[C++]], [[FAUST (programming language)|FAUST]], [[Haskell]], [[Java (programming language)|Java]], [[Lua (programming language)|Lua]], [[Python (programming language)|Python]], [[Pure (programming language)|Q]], [[Ruby (programming language)|Ruby]], [[Scheme (programming language)|Scheme]], others
|
|-
| [[Reaktor]]
| [[macOS]], [[Microsoft Windows|Windows]]
|
|
|
|-
| [[SuperCollider]]
| [[macOS]], [[Linux]], [[Microsoft Windows|Windows]], [[FreeBSD]]
| [[C (programming language)|C]], [[C++]], [[Objective-C]]
| [[C++]]
| [[Client-server]] architecture; client and server can be used independently, [[command-line]] access
|-
| [[Sporth]]
| [[Linux]], [[macOS]]
| [[C (programming language)|C]]
| [[C (programming language)|C]], [[Scheme (programming language)|Scheme]]
| Many frontends built using the API exist, including [[Chuck (API)|Chuck]], [[Pure Data|PD]], and [[LADSPA]]
|-
| [[SynthEdit]]
| [[Windows]], [[macOS]]
| [[C++]]
| [[C++]]
|
|-
|[https://vcvrack.com/ VCV Rack]
|[[macOS]], [[Linux]], [[Microsoft Windows|Windows]]
|[[C++]]
|[[C++]]
|
|}
==See also==
* [[List of music software]]
* [[List of audio programming languages]]
== References ==
{{Reflist}}
{{DEFAULTSORT:Audio synthesis environment comparison}}
[[Category:Audio programming languages]]
[[Category:Electronic music software]]
[[Category:Free audio software| ]]
[[Category:Multimedia software comparisons]]
[[Category:Software synthesizers]]
|