delphi4arab منتديات دلفي للعرب

نسخة كاملة : تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
السلام عليكم ورحمة الله وبركاته
هذا الشرح تم تجربته علي Ubuntu 12.04 مع Lazarus-1.1-svn وو FPC-2.6
لتشغيل ملفات الصوت بامتداد wav في بيئة Lazarus عن طريق Openal يتوجب عليك أولا تثبيت openal من مدير الحزم في توزيعتك
وغالبا ستجدها مثبتة مسبقا

حمل الملف laz_openal.zip

فك الضغط ستجد ملفين laz_openal.pas , openal_nt.pas

افتح مشروع جديد في Lazarus واحفظه في مجلد فارغ , ثم انسخ الوحدتين السابقتين إلي مجلد المشروع .

من قائمة Project افتح Project Inspector ثم add >>> add files واضف الوحدتين السابقتين إلي المشروع .
في ملف الوحدة الرئيسية للمشروع أضف الوحدة laz_openal في قسم uses

PHP كود :
uses
Classes
, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
laz_openal; 

أضف متغيرين في قسم private أحدهما كائن من الكلاس TLazOpenAL واﻷخري لملف الصوت TLazOpenALWavFileSource

PHP كود :
private
{ private 
declarations }
openAL:TLazOpenAL;
wavFile:TLazOpenALWavFileSource; 

في الحدث FormCreate أضف الكود

PHP كود :
procedure TForm1.FormCreate(Sender: TObject);
begin
openAl 
:= TLazOpenAL.Create;
wavFile:= TLazOpenALWavFileSource.Create('sound/qatami.wav');
openAL.SourceList.Add(wavFile);
end; 

غير مسار ملف الصوت حسب الموجود عندك

أضف زرين علي الفورم لتشغيل وايقاف الصوت ثم أضف اﻷكواد الي كل منهما

PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
begin
wavFile
.Play;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
wavFile
.Stop;
end; 

ليكون الكود كاملا
PHP كود :
unit Unit1;

{
$mode objfpc}{$H+}

interface

uses
Classes
, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
laz_openal;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private 
declarations }
openAL:TLazOpenAL;
wavFile:TLazOpenALWavFileSource;
public
{ public 
declarations }
end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ 
TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
openAl 
:= TLazOpenAL.Create;
wavFile:= TLazOpenALWavFileSource.Create('sound/qatami.wav');
openAL.SourceList.Add(wavFile);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
wavFile
.Play;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
wavFile
.Stop;
end;

end. 
منتهي البساطة اليس كذلك Smile
كما يمكن أيضاً استخدام الوحدة mmsystem لتشغيل ملفات wav و إجراءتها نفس إجراءات دلفي
وكان من الأفضل أن تذكر أنها ليست لبناء برامج الصوت و لكن لاستخدام الأصوات في البرامج مثلاُ عند الضغط على button أو ما شابه
هلا أعطيتنا مثال علي mmsystem من فضلك
هل تعرف مكتبة تقوم بتشغيل mp3 او ogg ???
mmsystem :
كود :
playsound('file path ',0.snd_async);

أما بالنسبة للامتدادت الأخرى يمكنك استخدام مكتبة bass ستجدها في المنتدى في قسم المشاريع الجماعية(كم أتمنى أن يكون نشط بأعضاء و مبرمجين لازاراس)
الرابط
http://www.delphi4arab.net/forum/showthread.php?tid=943

كود :
http://msdn.microsoft.com/en-us/library/windows/desktop/dd743680%28v=vs.85%29.aspx
البارمترات الخاصة بالدالةplaysound
يبدو أن mmsystem خاصة بويندوز فقط
سأحاول تجربة كود bass علي لينوكس حينما أجد وقت
للأسف المثال المذكور ل openAL لم يعمل معي تتم عملية التصنيف و عند تشغيل الملف الناتج تظهر شاشة Access Violation
وهذا ملف المثال الذي طبقته في المرفقات
استخدم lazarus 0.9.30 / fpc 2.4.2-0
هذا على لينكس أما بالنسبة لويندوز فأستخدم الوحدة MMSystem في تشغيل ملفات wav بلا مشاكل
تم تطبيق المثال على لينكس Linux mint 11 Gnome
ينصح بتحديث نسختك إلي اﻷصدارات المستقرة
FPC-2.6/lazarus-1.0
شكرا أخي على الرد

حاولت مع:
lazarus 1.1
fpc 2.6.1

على منصة ويندوز بعد تنزيل مكتبة OpenAL32.dll

ونسخها الى مجلد لازاراس الرئيسي و مجلد البرنامج الذي يوجد به الملف التنفيذي الناتج

والنتيجة كما هي في السابق نفس رسالة الخطأ ولم أتمكن من تشغيل الملف الصوتي
السلام عليكم
إقتباس :على منصة ويندوز بعد تنزيل مكتبة OpenAL32.dll
لم يعمل على Linux Mint او Windows ام ماذا ؟
جرب بعد تثبيت المكتبة libalut0 وفي ويندوز Alut.dll
الصفحات : 1 2 3