Oppure

Loading
26/02/13 13:54
Progman
Ciao a tutti,
Volevo sapere come poter inserire un tema musicale in sottofondo in un programma pascal, cioè che funziona mentre viene eseguito il programma, senza bloccare il programma durante l'esecuzione dei suoni...
Grazie in anticipo!! :)
aaa
26/02/13 16:06
non credo tu possa farlo così direttamente...
hai 2 opzioni:
1: lanciare un programma esterno il suono, per musica
program suono;
uses dos;
//...
     exec(<percorso eseguibile programma>,<file musicale>);
//...

2: usare la cassa interna del pc, non potrai avere musica-musica, ma solo dei 'beep' che dovrai dare uno per uno. per questo però o ti ingegni a fare sì che le note vengano fatte una alla volta nel corso del programma oppure
program suono;
uses windows,dos;
//...
     exec('c:\windows\system32\cmd.exe',<file musicale>);
//...

in modo da fare si che non venga eseguito il secondo programma sulla stessa console.
:k:
Ultima modifica effettuata da 26/02/13 16:07
26/02/13 18:02
Progman
Scusa un secondo, ma in pratica con il secondo suono sorgente gli dico di eseguire un file musicale? ma questo file deve essere per forza un programma pascal che riproduce una musichetta o anche un file audio?
aaa
26/02/13 18:06
Progman
Scusa un secondo, ma in pratica con il secondo suono sorgente gli dico di eseguire un file musicale? ma questo file deve essere per forza un programma pascal che riproduce una musichetta o anche un file audio?
aaa
26/02/13 22:08
Phi
Quando usavo Windows avevo trovato questo modo per file musicali, l'ho cercato fra i vecchi file.
Mi sembrava che andassero aggiunti al file come risorsa in formato wav.
Poi si usa questo codice :

const
SND_MEMORY = 4;
SND_ASYNC = 1;
SND_RESOURCE = 004;
Function PlaySound(x1: PChar; x2: HMODULE; x3: DWORD): BOOL;stdcall; external 'winmm.dll' name {$ifdef UNICODE}'PlaySoundW' {$else}'PlaySoundA' {$endif};

procedure PlayResSound(ResIndex: integer);
begin
  PlaySound(PChar(ResIndex),HInstance, snd_ASync or snd_Memory or snd_Resource);
end;

Non ricordo però come suonare file diversi.
Ultima modifica effettuata da Phi 27/02/13 15:26
aaa
27/02/13 13:08
Progman
Scusa @Phi , ti posso chiedere un favore? Mi potresti spiegare un po' passo a passo come fare, che io ancora, non essendo molto pratico del pascal, certe cose non le capisco? :-?
aaa
27/02/13 15:08
Phi
Prova a fare così. Converti il file in formato wav (purtroppo occuperà un po').
Crei un file nome.rc e aggiungi la riga n WAVE audio.wav sostituendo a n un numero che poi identificherà il file e a audio il nome del file. Esegui da prompt il programma "windres" aggiungendo come argomenti " nome.rc nome.res" così windres creerà il file nome.res che contiene audio.wav e che potra esser agguinto al tuo programma tramite questa riga :
{$r percorso/nome.res}

Ora potrai, usando la funzione PlayResSound(n). far suonare il file contrassegnato dal numero n.

La funzione PlaySound che uso fa parte delle APi windows quindi se la usi non potrai usare il programma su altri sistemi.
Ho trovato questa pagina se vuoi approfondirla : msdn.microsoft.com/en-us/library/windows/desktop/…

Poi ho trovato anche questo pagina che dovresti leggere :
wiki.freepascal.org/…
Ultima modifica effettuata da Phi 27/02/13 15:17
aaa
28/02/13 13:33
Progman
ok grazie:om::)
aaa