Capabilities of Toybox.Media module and Toybox.Media.PlaybackProfile class

Do I correctly understand, that Toybox.Media module and Toybox.Media.PlaybackProfile class specifically only can control the music which is played on the mobile phone, not on the watch itself? In other words, there are no Garmin watches and related API, which can play real music (.wav or .mp3 file) directly on the watch or generate music programmatically directly on the watch without the phone. I can play tone, but it is not music. I can control the frequency of the tone, but it will be like music on old phones such as Nokia 3310. I cannot play real music from wav or mp3.

If I am wrong and it is possible to play music on some Garmin watches (especially from my own Garmin Connect IQ program), please give me the link or some information about it.

Top Replies

All Replies

  • You can implement your own audio provider app (like Spotify) which syncs music to the watch and provides a music player UI for the end user, but you can't play a WAV or MP3 from a normal app (device app, widget, data field or watchface), and as far as I know, you can't generate audio files programmatically (they have to be downloaded over the network)

    Do I correctly understand, that Toybox.Media module and Toybox.Media.PlaybackProfile class specifically only can control the music which is played on the mobile phone, not on the watch itself?

    Incorrect. Toybox.Media is for playing music that's downloaded onto your watch. All Garmin watches since 2015-ish have a native app for controlling music on a connected phone; that capability isn't handled by a CIQ app.

    https://developer.garmin.com/connect-iq/api-docs/Toybox/Media.html

    The Media module provides objects and methods for implementing audio content provider apps.

    This includes interfaces and methods for managing downloaded media content as well as interfaces used to provide required information to the system for playback.

    [https://www.garmin.com/en-US/blog/general/which-garmin-smartwatches-have-music-storage/]

    [https://developer.garmin.com/connect-iq/connect-iq-faq/how-do-i-create-an-audio-content-provider/]

  • Sorry, I know about music providers and I read documentation about Toybox.Media module.

    I think I did not ask the question correctly. What I mean, is I cannot play any music directly on the watch without phone or I can? "play any music directly on the watch" is when watch produces the sound, not control the phone and the phone produces the sound.

    For example, I have only my watch with me. I downloaded music to the watch in advance, but now I do not have the phone (or battery is finished on the phone and it switched off). Can I play that music stored on the watch (downloaded before) directly on the watch?

    P.S. I updated the question to be more specific.

  • Sorry, didn't I answer the question properly?

    Garmin watches have been able to play music on the device for years now. Why would Garmin release watches marketed as being able to play music (many of which have the word "Music" in the model name), but actually you need your phone with you to hear the music? Nobody would pay extra for such a feature.

    The way it works for most watches is that you have to pair bluetooth earbuds/headphones/speakers to hear music. Additionally, Venu 3 has a speaker and microphone.

    However, Connect IQ only allows music playback within an audio provider app: this is an app which provides the ability to download music to the device and control playback within a constrained user interface. One example is Spotify.

    There is no general purpose ability to play digital audio (e.g. MP3 / WAV) from any other CIQ apps (device app, data field, widget or watchface.)

    That means you can't build a device app that plays a voice prompt, a 5-second music snippet, or music that was downloaded to your watch, for example.

    For example, I have only my watch with me. I downloaded music to the watch in advance, but now I do not have the phone (or battery is finished on the phone and it switched off). Can I play that music stored on the watch (downloaded before) directly on the watch?

    Of course you can. Why would Garmin allow you to download music to the watch but require you to have a phone in order to hear the music? That would be pointless. The way it works is that you pair bluetooth earbuds with the watch.

    Also, despite what you're suggesting, Garmin has never allowed you to play music that's downloaded on the watch through your phone. Because that wouldn't make any sense. When you use your Garmin watch to control music on your phone, the music is stored on your phone, not the watch.

    I can't believe you've downloaded music to your device but never actually tried to play it without having your phone connected. This is basic stuff that requires no knowledge of CIQ.

  • Thank you for the clarification. In summary, if I understand everything correctly:

    - I cannot play the music directly on Garmin without any extra device except Venu 3 device. An external device can be phone or Bluetooth headphones.

    - Even if I can play music on Venu 3, I still can play it only from the Music provider app and I cannot play music from my app (custom running app, watchface, widget, etc.). So, I cannot make an app which will speak (pronounce) how many kilometers I was running.

    Is everything correct now?

  • Correct on both points.

    - I cannot play the music directly on Garmin without any extra device except Venu 3 device. An external device can be phone or Bluetooth headphones.

    I mean, Apple Watch has a real speaker and doesn't allow music playback through it.

    Of course, as you implied, most Garmin watches don't have a real speaker so it's obviously physically impossible to play music directly through the device. And most people use headphones or earbuds to listen to music in public, even though they have the option to listen directly on their phone.

    So I don't really think it's a huge limitation or cause for complaint that you need to pair headphones with your watch to listen to music (except for Venu 3). Needing to carry your phone with you to hear music versus needing to bring earbuds with you to hear music aren't even comparable imo. Most phones cost a lot more than a pair of earbuds, and personally, I will almost never run with my phone, but I'll gladly bring tiny earbuds with me to hear music.

    And again, the mechanism for controlling music on your phone and playing music from your watch is completely different, even though the user interface is similar.

    - Controlling music on your phone is possible for pretty much every Garmin watch made since roughly 2015, regardless of whether it supports on-device music storage or not. All you need is a bluetooth connection to your phone

    - Playing music from your watch (through bluetooth headphones) requires a Garmin watch that supports music storage (which is not all of them)

    There is no mechanism to play music stored on the watch through your phone.

    So it's not really correct to imply that you are playing music directly on your Garmin with an external device such as your phone. When you play music on your Garmin, the phone is not involved. When you use your Garmin to control music on your phone, the music is stored on the phone, not the Garmin.

  • Thank you. I agree, most people use headphones now. I just want to know all the options/capabilities. My use case is to implement the app, which actually speaking while doing exercise, like Runkeeper does (you run 1 km in 6 minutes 45 seconds, etc.). So, not many people like running with headphones, but maybe I am wrong. It is not possible to implement such an app anyway, even with headphones.

  • My use case is to implement the app, which actually speaking while doing exercise

    Yeah I kinda figured.

    So, not many people like running with headphones, but maybe I am wrong.

    I'm not a huge fan, but that's mostly because I don't like running with music in general. Less than 10% of my runs are with music. I know some people who can't run without music though. And I see lots of runners with airpods. I will say that when I run on a treadmill, then earbuds are welcome (whether it's to listen to music or watch videos.) But in that case I usually have my phone with me.

    Why would Garmin add music support to their devices if not many people like running with earbuds? If it was the case that most people don't like to run with headphones or music, then Garmin would've wasted a lot of time and money adding that capability to so many watches, and partnering with Spotify (and now Google/Youtube.)

    But on the contrary, Spotify has 12 million downloads in the CIQ store.

    I'm sure some of those millions have to be runners.

    And let's not forget the huge market for sports-focused headphones/earbuds, some of which are clearly targetting runners and cyclists (e.g. bone-conduction headphones like Aftershokz, which now feature a Kipchoge edition.)

    It is not possible to implement such an app anyway, even with headphones.

    Unfortunately not.

    I attempted to address that in the first sentence of my initial response

    "you can't play a WAV or MP3 from a normal app (device app, widget, data field or watchface)"

  • like Runkeeper does (you run 1 km in 6 minutes 45 seconds, etc.)

    I will say that most people probably wouldn't wear earbuds during a hard running workout, especially a group workout. Maybe if it was a solo workout.

    I think for your app's use case, Apple Watch would be a better fit.

  • Thank you for all your help.

  • It's really a pity that even a small WAV/PCM (or a more advanced format) audio file (OGG/Vorbis, MP3/MP3, M4A/AAC, etc.) cannot be played directly from the app. The playback could be length-limited, size-restricted, or have any other constraints—whichever works best.

    This feature would be useful in many scenarios. For example, in CrossFit workouts, the app could play a sound or give a verbal cue when a set is completed or when the time cap is reached. Of course, there are numerous other use cases as well.

    Additionally, the lack of a Tone Generator means there’s no way to create custom sounds, leaving users with only a few built-in tones or pre-recorded files. I see this as an area for improvement. Unless I’m mistaken, it seems like this could be purely a software enhancement, potentially included in a Connect IQ (CIQ) update.