Tunes module stopped working after FEZ Cerberus loader/firmware update

After successfully updating my FEZ Cerberus board to the latest loader and firmware, I am finding that the Tunes module no longer seems to function. Build, deploy, and execution work fine (no exceptions at runtime), but the Tunes module just doesn’t make a sound anymore.

My application uses it to perform one beep early on in the program, and it worked reliably before the Cerberus update. After the update, I recreated the application from scratch, building everything from the ground up using NETMF 4.3, to ensure I didn’t have any old libraries involved. The Gadgeteer sockets in use are the same as before the update. I have several other modules attached, and they all work fine. The only module not doing what it used to do (i.e., not making any sound) is the Tunes module.

Here is the code that used to work, and is now silent:

tunes.AddNote(new Tunes.MusicNote(Tunes.Tone.B4, 50));
tunes.Play();

I tried switching the module from socket 4 to socket 3 (making the change also in the diagram), but the Tunes module is still silent.

I am very careful to use antistatic procedures when handling all of these components.

Any thoughts on what might have killed my Tunes module?

Thanks.

@ kgcode - You actually want the following code:


tunes.Play(new Tunes.MusicNote(Tunes.Tone.B4, 50));

1 Like

@ John -

Thanks, that change did the trick.

Because the old code I posted here “worked” under 4.2, I assume this is a change in Tunes for 4.3?

@ kgcode - I may have changed a few things in the Tunes driver when moving to 4.3, but it is likely a race condition. The Play method you were using is actually Play(params MusicNote[] notes); You passed it an empty list so the internal worker thread saw the empty list before it saw your note you added in AddNote. It was only by chance that it worked in 4.2. The Tunes API could definitely use some cleanup.

1 Like

@ John -

Thanks.