Ääniä delphillä

Miten tai mitä kirjastoa käyttämällä saisi Delphi6:ssa käytettyä ääniä... En viitsi ihan DirectX:ää käyttää...
3143
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

En ole nyt vähään aikaan työskennellyt Delphillä, mutta ainakin 4 ja 5:ssa oli ihan mediaplayer komponetti, jolla sai soiteltua musiikkia

Äänestä
  • Delphissä tosiaankin on TMediaPlayer -komponentti, jolla voi leikkiä... tositoimiin se on turhan buginen.

    IMportoi MS Windows Media Player ActiveX -komponenttina Delphiin, mutta älä hyväksy oletusnimeä TMediaPlayer (koska tulee konflikti Delphin oman TMediaPlayerin kanssa) vaan uudelleennimeä se esim. TMsMediaPlayer.

    Tuon voit vapaasti luoda koodissa, ja tuhota WM_Destroy -sanomakäsittelijässä.

    Jos haluat pudottaa Formille, niin laita samalle fomille myös TActiveXCleaner -komponentti. (lähdekoodi alla)

    Muussa tapauksessa formia delphissä suljettaessa tulee ikäviä virheilmoituksia, voi myös jäädä luuppiin jolloin tulee virhe toisensa perään.

    TActiveXCleaner poistaa tuon harmin.

    Ja lähdekoodi Cleaneriin tässä:

    unit ActClea2;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics,
    Controls, Forms, Dialogs,
    OleCtrls;


    // Copyright (c) 2003 MikaDna0800, 044 567 0800
    // Dna kaikille, Maraton parhaille !


    {$DEFINE DebugPlus}

    type
    TActiveXCleaner = class(TWinControl)
    private
    { Private declarations }
    protected
    { Protected declarations }
    public
    { Public declarations }

    procedure WMDestroy(var Message: TWMDestroy); message WM_DESTROY;

    published
    { Published declarations }
    end;

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents('Samples', [TActiveXCleaner]);
    end;

    { TActiveXCleaner }

    procedure TActiveXCleaner.WMDestroy(var Message: TWMDestroy);
    var
    i : Integer;
    // ACtrl : TControl;
    AForm : TComponent;
    AComp : TComponent;
    begin
    // ==========================================
    // R
    AForm := Owner;
    for i := AForm.ComponentCount-1 downto 0 do begin
    //
    AComp := AForm.Components[i];
    if (AComp Self) and (AComp is TOleControl) then begin
    //
    {$IFDEF DebugPlus}
    Windows.MessageBox(0, PChar(AComp.Name), 'TOleControl derivative will be FREEd:', MB_OK);
    {$ENDIF}

    AComp.Free;
    //
    end;
    end;


    // ==========================================
    inherited;

    end;

    end.

    Äänestä

Kyllä DirectSoundillakin saa äänet kuuluviin kohtalaisen helposti:

var
DS: IDirectSound8 = nil;
DSB: IDirectSoundBuffer = nil;

procedure TForm1.FormCreate(Sender: TObject);
var
Desc: TDSBufferDesc;
WFX: TWaveFormatEx;
begin
with WFX do
begin
wFormatTag := WAVE_FORMAT_PCM;
nChannels := 1;
nSamplesPerSec := 44100;
wBitsPerSample := 16;
nBlockAlign := (nChannels * wBitsPerSample) div 8;
nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
cbSize := 0;
end;
DirectSoundCreate8(nil,DS,nil);
DS.SetCooperativeLevel(Form1.Handle,DSSCL_PRIORITY);

FillChar(Desc,SizeOf(TDSBufferDesc),0);
Desc.dwSize := SizeOf(TDSBufferDesc);
Desc.dwBufferBytes := WFX.nAvgBytesPerSec div 16;
Desc.lpwfxFormat := @WFX;
Desc.dwFlags := DSBCAPS_GLOBALFOCUS;
HR := DS.CreateSoundBuffer(Desc,DSB,nil);
if HR 0 then
begin
ShowMessage('Error creating DirectSound buffer.');
Exit;
end;
//sitten vaan täyttää bufferin äänidatalla
//käyttämällä DSB.Lock kutsua...
DSB.Play(0,0,0);
end;

Äänestä

Kommentoi aloitusta


CMan kirjoitti:

Miten tai mitä kirjastoa käyttämällä saisi Delphi6:ssa käytettyä ääniä... En viitsi ihan DirectX:ää käyttää...

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu