I et moderne højteknologisk hjem handler det i stigende grad om at automatisere, optimere og skabe smarte løsninger, der gør hverdagen både nemmere og mere komfortabel.
I biblioteket borland/delphi/bin ligger der et program som kan lave en resource fil.Programmet hedder BRCC32.EXE. Åbn notesblok(eller din favorit tekst editor)og opret en ny fil. skriv følgende: JUMP MIDI "jump.midi" OKIE MIDI "okie.midi" Gem filen som *.rc, jeg vælger Sounds.rc Det første ord er det navn som du vil refererer til i den kode som skal spille lyden. Det andet er den type lyd du vil afspille. *.Midi filerne skal være i samme bibliotek som din *.rc fil. Opret et bibliotek med navn source(frit valg)flyt følgende filer til source:BRCC32.EXE,*.rc. skriv følgende "brcc32.exe sounds.rc" dette vil lave en sounds.res fil. I dit program skriver du neden under {$R*.DFM} følgende {$R SOUNDS.RES} og i uses skriver du MMSYSTEM. her er følgende kode til den valgte event: PlaySound(PChar('jump',hInstance,snd_Sync or snd_resource); PlaySound(PChar('okie'),hInstance,snd_Async or snd_Resource. forskellen på Sync, og Async er at Sync ikke kan afbrydes før den er færdig.
Result := midiOutOpen(@outHandle, 0, 0, 0, CALLBACK_NULL); // Åbner standard MIDI Out enhed if Boolean(Result) then begin ShowMessage('Fejl under åbningen af "standard MIDI Out enhed"!'); Exit; end; midiOutShortMsg(OutHandle, $403C90); // Spil C node // evt en Sleep(500), for at får den til at vente, inden den stopper med at spille tonon C midiOutShortMsg(OutHandle, $003C90); // Stop med at spil C node midiOutClose(OutHandle); // Luk MIDI Out enheden igen
Hvad følgende gør: midiOutShortMsg(OutHandle, $403C90); Splittet op i 3: (alle i HEX tal) 40 = hastigheden = normal (nå det drejer sig om noder) (00 = stop med at spil den pågældende node) 3C = miderste C node (node $3C (=60)) ($3D = C#, $3E = D, $3F = D#, $40 = E osv) 90 = Fortæller der er noder, og de skal spilles i 1. MIDI kanal (91 = 2. MIDI kanal, 92 = 3. ... 9F = 16.)
Hvis du vil afspille en MIDI fil i stedet, kan du fx gøre således:
procedure AfspilMIDI(Filnavn, Alias : String); var Buf : PChar; Err : Integer; begin Err := mciSendString(PChar('open '+FilNavn+' type sequencer alias ' + Alias), nil, 0, 0); if Err = 0 then mciSendString(PChar('play '+Alias), nil, 0, 0) else begin GetMem(Buf, 256); FillChar(Buf^, 256, 0); mciGetErrorString(err, buf, 256); ShowMessage('Fejl under åbningen af MIDI-fil:'#10#13 + buf); FreeMem(buf); end; end;
I eksemplet med noder er følgende variabler: var outHandle : THandle; Result : Integer;
Michael
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.