الوسائط المتعددة
تساعدك
لوجو علي إصدار الأصوات بطرق عدة ، حيث يمكنك
التحكم الوسائط والأجهزة الموجودة بجهازك
بطرق عدة :
أ-
النغمات يمكنك إرسال الذبذبات عبر
السماعة الداخلية بطرق عدة فمثلاً يمكنك أن
تصدر نغمات الموسيقي عبر السماعة الداخلية
باستخدام الأمر tone و
صيغته :
Tone
frq time
وهي
تصدر ذبذبة frq
لمدة زمنية محددة حيث 60 = ثانية وحدة فمثلاً
Tone
37 60
يصدر
ذبذبة ترددها 37 لمدة
زمنية مقدارها ثانية والذبذبة
537 تعبر عن نغمة دو في الوسطي في الموسيقي وثمة
أمر أخر مشابه هو الأمر sound
وهو يختلف عن الأمر tone
في أن مدخله ليس أرقام إنما قائمة تضم عنصرين
الأول يمثل الذبذبة والثاني يمثل زمن النغمة :
Sound [537 60]
يصدر
الذبذبة 537 لمدة ثانية .
ولكن
الأمر sound هو
أمر أساسي بينما الأمر tone
هو أمر مكتبة .
وباللغة
العربية يمكنك كتابة :
صوت [537 60 ]
وهذا
سوف يؤدي نفس الوظيفة ولكن عندما تقوم ببناء
برنامج يتطلب اللغة العربية ، تظراً مشكلة
الاتجاه عند عند إعادة تحرير البرنامج ، لذلك
ننصح باستخدام برنامج المفكرة أو برنامج معلم
html فهو يتضمن
محرر للوجو وجافا و html
في نفس الوقت.
ولوجو
تمكنك من إصدار الصوت بطريقة مستمرة بالأمر soundon
وهو يقبل مدخل عددي يستمر حتي تنهية بالأمر soundoff
فمثلاُ :
Soundon
537
يستمر
في إصدار الذبذبة 537 حتى تنهيه بالأمر soundoff
، وكليهما أمر مكتبة .
والآن
لدينا طريقة حديثة تمكنك في إصدار الصوت
باستخدام بطاقة الصوت :
وهذا
يمر عبر عدة خطوات :
أ-
فتح أجهزة الميدي midi
بالأمر midiopen
ب-
استخدام الأمر midimessage
.
ت-
خلق الأجهزة بالأمر midiclose
.
مثال :
Show midiopen
Midimessage (list 192+:chanel
:istrument 0)
Midimessage (list 144+:chanel
:octave+:tone :velocity)
Midiclose
ونلاحظ أن السطر الأول
يهيئ أجهزة الميدي midi
ولكن إذا كانت الأجهزة مهيئة فإنه يصدر رسالة
خطأ والسطر الثاني يختار نوع الجهاز فمثلاُ
البيانو من 0 إلي 7 والجيتار من 24 إلي 31 ويضم أعداد من 0 إلي 127 جهاز ولكن كما
تري فصيغة السطر الثاني شبيهة بالسطر الثالث
ولكن العدد 192 يؤدي لاختيار نوع الجهاز بينما
العدد 144 يختار النغمة .
والبارامتر chanel
عبارة عن رقن القناة ويأخذ عدد يتراوح بين 1 و16
، والبارامتر istrument
متغير من 0 إلي 127 أما المتغير octave
فيأخذ قيم من 0 إلي 8 والنغمة تتراواح بين 15 إلي ...127 ، و
الآن إذا كان لديك فكرة بالموسيقي فيمكنك أن
تعزف مقطوعة موسيقية .
والبرنامج التالي يمكنك
من عزف الموسيقي بنغماتها فمثلاً يمكنك أن
تنشئ برنامج يعزف بطريقة البيسك القديمة
مثلاُ :
Play [C1 C#1 D1 D#1 E1 F1 F#1
G1 G#1 A1 A#1 B1]
الذي يعزف السلم
الموسيقي :
to ComputeTone :xx
localmake "ToneNum remainder :xx
12
op :ToneNum
end
to DetermineTime :xxx
localmake "gg
last :xxx
localmake "gg 1/:gg
op :gg
end if
to DetermineTone :xxx
localmake "bb count :xxx
if :bb=2 [op first :xxx]
if :bb=3 [op bl :xxx]
if :bb=4 [localmake "gg word
item 3 :xxx item 4 :xxx op :gg ]
end if
to play :list
localmake "nn count :list
if
:octave<0 [make "octave=0]
for [i 1 :nn][~
localmake "htone item :i :list
localmake "ttone DetermineTone :htone
localmake "DistTone DetermineTime :htone
if :ttone="< [make "octave :octave-1]
if :ttone="< [make "octave :octave+1]
if :octave<0 [make "octave=0 ]
if :octave>8 [make "octave=8 ]
if
UpperCase(:ttone)="C [
localmake "aa 0+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="C#
[ localmake "aa 1+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="D
[ localmake "aa 2+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="D#
[ localmake "aa 3+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="E
[ localmake "aa 4+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="F
[ localmake "aa 5+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="F#
[ localmake "aa 6+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="G
[ localmake "aa 7+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="G#
[ localmake "aa 8+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="A
[ localmake "aa 9+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="A#
[ localmake "aa 10+:octave*12 playtone
(list :aa :DistTone) ]
if UpperCase(:ttone)="B
[ localmake "aa 11+:octave*12 playtone
(list :aa :DistTone) ]
]
end
to playtone :list
localmake "Mtone item 1 :list
localmake "velo item 2 :list
if :velo > 1 [localmake "velo
1]
localmake "octave 144 + int(:Mtone/12)
localmake "dist int(:velo) * 127
localmake "Flist (list :octave :Mtone :dist)
show (list :list
WriteToneName :Mtone)
midimessage (:Flist)
localmake "velo int(:velo)
wait :velo*60
end
to WriteToneName :xx
localmake "ntone (ComputeTone :xx)
if :ntone=0 [op "C]
if :ntone=1 [op "C#]
if :ntone=2 [op "D]
if :ntone=3 [op "D#]
if :ntone=4 [op "E]
if :ntone=5 [op "F]
if :ntone=6 [op "F#]
if :ntone=7 [op "G]
if :ntone=8 [op "G#]
if :ntone=9 [op "A]
if :ntone=10 [op "A#]
if :ntone=11 [op "B]
end
Make "octave 5
Make "startup [SHOW midiopen]
ملفات
الصوت والموسيقي :
تساعدك
لوجو ميكروسوفت علي قراءة الملفات الصوتية
وملفات الفيديو avi
بالأمر playwave
فمثلاً الصيغة التالية تعزف ملف الصوت المسمي
tada.wav والموجود في
الفهرس media في
المجلد win98 :
playwave "c:\\win98\\media\\tada.wav 1+8
ولكن
هذا الملف سوف يتم عزفه بطريقة مستمرة ويمكنك
قطعه بالأمر
playwave [] 0
أو
يمكنك أن تستخدم بارامتر أخر كما يلي :
playwave "c:\\win98\\media\\tada.wav 0
أو
playwave "c:\\win98\\media\\tada.wav 1
لاحظ
الفرق بينهما من ظهور المؤشر وعودته إليك .
وعموماً
صيغة الأمر هي :
Playwave wavefile flages
والمدخل
الأول عبارة عن مسار ملف الصوت ولكن مع
استخدام الرمز \\ بدلاً من الرمز /
، والمدخل الثاني يوضح كيفية العزف فمثلاُ
0
لا تعود حتي تنتهي من تنفيذ الملف
1
ارجع قبل أن تنهي العزف
8
استمر في القراءة حتي استخدم امر صوت آخر .
16
لا توقف قراءة الصوت .
وأهم
تلك البارامترات هم 0 ، 1 و8 ويمكنك أن تستخدم
أكثر من قيمة معا كما بالمثال السابق
كما
يمكنك استخدام الأمر MCI
وصيغته كما يلي :
Status MCI mci-command-list
Status (MCI mci-command-list callback)
مثال
:
to soundit
print
mci [open c:\\win98\\media\\tada.wav type waveaudio alias wa1]
print
mci [open c:\\win98\\ding.wav type waveaudio alias wa2]
mci
[seek wa1 to start]
mci
[play wa1 wait]
repeat
2~
[~
mci
[seek wa2 to start]~
mci
[play wa2 wait]~
]
mci
[close wa1]
mci
[close wa2]
end
والآن
ماذا عن ملفات الفيديو
to opdFile
op
dialogfileopen "*.avi "
end
to video
localmake "a opdFile
print sentence [opened video on channel]
mci (sentence [open] :a [type avivideo alias video])
print sentence [عرض فيلم
الفيديو] :a
mci [play video wait]
mci [close video]
end
ويمكنك
مراجعة أوامر mci
في ملف التعليمات

|