Popularity
7.8
Growing
Activity
6.0
-
27
6
8
Code Quality Rank:
L1
Monthly Downloads: 51
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.
-
mushu
Mushu is a minimalist MPD client with a TUI and an incremental fuzzy finder for your music library -
ALUT
A Haskell binding for the OpenAL Utility Toolkit, which makes managing of OpenAL contexts, loading sounds in various formats and creating waveforms very easy. -
OpenAL
A Haskell binding for the OpenAL cross-platform 3D audio API, appropriate for use with gaming applications and many other types of audio applications.
WorkOS - The modern identity platform for B2B SaaS
The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Promo
workos.com
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
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