#11 Speaker RTTTL

2b11
accepted
nobody
request (1)
2014-04-17
2014-01-28
qcrist
No

Not sure if this is the right place to post this, but here it is anyway. :D

In order to make it possible to stop a song that is playing, I have split my song into multiple pieces and play them all consecutively. I can then request for it to stop as it reaches the end of the piece.

This becomes a problem due to the fact that I have to add the rtttl header to the beginning of each piece.

Would it be possible to add/change the method so that the header variables could be passed directly?

Example:
void speakerPlayRtttl_2(const char *song, int default_len, int default_octave, int bpm);

Or just have a header pointer?
Example:
void speakerPlayRtttl_3(const char *header,const char *song);

Discussion

  • Due to the current structure of the RTTTL parser, this change may be difficult to make. Although the header parsing code is in its own function, making speakerPlayRtttl_3 an attractive option, the usage of the function becomes messy when regarding the multiple track synthesizer function which allows separate settings for each track. Currently speakerPlayRtttl calls speakerPlayArray which is rather difficult to modify.

    We will consider the change, but cannot guarantee that it will happen in time for version 2b09. As speakerPlayRtttl_3 is probably not an appropriate function name, we will also have to determine the new name for the function if implemented.

     
  •  
    • Milestone: 2b09 --> 2b10
     
    • status: open --> accepted
    • Milestone: 2b10 --> 2b11
     
  • This has been moved to 2b11. We want to avoid making any non-critical changes at this time due to the timing of Worlds.

    Would a thread-safe sound stop method satisfy your use case? It seems that this method may address both this issue and the ability to customize volume of tracks.