Newsgroup: it.comp.lang.visual-basic
Titolo: Sottofondo musicale

Un saluto a tutto il NG.
Sono alle prime armi di programmazione VB e scusate se per qualcuno
sarà una banalità, ma qualcuno sa come eseguire una Form con
sottofondo un file .mid (magari in loop).
Grazie

 sottofondo un file .mid (magari in loop).
No, non lo sa nessuno.
E se qualcuno dovesse saperlo taccia o se la vedrà con me.
:P
-> GbC
www.gbcweb.com

Enzo ha scritto:

Non so se funziona anche con i mid...
-----------------------------------------------------------------
'BUTTA QUESTO IN UN MODULO
Public Declare Function sndPlaySound& Lib "winmm.dll" Alias _
    "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As
Long)
    ' **********************************
    ' WAV Sound values
    Global Const SND_SYNC = &H0
    Global Const SND_ASYNC = &H1
    Global Const SND_NODEFAULT = &H2
    Global Const SND_LOOP = &H8
    Global Const SND_NOSTOP = &H10
    ' **********************************
Public Sub PlayS(SoundFileName As String)
    Dim wFlags As Long, X As Long
    wFlags = SND_ASYNC Or SND_NODEFAULT
    X = sndPlaySound(SoundFileName, wFlags)
End Sub
'POI DALLA FORM:
PlayS "filename"
-----------------------------------------------------------------
Se non funziona il precedente, prova questo qui:
-----------------------------------------------------------------
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA"
(ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As
Long) As Long
Private Sub Command1_Click()
PlaySound "filename", 0, snd_systemstart
End Sub
-----------------------------------------------------------------
Oh no!
ora dovrò vedermela con GbC! :P

 Non so se funziona anche con i mid...
[cut]
Argh...
Su su... Per espiare ora
un bell'fdisk e formattone alk'HD
:)
-> GbC
www.gbcweb.com


ha scritto:


 amici.
ah, era questo il problema. vuoi sfoltire gli amici :P
ciao, a.
caldo consiglio: evita. chi mi manda cose simili finisce quasi 
automaticamente fra i mittenti bloccati. gmail peraltro dubito che la 
lascerebbe passare. ci avranno pensato...

 Grazie a tutti
Per il play di midifiles:
http://support.microsoft.com/kb/171980/en-us
Per il "mailto":
http://vb-helper.com/howto_shell_mail.html
-- 
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 ha
scritto:


 ora dovrò vedermela con GbC! :P
Ti ringrazio Daniele, l'argomento interessa anche a me.
Saresti così gentile da aiutarmi, con un problema simile?
In una mia applicazione ho necessità di riprodurre suoni in modo 
"contemporaneo", ma purtroppo come sicuramente saprai la sndPlaySound non 
permette l'esecuzione contemporanea di due o più suoni. :-(
Esempio: il primo suono dura 5 secondi, e viene eseguito in modalità 
"async"... ma poi, dopo un secondo (ad esempio) ho bisogno di mandare in 
esecuzione un altro suono, che deve sovrapporsi al primo senza interromperne 
l'esecuzione.
Sai come si può fare?
Io ancora non ci sono riuscito, la sndPlaySound non è adatta... :-(
Grazie, ciao, e con l'occasione buon Natale a tutto il gruppo!
B.

t = 1" / (1 - (v²/c²)) ^ ½ ha scritto:

Hai ragione, ora che ho provato anche io non riesco ad usare async...
la form resta "congelata" e alla fine del suono l'esecuzione riparte...
Non ci riesco nemmeno in vb2005...

 riparte... Non ci riesco nemmeno in vb2005...
Il SND_ASYNC funziona benissimo, forse hai sbagliato a scrivere qualche 
parametro. Ma se usi la funzione esattamente come l'hai descritta tu stesso 
nel post sopra, funziona benissimo. L'ho provata proprio adesso, per 
scrupolo.
    wFlags = SND_ASYNC Or SND_NODEFAULT
    X = sndPlaySound(SoundFileName, wFlags)
Questa istruzione manda in esecuzione il file audio, e mentre il suono viene 
riprodotto, il codice esegue le istruzioni successive.
Se invece usi:
    wFlags = SND_SYNC Or SND_NODEFAULT
    X = sndPlaySound(SoundFileName, wFlags)
le istruzioni successive alla chiamata sndPlaySound non vengono eseguite 
fino a quando il brano non termina l'esecuzione.
Esiste anche un altro flag, chiamato SND_NOSTOP
Inizialmente ero stato tratto in inganno dalla dicitura NOSTOP, per colpa di 
una traduzione maccheronica sul sito msdn italiano... ed avevo capito che 
serviva per riprodurre un secondo suono senza interrompere il primo!
Ma purtroppo non è così... ed allora ho spulciato sull'msdn inglese, ed ho 
visto che lo scopo del flag SND_NOSTOP è tutt'altro.  :-(
In pratica, quando si usa l'asincrono, il brano viene mandato in esecuzione 
ma il codice prosegue, e questo lo sappiamo.
Supponiamo però che da programma venga effettuata una nuova chiamata alla 
funzione sndPlaySound, prima che il brano precedente sia terminato: succede 
che il brano precedente viene interrotto bruscamente, e viene riprodotto il 
nuovo brano!
Ecco, il flag SND_NOSTOP serve ad evitare che succeda questo.
Ossia, nell'esempio di cui sopra, il brano precedente non verrebbe 
interrotto, e la richiesta di esecuzione del brano successivo verrebbe 
semplicemente "ignorata" senza generare nessun errore.
Mi rimane ancora il problema dell'esecuzione contemporanea di due o più 
brani (in pratica una sorta di "polifonia"), che come ti dicevo ieri non può 
essere realizzata mediante questa funzione.
:-(((
Ciao, e auguri di nuovo
Bruno

 "Daniele" ha scritto:

Uhm... allora qua la situazione è misteriosa...
Ormai devo capirci meglio..