Page 1 sur 1

Jouer un son sur les enceintes arrières

Publié : lun. 19/févr./2007 10:11
par Thyphoon
A mon boulot on vient de me demander si je pouvais faire un petite programme qui permettrait de jouer des sons sur les enceintes arrière uniquement. je n'ai pas trouvé de code sur Purearea. Quelqu'un a une idée ?

Je travaille dans une biblihoteque et on voudrait utiliser un PC pour diffuser des annonces préenregistrées, mais on voudrait eviter que si quelqu'un regarde sa messagerie un "ding dong" soit entendu dans les espaces publique.Donc l'idée est que tout les son des applications sont envoyé sur la stéréo-avant, et les annonces sur la stéréo Arrière ! QU'en pensez vous ?
Merci d'avance

Publié : lun. 19/févr./2007 11:31
par KarLKoX
C'est facilement faisable, tu récuperes ton buffer audio et un truc du genre :

Code : Tout sélectionner

; 16 bits
Procedure CHANNEL_TO_REAR(*src.Word, *dst.Word, nsamples.l)
Protected n, samples.l
Protected LeftSample.l, RightSample.l

  ; quelques vérifications
  If *src = #Null Or *dst = #Null
    ProcedureReturn
  EndIf
  
  If nsamples <= 0
    ProcedureReturn
  EndIf
  
  ; realloue taille_dst si < taille_src * 4
  If MemorySize(*dst) < MemorySize(*src) * 4
    *dst = ReAllocateMemory(*dst, MemorySize(*src) * 4)
  EndIf
  
  samples = nsamples - 1
  For n = 0 To samples
    ; récupere les sons gauche/droit
    LeftSample  = *src\w
    *src + 2
    RightSample = *src\w
    *src + 2
    ; son avant = silence
    PokeW(*dst + (n << 2),   0)
    PokeW(*dst + (n << 2)+1, 0)
    ; son arrière = sons avant récupérés
    PokeW(*dst + (n << 2)+2, LeftSample)
    PokeW(*dst + (n << 2)+3, RightSample)
  Next n
  
EndProcedure
Je n'ai pas testé mais ça devrait normalement fonctionner.

Publié : lun. 19/févr./2007 11:45
par Thyphoon
merci je vais faire des tests !! :P