Witam, piszę sobie prosty program multimedialny z użyciem klas, oraz biblioteki DLL multimedialnej LibZPlay.
Program zawiera Equalizer, zbudowany jest na osobnej formie kilka bandów, wraz ze wzmocnieniem(Preamp);
Problem jest tego typu, że napisany program się kompiluje, ale sam equalizer zupełnie nie reaguje, nawet wzmocnienie EQ nie wpływa na odtwarzany dźwięk. Będę wdzięczny, za analizę kodu gdzie może być błąd. Co ciekawe, nie mam żadnych access violation, nic a nic żadnych błędów pamięci.
Programuję w środowisku RADStudio 10.3.2 ze stajni Embarcadero.
O to kod:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "EngineDllPlayClass.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma comment(lib, "libzplay_borland.lib")
__fastcall TEngineDllPlayClass::TEngineDllPlayClass(TTrackBar *B1, TTrackBar *B2)
{
player = createZPlay();
B1 = new TTrackBar(B1);
B2 = new TTrackBar(B2);
}
//---------------------------------------------------------------------------
__fastcall TEngineDllPlayClass::~TEngineDllPlayClass()
{
player->Release();
B1->Free();
B2->Free();
}
void __fastcall TEngineDllPlayClass::B1Gain(TTrackBar *B1)
{
player->SetEqualizerBandGain(0,B1->Max*1000-(B1->Position*1000)+B1->Min);
}
void __fastcall TEngineDllPlayClass::B2Gain(TTrackBar *B2)
{
player->SetEqualizerBandGain(1,B2->Max*1000-(B2->Position*1000)+B2->Min);
}
//---------------------------------------------------------------------------
#ifndef EngineDllPlayClassH
#define EngineDllPlayClassH
//---------------------------------------------------------------------------
#include "windows.h"
#include "libzplay.h"
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.ComCtrls.hpp>
#include <vcl.h>
using namespace libZPlay;
class TEngineDllPlayClass
{
public:
__fastcall TEngineDllPlayClass(TTrackBar *B1, TTrackBar *B2);
void __fastcall B1Gain(TTrackBar *B1);
void __fastcall B2Gain(TTrackBar *B2);
__fastcall ~TEngineDllPlayClass();
private:
TTrackBar *B1;
TTrackBar *B2;
ZPlay *player;
};
#endif
//klasa Która zawiera w sobie libkę multimedialną LibZPlay.dll
//implementacja metod w aplikacji:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
EQSection = new TEngineDllPlayClass(B1, B2);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::B1Change(TObject *Sender)
{
EQSection->B1Gain(B1);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::B2Change(TObject *Sender)
{
EQSection->B2Gain(B2);
}
//---------------------------------------------------------------------------
//plik h Formy
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ComCtrls.hpp>
#include "EngineDllPlayClass.h" //add new class
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TTrackBar *B1;
TTrackBar *B2;
void __fastcall B1Change(TObject *Sender);
void __fastcall B2Change(TObject *Sender);
private: // User declarations
TEngineDllPlayClass *EQSection;
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif