Popularity
6.9
Growing
Activity
0.8
-
12
5
3

Code Quality Rank: L1
Monthly Downloads: 46
Programming language: C++
License: BSD 3-clause "New" or "Revised" License
Tags: Sound     Multimedia    
Latest version: v0.8.0

proteaaudio alternatives and similar packages

Based on the "Sound" category.
Alternatively, view proteaaudio alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of proteaaudio or a related project?

Add another 'Sound' Package

README

Overview

ProteaAudio is a stereo audio mixer/playback library for

  • Linux (PulseAudio)
  • Macintosh OS X (CoreAudio)
  • Windows (DirectSound)

Supported audio formats:

  • Wav
  • Ogg
  • Raw linear PCM

Samples can be loaded from file or memory.

Build

Stack

stack setup
stack build

Nix:

stack --nix build

Example

import Control.Monad
import System.Environment
import System.FilePath
import qualified Data.ByteString as SB
import Control.Concurrent

import Sound.ProteaAudio

waitPayback = do
  n <- soundActive
  when  (n > 0) $ do
    threadDelay oneSec
    waitPayback

oneSec :: Int
oneSec = 1000000 -- micro seconds

main = do
    args <- getArgs
    filename <- case args of
      a : _ -> pure a
      _ -> fail "usage: proteaaudio-play SAMPLE_FILE_NAME"

    result <- initAudio 64 44100 1024 -- max channels, mixing frequency, mixing buffer size
    unless result $ fail "failed to initialize the audio system"

    -- (A) load sample from file
    sampleA <- sampleFromFile filename 1.0 -- volume

    -- start two sound tracks with shared sample data
    sndTrkA <- soundPlay sampleA 1 1 0 1 -- left volume, right volume, time difference between left and right, pitch factor for playback
    threadDelay oneSec -- wait 1 sec
    sndTrkB <- soundPlay sampleA 1 1 0 1 -- left volume, right volume, time difference between left and right, pitch factor for playback
    -- play 3 sec
    threadDelay $ 3 * oneSec
    soundStop sndTrkB
    -- wait sndTrkA to finish
    waitPayback

    -- (B) load from memory buffer
    buffer <- SB.readFile filename
    sampleB <- case takeExtension filename of
      ".ogg" -> sampleFromMemoryOgg buffer 1.0
      ".wav" -> sampleFromMemoryWav buffer 1.0

    soundPlay sampleB 1 1 0 1 -- left volume, right volume, time difference between left and right, pitch factor for playback
    waitPayback

    finishAudio