martedì 2 febbraio 2016

Il suono sui dispositivi mobili

Oggi vediamo come fare del suono sui dispositivi mobili (Android e iOS).
Facciamo un pulsante e mettiamoci questo codice:

on mouseUp
   put (specialFolderPath("engine") & "/noise1.wav") into tPath
   put "noise1" into tChannelName
   put "now" into tType
   mobilePlaySoundOnChannel tPath, tChannelName, tType
end mouseUp

Il nostro programma suonerà il file noise1.wav.
Adesso facciamo altri pulsanti con altri suoni e uno con una musica di sottofondo, così vediamo come poter suonare più file contemporaneamente:
chiaramente dovremo cambiare il nome del file da suonare e il nome del canale da utilizzare. Ad esempio per la musica di sottofondo possiamo scrivere:

on mouseUp
   put (specialFolderPath("engine") & "/background.wav") into tPath
   put "background" into tChannelName
   put "now" into tType
   mobilePlaySoundOnChannel tPath, tChannelName, tType
end mouseUp

Se lo proviamo, vedremo che funziona tutto a meraviglia, perchè indicando un nome per un canale possiamo fare più suoni contemporaneamente. Ogni canale è come una voce, in modo che se mettiamo in fila su un canale tutta una serie di suoni, finchè non finisce un suono non partirà il successivo, mente le altre possono parlare.
Il caso tipico sono i videogiochi, dove alcuni personaggi fanno delle operazioni e relativi suoni in un certo ordine, mentre altri personaggi devono potersi sovrapporre o susseguire senza problemi.
Possiamo anche mettere in pausa, far proseguire o fermare del tutto un canale.
Ad esempio aggiungendo i seguenti pulsanti

e mettendo i seguenti codici:
pausa:

on mouseUp
   mobilePausePlayingOnChannel "background"
end mouseUp

resume:

on mouseUp
   mobileResumePlayingOnChannel "background"
end mouseUp

Mentre il pulsant della musica in sottofondo (background) lo possoamo trasformare così:


on mouseUp
   if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then
      put (specialFolderPath("engine") & "/background.wav") into tPath
      put "background" into tChannelName
      put "now" into tType
      mobilePlaySoundOnChannel tPath, tChannelName, tType
   else
      mobileStopPlayingOnChannel "background"
   end if
end mouseUp

Se usiamo il comando mobilePlaySoundOnChannel, possiamo utilizzare le opzioni:

  • now: per avviare immediatamente il suono 
  • next: per metterlo in code al canale scelto
  • looping: per metterlo in ciclo continuo, quando finisce ricomincia.