# Audio support in Racket for music player

**URL:** <https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373>\
**Category:** Questions & Answers\
**Created:** [November 29, 2024, 3:42pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373 "2024-11-29T15:42:18Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://racket.discourse.group/u/Robert)\
**Post date:** [November 29, 2024, 3:42pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/1 "2024-11-29T15:42:18Z")

</div>

I'm researching languages and libraries to make a music player. I'm considering Racket, but wonder if Racket has support for playing common audio files, or if there's an agreeable method to achieve the desired functionality of a music player.  
I'd appreciate any help or pointer on this. Thanks.

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [December 1, 2024, 11:13pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/2 "2024-12-01T23:13:34Z")

</div>

Maybe @jbclements has a tip?

---

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://racket.discourse.group/u/Robert)\
**Post date:** [December 2, 2024, 4:11pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/3 "2024-12-02T16:11:38Z")

</div>

Maybe other method, other than having Racket support for audio would be to use a an audio backend and communicate with it somehow. How would that work?

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [December 2, 2024, 7:34pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/4 "2024-12-02T19:34:49Z")

</div>

What kind of music player are you writing?

Something that plays one, say, mp3 at a time?

The music system for a game (with background music and sound effects)?

The first is easier to do than the second (since it needs mixing).

Cross platform audio can be tricky, but there are bindings for `portaudio`  
avaiable.

[https://docs.racket-lang.org/portaudio/index.html](https://docs.racket-lang.org/portaudio/index.html)

---

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://racket.discourse.group/u/Robert)\
**Post date:** [December 3, 2024, 12:42pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/5 "2024-12-03T12:42:02Z")

</div>

It's a music player that plays one song at a time.  
Thanks for the link to portaudio. I'll check it out.

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [December 3, 2024, 3:22pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/6 "2024-12-03T15:22:28Z")

</div>

On Github there is a music player that uses the `vlc` package,  
so that's also an option.

---

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://racket.discourse.group/u/Robert)\
**Post date:** [December 4, 2024, 3:46pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/7 "2024-12-04T15:46:37Z")

</div>

I asked chatgpt and it can give me decent guidance on how to use vlc as a backend. Thanks.

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [December 26, 2024, 9:04pm UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/8 "2024-12-26T21:04:43Z")

</div>

Ah, sorry I missed this. Yes, portaudio does this. There may be other ways to get what you want working.

---

<div class="post-metadata">

**Author:** ![acarrico](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/acarrico/32/2135_2.png) [@acarrico](https://racket.discourse.group/u/acarrico)\
**Post date:** [January 23, 2025, 2:17am UTC](https://racket.discourse.group/t/audio-support-in-racket-for-music-player/3373/9 "2025-01-23T02:17:49Z")

</div>

If you want to use a C library, the racket ffi is very pleasant.

[https://docs.racket-lang.org/foreign/index.html](https://docs.racket-lang.org/foreign/index.html)
