Personal tools

OpenAL

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Additional software: HackagePackage)
m (Windows specific actions)
 
(9 intermediate revisions by 2 users not shown)
Line 11: Line 11:
 
== Installation ==
 
== Installation ==
  
{{PackageInfoBox|name=OpenAL|darcs-code=OpenAL/OpenAL/}}
+
* Hackage: https://hackage.haskell.org/package/OpenAL
 +
* Repository: git clone https://github.com/haskell-openal/OpenAL
  
=== Windows specific actions ===
 
If you downloaded from Hackage, you might want to know, [[How to unpack a tar file in windows]]
 
  
Create a directory for include files, without spaces in the name, for example:
+
=== Windows specific actions ===
  C:\usr\local\include
+
 
+
Define the environment variable C_INCLUDE_PATH and assign it the name of the include directory (the full path), for example, in a .bat file, before the build commands:
+
  Set C_INCLUDE_PATH=C:\usr\local\include
+
 
+
As you will need this variable more often, it is best to [http://support.microsoft.com/kb/310519 set it globally].
+
Copy the directory include\AL from the package to
+
  C:\usr\local\include\AL
+
  
 +
Before installing the Haskell package, you need to install the C++ package of OpenAL:
 +
* download http://openal.org/downloads/oalinst.zip
 +
* unzip it
 +
* run oalinst.exe; this installs OpenAL32.dll in your system directory
 +
* to find find out where OpenAL32.dll has gone, give command
 +
:<code>where OpenAL32.dll</code>
 +
:(You will need this later, when you distribute your application.)
 +
* download the development package from http://www.openal-soft.org/#download
 +
* unzip this to, for example, <code>C:\Libraries</code>
 +
* Set environment variables as follows:
 +
<pre>
 +
Set LIBRARY_DIR=C:\Libraries
 +
Set C_INCLUDE_PATH=%LIBRARY_DIR%\openal-soft-1.16.0-bin\include
 +
Set LIBRARY_PATH=%LIBRARY_DIR%\openal-soft-1.16.0-bin\libs\Win32
 +
</pre>
 +
:If you need these variables more often, set them [http://www.computerhope.com/issues/ch000549.htm permanently].
  
 
=== For all platforms ===
 
=== For all platforms ===
See [[Cabal/How to install a Cabal package | How to install a Cabal package]].
+
 
 +
Give command <code>cabal install OpenAL</code>
  
 
== Tutorials ==
 
== Tutorials ==
Line 40: Line 48:
  
 
== Examples ==
 
== Examples ==
 +
 
* [http://code.haskell.org/OpenAL/OpenAL/examples/test/TestDevice.hs TestDevice.hs]
 
* [http://code.haskell.org/OpenAL/OpenAL/examples/test/TestDevice.hs TestDevice.hs]
  
  
 
== Additional software ==
 
== Additional software ==
 +
 
* {{HackagePackage|id=StateVar}}: This package contains state variables, which are references in the IO monad, like IORefs or parts of the OpenGL state
 
* {{HackagePackage|id=StateVar}}: This package contains state variables, which are references in the IO monad, like IORefs or parts of the OpenGL state
 
* {{HackagePackage|id=ObjectName}}: Explicitly handled object names. This tiny package contains the class ObjectName, which corresponds to the general notion of explicitly handled identifiers for API objects, e.g. a texture object name in OpenGL or a buffer object name in OpenAL
 
* {{HackagePackage|id=ObjectName}}: Explicitly handled object names. This tiny package contains the class ObjectName, which corresponds to the general notion of explicitly handled identifiers for API objects, e.g. a texture object name in OpenGL or a buffer object name in OpenAL
 
* {{HackagePackage|id=Tensor}} This package contains tensor data types and their instances for some basic type classes.
 
* {{HackagePackage|id=Tensor}} This package contains tensor data types and their instances for some basic type classes.
 
* [[OpenGL]] 3D graphics software
 
* [[OpenGL]] 3D graphics software
 +
  
 
== More information ==
 
== More information ==
  
*[http://hackage.haskell.org/packages/archive/OpenAL/latest/doc/html/Sound-OpenAL.html The API documentation]
+
*[http://hackage.haskell.org/packages/archive/OpenAL/latest/doc/html/Sound-OpenAL.html The API documentation]
*[http://connect.creativelabs.com/openal/default.aspx/                         The OpenAL website]
+
*[http://www.openal-soft.org/index.html  OpenAL Soft]
*[http://connect.creativelabs.com/developer/default.aspx                Creative Lab's developer site]
+
*[http://openal.org/ OpenAL.org]
*[http://connect.creativelabs.com/openal/Documentation/OpenAL_Programmers_Guide.pdf  The OpenAL programmer's guide]
+
*[http://jerli.info/docu/Master_1/Son/OpenAL_Programmers_Guide.pdf  The OpenAL programmer's guide]
*[http://en.wikipedia.org/wiki/Openal           Wikipedia]
+
*[http://en.wikipedia.org/wiki/Openal Wikipedia]
 
+
*[http://www.noeska.com/doal/tutorials.aspx  Delphi OpenAL tutorial]
 +
*[https://jogamp.org/joal-demos/www/  JOAL OpenAL Tutorials]
 +
*Devmaster Forum: [http://forum.devmaster.net/t/openal-lesson-1-simple-static-sound/2888  OpenAL Lesson 1] [http://forum.devmaster.net/t/openal-lesson-2-looping-and-fadeaway/2889  2] [http://forum.devmaster.net/t/openal-lesson-3-multiple-sources/2890  3] [http://forum.devmaster.net/t/openal-lesson-4-the-alc/2891  4] [http://devmaster.net/p/2892/openal-lesson-5-sources-sharing-buffers  5] [http://forum.devmaster.net/t/openal-lesson-6-advanced-loading-and-error-handles/2893  6] [http://forum.devmaster.net/t/openal-lesson-7-the-doppler-effect/2894  7] [http://forum.devmaster.net/t/openal-lesson-8-oggvorbis-streaming-using-the-source-queue/2895  8]
  
 
== For questions ==
 
== For questions ==
 +
 
*[http://www.haskell.org/mailman/listinfo/haskell-cafe    The Haskell Cafe mailing list]
 
*[http://www.haskell.org/mailman/listinfo/haskell-cafe    The Haskell Cafe mailing list]
 
*[http://opensource.creative.com/mailman/listinfo/openal  The OpenAL mailing list (non-Haskell)]
 
*[http://opensource.creative.com/mailman/listinfo/openal  The OpenAL mailing list (non-Haskell)]

Latest revision as of 15:47, 13 October 2015

Contents

[edit] 1 Introduction

OpenAL (short for Open Audio Library) is a library for creation of a virtual 3D world of sound. The application programmer can specify the location, the speed and the direction of the sources of sounds and of the listener. This is easily combined with a 3D world created with OpenGL and can very well be used to create games. The sounds must be provided in the form of samples; there is no support for MIDI.

An addition to this library is the OpenAL Utility Toolkit (ALUT). See also the Wikipedia article on OpenAL.


[edit] 2 Installation


[edit] 2.1 Windows specific actions

Before installing the Haskell package, you need to install the C++ package of OpenAL:

where OpenAL32.dll
(You will need this later, when you distribute your application.)
Set LIBRARY_DIR=C:\Libraries
Set C_INCLUDE_PATH=%LIBRARY_DIR%\openal-soft-1.16.0-bin\include
Set LIBRARY_PATH=%LIBRARY_DIR%\openal-soft-1.16.0-bin\libs\Win32
If you need these variables more often, set them permanently.

[edit] 2.2 For all platforms

Give command cabal install OpenAL

[edit] 3 Tutorials

There are several OpenAL tutorials for other programming languages:


[edit] 4 Examples


[edit] 5 Additional software

  • StateVar: This package contains state variables, which are references in the IO monad, like IORefs or parts of the OpenGL state
  • ObjectName: Explicitly handled object names. This tiny package contains the class ObjectName, which corresponds to the general notion of explicitly handled identifiers for API objects, e.g. a texture object name in OpenGL or a buffer object name in OpenAL
  • Tensor This package contains tensor data types and their instances for some basic type classes.
  • OpenGL 3D graphics software


[edit] 6 More information

[edit] 7 For questions