delphi4arab منتديات دلفي للعرب
تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : متتديات باسكال Pascal (https://delphi4arab.net/forum/forumdisplay.php?fid=7)
+--- قسم : Lazarus - Free Pascal - CrossKylix - Kylix - CrossVCL (https://delphi4arab.net/forum/forumdisplay.php?fid=34)
+--- الموضوع : تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal (/showthread.php?tid=4479)

الصفحات: 1 2 3


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - a.atalla - 23-08-2012

السلام عليكم ورحمة الله وبركاته
هذا الشرح تم تجربته علي 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


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - piratewar - 23-08-2012

كما يمكن أيضاً استخدام الوحدة mmsystem لتشغيل ملفات wav و إجراءتها نفس إجراءات دلفي
وكان من الأفضل أن تذكر أنها ليست لبناء برامج الصوت و لكن لاستخدام الأصوات في البرامج مثلاُ عند الضغط على button أو ما شابه


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - a.atalla - 23-08-2012

هلا أعطيتنا مثال علي mmsystem من فضلك
هل تعرف مكتبة تقوم بتشغيل mp3 او ogg ???


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - piratewar - 24-08-2012

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


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - a.atalla - 24-08-2012

يبدو أن mmsystem خاصة بويندوز فقط
سأحاول تجربة كود bass علي لينوكس حينما أجد وقت


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - amh_2009 - 15-09-2012

للأسف المثال المذكور ل openAL لم يعمل معي تتم عملية التصنيف و عند تشغيل الملف الناتج تظهر شاشة Access Violation
وهذا ملف المثال الذي طبقته في المرفقات
استخدم lazarus 0.9.30 / fpc 2.4.2-0
هذا على لينكس أما بالنسبة لويندوز فأستخدم الوحدة MMSystem في تشغيل ملفات wav بلا مشاكل
تم تطبيق المثال على لينكس Linux mint 11 Gnome


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - a.atalla - 15-09-2012

ينصح بتحديث نسختك إلي اﻷصدارات المستقرة
FPC-2.6/lazarus-1.0


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - amh_2009 - 15-09-2012

شكرا أخي على الرد

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

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

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

والنتيجة كما هي في السابق نفس رسالة الخطأ ولم أتمكن من تشغيل الملف الصوتي


تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - محمد عبد العزيز - 15-09-2012

السلام عليكم
إقتباس :على منصة ويندوز بعد تنزيل مكتبة OpenAL32.dll
لم يعمل على Linux Mint او Windows ام ماذا ؟



تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal - a.atalla - 16-09-2012

جرب بعد تثبيت المكتبة libalut0 وفي ويندوز Alut.dll