Difference between revisions of "Applications and libraries/Music and sound"

From HaskellWiki
Jump to navigation Jump to search
(added HaskellDSP, SuperCollider, Synthesizer)
 
(41 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{unknown copyright}}
 
 
{{LibrariesPage}}
 
{{LibrariesPage}}
  +
[[Category:Music]]
   
== Music and Sound ==
+
== Applications ==
   
  +
;[http://www.cse.unsw.edu.au/~dons/hmp3.html hmp3]
=== Sound Libraries ===
 
 
:hmp3 is a curses-based mp3 player frontend to mpg321 and mpg123. It is written in Haskell. It is designed to be simple, fast and robust. It's very stable, with one instance running for several months.
  +
 
;[http://urchin.earth.li/darcs/ian/minstrel/ minstrel]
 
:Minstrel is a curses frontend to the GStreamer library written in Haskell.
  +
  +
;[http://www.lintao.org/repos/hxine hxine]
  +
:A console frontend to the xine library
  +
  +
;[https://github.com/potomak/haskell-player haskell-player]
  +
:A console (TUI) music player based on afplay
  +
  +
;[http://www.annodex.net/~conrad/software/hogg.html HOgg]
  +
:A library for handling the Ogg container format. Note that this just deals with the Ogg container, not with the contained Vorbis audio or Theora video etc. Includes a commandline tool (hogg) for querying files, merging and ripping tracks, hexdumping packets and pages and so on.
  +
  +
;[https://tidalcycles.org/ TidalCycles]
  +
:Tidal Cycles (or just Tidal for short) is software for making patterns with code, whether live coding music at algoraves or composing in the studio.
  +
 
== Libraries ==
  +
  +
=== Music composition ===
  +
 
;[http://www.haskell.org/haskellwiki/Haskore The Haskore Computer Music System]
 
:Haskore is a collection of Haskell modules designed for expressing musical structures in the high-level, declarative style of functional programming. Haskore is a means for describing music - in particular Western Music - rather than sound. It is not a vehicle for synthesizing sound produced by musical instruments, for example, although it does capture the way certain (real or imagined) instruments permit control of dynamics and articulation. Haskore compositions can be translated into various audible formats like MIDI, CSound and SuperCollider. (Former versions in LISP could generate traditional notation output, but this is currently not available in the Haskell version.)
  +
  +
;[[Haskore]] related projects
  +
 
;[http://meltin.net/hacks/haskell/ HasChorus]
 
:A set of Haskell modules written on top of Haskore to make it easier to sequence simple, repetitive music.
  +
  +
;[[MIDI]] processing libraries, both for MIDI file handling and real-time MIDI
  +
  +
;[[Hommage]]
  +
:Haskell Offline Music Manipulation And Generation EDSL - a highly experimental sound production library.
  +
  +
=== Signal processing ===
  +
  +
;[http://hackage.haskell.org/package/HarmTrace HarmTrace]
  +
:Harmony Analysis and Retrieval of Music with Type-level Representations of Abstract Chords Entities
  +
  +
;[[DSP|HaskellDSP]]
 
:Signal processing coded in Haskell. Contains also some matrix and stochastic computations which are required for signal processing.
  +
:Now managed with [http://darcs.haskell.org/dsp/ darcs repository], shipped via [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dsp Hackage].
  +
  +
;[[Synthesizer|Synthesizer library]]
 
:Signal processing related to audio effects coded in plain Haskell. There is both a low-level interface and a framework for automatical inference of sample rate and amplitude of signals in a sound processing network. This generalizes the usual restricted splitting into audio rate and control rate signals. There is an interface for using synthesized sounds for rendering [[Haskore]] music. Recent versions require [[Numeric Prelude]]. See an [http://dafx04.na.infn.it/WebProc/Proc/P_201.pdf early paper] on the concepts. Highly experimental.
  +
  +
;[http://www.cs.nott.ac.uk/~ggg/ YampaSynth]
  +
:Modular synthesizer using [http://www.haskell.org/yampa/ Yampa]. Can process SoundFont files. There was a presentation at Haskell Workshop 2007 in Freiburg, Germany, of which a [http://video.google.com/videoplay?docid=-8742804023527878309 video] was recorded.
  +
  +
=== MIDI ===
  +
  +
;[http://hackage.haskell.org/package/hmidi hmidi]
  +
:Partial implementation of the MIDI 1.0 standard to communicate with physical or virtual MIDI devices
  +
  +
=== Wrappers ===
   
 
;HOpenAL
 
;HOpenAL
Line 12: Line 67:
 
:Contains bindings to libSDL, libSDL_gfx, libSDL_image, libSDL_mixer and libSDL_ttf.
 
:Contains bindings to libSDL, libSDL_gfx, libSDL_image, libSDL_mixer and libSDL_ttf.
   
  +
;[[JACK]] and [[ALSA]] wrappers by [http://open-projects.net/~shahn/index.php?seite=code Sönke Hahn]
;[http://haskelldsp.sourceforge.net/ HaskellDSP]
 
:Signal processing coded in Haskell. Contains also some matrix and stochastic computations which are required for signal processing.
 
   
;[http://www.slavepianos.org/rd/f/409875/ SuperCollider]
+
;[[SuperCollider]] by [http://www.slavepianos.org/rd/f/207949/ Rohan Drape]
:Interface to the realtime software synthesizer [http://www.audiosynth.com/ SuperCollider]. Experimental.
+
:Interface to the realtime software synthesizer [http://www.audiosynth.com/ SuperCollider]. Experimental. Includes widely useful [http://cnmat.berkeley.edu/OpenSoundControl/ OpenSoundControl] module.
   
  +
;[[CSound]]
;[http://darcs.haskell.org/synthesizer/ Synthesizer library]
 
:Signal processing related to audio effects coded in plain Haskell. There is both a low-level interface and a framework for automatical inference of sample rate and amplitude of signals in a sound processing network. This generalizes the usual restricted splitting into audio rate and control rate signals. There is an interface for using synthesized sounds for rendering [[Haskore]] music. Recent versions require [http://darcs.haskell.org/numericprelude/ NumericPrelude]. Highly experimental.
 
   
  +
;[https://hackage.haskell.org/package/webrtc-vad webrtc-vad]
=== Applications ===
 
  +
:Wrapper around the WebRTC Voice Activity Detection library
   
;[http://www.cse.unsw.edu.au/~dons/hmp3.html hmp3]
+
;[http://www.student.nada.kth.se/~alfonsoa/HLADSPA/ HLADPSA]
  +
:A port of [http://www.ladspa.org/ LADSPA] (Linux Audio Developer's Simple Plugin API) to Haskell. Still highly experimental. The project can be regarded as an example of how to create plugins and shared libraries in Haskell without making use of [http://www.cse.unsw.edu.au/~dons/hs-plugins/ hs-plugins].
:hmp3 is a curses-based mp3 player frontend to mpg321 and mpg123. It is written in Haskell. It is designed to be simple, fast and robust. It's very stable, with one instance running for several months.
 
   
  +
;[http://mcs.une.edu.au/~bsinclai/code/libmpd-haskell.html MPD client library]
;[http://urchin.earth.li/darcs/ian/minstrel/ minstrel]
 
  +
:A client library for controlling an MPD server.
:Minstrel is a curses frontend to the GStreamer library written in Haskell.
 
   
  +
;[[OpenAL]]
=== Composing Music ===
 
  +
:OpenAL (short for Open Audio Library) is a library for creation of a virtual 3D world of sound.
   
  +
;[[ALUT]]
;[http://haskell.org/haskore/ The Haskore Computer Music System]
 
  +
:The OpenAL Utility Toolkit (ALUT) is an extension to [[OpenAL]]
:Haskore is a collection of Haskell modules designed for expressing musical structures in the high-level, declarative style of functional programming. Haskore is a means for describing music - in particular Western Music - rather than sound. It is not a vehicle for synthesizing sound produced by musical instruments, for example, although it does capture the way certain (real or imagined) instruments permit control of dynamics and articulation. Haskore compositions can be translated into various executable formats like MIDI and printed in traditional notation.
 
   
  +
== Hackage==
;[http://meltin.net/hacks/haskell/ HasChorus]
 
  +
:A set of Haskell modules written on top of Haskore to make it easier to sequence simple, repetitive music.
 
  +
* [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:Sound Sound libraries on Hackage]
  +
  +
== Data formats ==
  +
  +
Different sound libraries use different in-memory data formats. For a summary by category, see [[Sound data structures]].
  +
  +
[[Category:Music|*]]

Latest revision as of 20:07, 5 December 2021

This page contains a list of libraries and tools in a certain category. For a comprehensive list of such pages, see Applications and libraries.

Applications

hmp3
hmp3 is a curses-based mp3 player frontend to mpg321 and mpg123. It is written in Haskell. It is designed to be simple, fast and robust. It's very stable, with one instance running for several months.
minstrel
Minstrel is a curses frontend to the GStreamer library written in Haskell.
hxine
A console frontend to the xine library
haskell-player
A console (TUI) music player based on afplay
HOgg
A library for handling the Ogg container format. Note that this just deals with the Ogg container, not with the contained Vorbis audio or Theora video etc. Includes a commandline tool (hogg) for querying files, merging and ripping tracks, hexdumping packets and pages and so on.
TidalCycles
Tidal Cycles (or just Tidal for short) is software for making patterns with code, whether live coding music at algoraves or composing in the studio.

Libraries

Music composition

The Haskore Computer Music System
Haskore is a collection of Haskell modules designed for expressing musical structures in the high-level, declarative style of functional programming. Haskore is a means for describing music - in particular Western Music - rather than sound. It is not a vehicle for synthesizing sound produced by musical instruments, for example, although it does capture the way certain (real or imagined) instruments permit control of dynamics and articulation. Haskore compositions can be translated into various audible formats like MIDI, CSound and SuperCollider. (Former versions in LISP could generate traditional notation output, but this is currently not available in the Haskell version.)
Haskore related projects
HasChorus
A set of Haskell modules written on top of Haskore to make it easier to sequence simple, repetitive music.
MIDI processing libraries, both for MIDI file handling and real-time MIDI
Hommage
Haskell Offline Music Manipulation And Generation EDSL - a highly experimental sound production library.

Signal processing

HarmTrace
Harmony Analysis and Retrieval of Music with Type-level Representations of Abstract Chords Entities
HaskellDSP
Signal processing coded in Haskell. Contains also some matrix and stochastic computations which are required for signal processing.
Now managed with darcs repository, shipped via Hackage.
Synthesizer library
Signal processing related to audio effects coded in plain Haskell. There is both a low-level interface and a framework for automatical inference of sample rate and amplitude of signals in a sound processing network. This generalizes the usual restricted splitting into audio rate and control rate signals. There is an interface for using synthesized sounds for rendering Haskore music. Recent versions require Numeric Prelude. See an early paper on the concepts. Highly experimental.
YampaSynth
Modular synthesizer using Yampa. Can process SoundFont files. There was a presentation at Haskell Workshop 2007 in Freiburg, Germany, of which a video was recorded.

MIDI

hmidi
Partial implementation of the MIDI 1.0 standard to communicate with physical or virtual MIDI devices

Wrappers

HOpenAL
A Haskell Binding for OpenAL and ALUT. The goal of this project is to provide a binding for OpenAL, a cross-platform 3D audio API, appropriate for use with gaming applications and many other types of audio applications.
hsSDL
Contains bindings to libSDL, libSDL_gfx, libSDL_image, libSDL_mixer and libSDL_ttf.
JACK and ALSA wrappers by Sönke Hahn
SuperCollider by Rohan Drape
Interface to the realtime software synthesizer SuperCollider. Experimental. Includes widely useful OpenSoundControl module.
CSound
webrtc-vad
Wrapper around the WebRTC Voice Activity Detection library
HLADPSA
A port of LADSPA (Linux Audio Developer's Simple Plugin API) to Haskell. Still highly experimental. The project can be regarded as an example of how to create plugins and shared libraries in Haskell without making use of hs-plugins.
MPD client library
A client library for controlling an MPD server.
OpenAL
OpenAL (short for Open Audio Library) is a library for creation of a virtual 3D world of sound.
ALUT
The OpenAL Utility Toolkit (ALUT) is an extension to OpenAL

Hackage

Data formats

Different sound libraries use different in-memory data formats. For a summary by category, see Sound data structures.