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.
Get performance insights in less than 4 minutes
Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.
Sponsored
scoutapm.com
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of proteaaudio or a related project?
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