PDA

View Full Version : Signal Processing / Digital Signal Processing နဲ ့ ပတ္သက္သမွ်



nyi.nyi
09-18-2010, 08:41 AM
ကြ်န္ေတာ္ က signal processing ကို အခုမွ စတင္ ေလ့လာေနတာ ဆိုေတာ့ အေျခခံေလာက္ဘဲ သိပါတယ္။ ဒါေပမယ့္ ကြ်န္ေတာ္ သိသေလာက္နဲ ့ အစေဖာ္ ေပးလိုက္ရင္ ကြ်န္ေတာ့ထက္ signal processing အေၾကာင္း ကို ပိုသိ နားလည္တဲ့ အကို အမ ေတြက ဆက္လက္ျပီး လိုအပ္တာေတြ ျပင္ဆင္ ျဖည့္ဆည္း ေဆြးေႏြးသြားမယ္ စဥ္းစားမိျပီး ဒီေနရာမွာ နဲနဲ အစေဖာ္ ေပးခ်င္ပါတယ္။ ဒါေပမယ့္ ဘာေရးရ မွန္း မသိေလေတာ့ ေခါင္းထဲ မွာ ရွိတာေတြ ဖတ္ခဲ့ဖူးတာေတြကို ဘဲ ဆက္စပ္ျပီး ေရးလိုက္တာပါ။
Signal processing ဆိုတဲ့ အတိုင္း signal ေတြကို process လုပ္တာေပါ့ ;D ဘယ္လို process လုပ္လဲဆိုေတာ့ ဥပမာ တစ္ခု အေနနဲ ့ ေျပာရရင္ CIA က တလွ်ိဳ တစ္ေယာက္ စကား ေျပာေနတာကို အေ၀းကေန အသံဖမ္းျပီး နားေထာင္ ခ်င္တယ္ဆိုပါေတာ့။ ဒါေပမယ့္ အဲ့ဒီ တလွ်ိဳ ရဲ ့ အသံက သူ ့ ေဘးနားက ေခြးေဟာင္သံေရာ ေၾကာင္ေအာ္သံေရာ ဂီတာတီးသံေရာ သီခ်င္း ဆိုသံ အသံေပါင္းစံု နဲ ့ ေရာေနတဲ့ အတြက္ အဲ့ဒီ တလ်ွိဳ ဘာေျပာေနတယ္ ဆိုတာကို ေကာင္းေကာင္း မၾကား ရဘူးျဖစ္ေနတယ္။
http://i92.photobucket.com/albums/l13/nyi1/TandF.jpg
from here (http://www.mathworks.com/products/fixed/demos.html?file=/products/demos/shipping/fixedpoint/fi_radix2fft_demo.html)
ပံုေတြကေတာ့ ကြ်န္ေတာ္ မဆြဲခ်င္လို ့ အင္တာနက္ကေနဘဲ ရွာေဖြတင္ထားတာပါ။
အေပၚက ပံုက ဥပမာ အေနနဲ ့ ေျပာရရင္ အသံဖမ္း စက္ကေန ဖမ္းယူ ရရွိတဲ့ အသံလွိုင္းက (time domain) အတြင္းမွာ အခ်ိန္ (time) နဲ ့ အမွ် လိုက္ျပီး ေျပာင္းေနတဲ့ အသံေပါင္းစံု စုေပါင္းထားတဲ့ အသံအား (amplitude/voltage) တစ္ခုျဖစ္ပါတယ္။ အဲ့ဒီ ေတာ့ တလ်ွိဳ တစ္ေယာက္တည္း ရဲ ့ အသံ ကို အခုလို ေရာေသာ ေနတဲ့ အသံ ေပါင္း စံု က ေန ခြဲထုတ္ဖို ့အတြက္ signal processing ကို သံုးရပါတယ္။ ဒီ link ေနရာမွာ (click me here) (http://www.myanmarengineer.org/forum/index.php/topic,2709.0.html) ကို William Paul ေျပာျပထားသလိုဘဲ အရာ၀ထၳဳတိုင္း လူတိုင္း မွာ သူ ့ ကိုယ္ပိုင္ frequency ရွိတဲ့ အတြက္ ေရာေထြးေနတဲ့ အသံ ေပါင္းစံုထဲက မလိုခ်င္တဲ့ ေခြးေဟာင္သံေတြ ေၾကာင္ေအာ္သံေတြ ဂီတာသံ ေတြကို သူတို ့ရဲ ့ frequency အလိုက္ ခြဲထုတ္လိုက္ရင္ ေနာက္ဆံုးမွာ ကြ်န္ေတာ္တို ့ လိုခ်င္တဲ့ တလွ်ိဳ ရဲ ့ အသံတစ္ခုတည္း ဘဲ ရရွိလာမွာ ျဖစ္ပါတယ္။ အဲ့ဒီလို အသံေတြကို frequency အလိုက္ခြဲထုတ္ဖို ့ဆိုရင္ ဟို အေပၚက ပံုထဲကလို အခ်ိန္နဲ ့ လိုက္ေျပာင္းေနတဲ့ အသံ signal ကို time domain ကေန ဒုတိယ wave form လိုမ်ိဳး frequency နဲ ့ လိုက္ေျပာင္းေနတဲ့ အသံ signal (in frequency domain) အျဖစ္ေျပာင္းေပးရမွာ ျဖစ္ပါတယ္။ ဒီေနရာမွာ Fourier series/transform က အသံုး၀င္လာတာျဖစ္ပါတယ္။
http://i92.photobucket.com/albums/l13/nyi1/Fxform.jpg
from here (http://ict.udlap.mx/people/oleg/docencia/IMAGENES/chapter2/image_232_IS548.html)
Fourier ရဲ ့ သီအုိရီ က လြယ္လြယ္ေျပာရရင္ ဘယ္လို analog signal မ်ိဳးဘဲျဖစ္ျဖစ္ signal waveform လွုိင္းတစ္ခုက fundamental frequency မတူတဲ့ အေရအတြက္ တစ္ခု ဒါမွမဟုတ္ တစ္ခုထက္ပိုတဲ့ sinusoidal wave ေတြအမ်ားၾကီးနဲ ့ ဖြဲ ့စည္း တည္ေဆာက္ထားတယ္ လို ့ဆိုပါတယ္။ ဥပမာ အေပၚက ပံုမွာလိုဘဲ ဘယ္ဖက္မွာ frequency မတူတဲ့ sin wave ေတြ ေပါင္းျခင္းအားျဖင့္ ညာဖက္က signal အသစ္ေတြကို ဖြဲ ့စည္းႏိုင္ပါတယ္။ ေနာက္ ေအာက္ဆံုးက ပံုလိုဘဲ frequency မတူတဲ့ sin wave ေတြ အမ်ားၾကီး ေပါင္းျပီးေတာ့ square wave တစ္ခုကို ဖန္တီး ႏိုင္ပါတယ္။ အဲ့ဒီေတာ့ အေပၚမွာေျပာခဲ့သလို တလွ်ိဳရဲ ့ အသံတစ္ခုတည္း ကိုလိုခ်င္ရင္ အသံေပါင္းစံု စုေပါင္းေနတဲ့ (time domain ထဲက) signal ကို fourier နည္းနဲ ့ (frequency domain ထဲမွာ) frequency မတူတဲ့ sin wave ေတြ အမ်ားၾကီး အျဖစ္နဲ ့ ခြဲထုတ္လိုက္ျပီး အဲ့ဒီ frequency မတူတဲ့ sin wave ေတြထဲကမွ ကိုယ္လိုခ်င္တဲ့ frequency ရွိတဲ့ sin wave ေတြကိုဘဲ ေရြးထုတ္ ျပန္ေပါင္းျပီး ကိုယ္လိုခ်င္တဲ့ တလွ်ိဳရဲ ့ စကားသံ တစ္ခုတည္းကို ျပန္တည္ေဆာက္ လို ့ရပါတယ္။ ဒါက ကြ်န္ေတာ္ စဥ္းစား မိတဲ့ ဥပမာ တစ္ခုပါ။ ကြ်န္ေတာ္တို ့ windows media player တို ့ cd/mp3 player ေတြမွာ ပါတဲ့ equalizer ဆိုတာလည္း ဒီသေဘာ မ်ိဳးပါဘဲ။ သီခ်င္းတစ္ခုမွာ ပါတဲ့ ဂစ္တာသံေတြ keyboard သံ bass သံေတြရဲ ့ မတူညီတဲ့ frequency ကို လိုက္ျပီး ကိုယ္လိုခ်င္ တဲ့ frequency တစ္ခုတည္းကိုဘဲ အတိုး အက်ယ္ လုပ္ျခင္းအားျဖင့္ သီခ်င္းသံရဲ ့ bass/treble/vocal ကို လိုသလို ျပဳျပင္ႏိုင္ပါတယ္။

http://i92.photobucket.com/albums/l13/nyi1/fourierHarmonics.jpg
http://i92.photobucket.com/albums/l13/nyi1/squarefft1.jpg
http://i92.photobucket.com/albums/l13/nyi1/squarefft2.jpg
သူလွ်ိဳ ဥပမာ ကို ၾကည့္မယ္ဆို ရင္ ဥပမာ ဒီအေပၚက ပံု ၃ ပံုမွာ ပထမ ပံု မွာ ျပထားတဲ့ square wave (time domain) ကို အသံေတြ အားလံုး ေရာယွက္ေနတဲ့ အသံဖမ္းစက္နဲ ့ ဖမ္း ထားတဲ့ signal လို ့သေဘာထားပါမယ္။ သူ ့ ေဘးက ပံုကေတာ့ အဲ့ဒီ signal ကို fourier series နည္းနဲ ့ sinusoidal signal ေတြ ခြဲထုတ္ထားတဲ့ပံု (time domain) ျဖစ္ပါတယ္။ အဲ့ဒီ အသံေတြ အားလံုး ေယာယွက္ေန တဲ့ signal ကိုမွ fourier transform နည္းနဲ ့ frequency domain ထဲကို ေျပာင္းလဲ ၾကည့္ပါတယ္။ ဒုတိယ ပံုထဲမွာ ျပထားသလို frequency domain ထဲမွာ သူ ့ ကိုယ္ပိုင္ frequency အလုိက္ အရာ ၀တၱဳ လူ သတၱ၀ါ ေတြဟာ အုပ္စု ကြဲသြားတာကို ေတြ ့ရပါတယ္။ အဲ့ဒီ ကြဲေနတဲ့ အုပ္စုထဲကမွ filter သံုးျပီး သူလွ်ိဳ ရဲ ့ frequency တစ္ခုတည္း ကိုဘဲ စစ္ထုတ္လိုက္တဲ့ အခါ တတိယ ပံုထဲမွာ ျပထားသလို သူလွ်ိဳ ရဲ ့ အသံ တစ္ခုတည္း ကို ရရွိလာမွာ ျဖစ္ပါတယ္။ အဲ့ဒါကိုမွ inverse fourier transform သံုးျပီး time domain signal ကို ျပန္ေျပာင္းလိုက္လွ်င္ ကြ်န္ေတာ္တို ့ လိုခ်င္တဲ့ သူလွ်ိဳ ရဲ ့ စကားသံ တစ္ခုတည္း ကို ရရွိလာမွာ ျဖစ္ပါတယ္။

nyi.nyi
09-18-2010, 08:47 AM
ဒီေနရာမွာ digital signal processing က ဘယ္လိုေနရာယူလာလဲဆိုေတာ့ ကြ်န္ေတာ္တို ့ သိၾကတဲ့ အတိုင္း digital နည္းပညာရဲ ့ အရည္အေသြး ေကာင္းမွု ေနရာယူမွု သိုသိပ္ေသးငယ္ မွုေတြေၾကာင့္ ျဖစ္ပါတယ္။ digital ဆိုတဲ့ အတိုင္း နံပါတ္ေတြ နဲ ့ အလုပ္လုပ္ရတာျဖစ္တဲ့ အတြက္ electronic circuit ေတြ မလိုေတာ့ဘဲ signal ေတြကို computer ေပၚမွာ software ေတြသံုးျပီး လိုသလို တည္ေဆာက္ျပဳျပင္ လာႏိုင္ပါတယ္။ အလြယ္ကူဆံုး ဥပမာ ေပးရရင္ ကြ်န္ေတာ္တို ့ ဟုိးအရင္ေခတ္က သံုးတဲ့ ကတ္ဆက္ တိပ္ေခြ (analog) ေတြ နဲ ့ အခု ေခတ္သံုး cd/mp3 player (digital) ေတြကို ႏွိုင္ယွဥ္ၾကည့္လို ့ရပါတယ္။ လွ်ပ္စစ္သံလိုက္ နဲ ့ တည္ေဆာက္ထားတဲ့ ကတ္ဆက္ တိပ္ေခြ ရဲ ့ တိပ္သားျပားေတြေပၚက သီခ်င္းေတြဟာ သံုးတာၾကာလာတာနဲ ့ အမွ့် တိပ္သား ပ်က္စီးလားျပီး သီခ်င္း အသံလည္း တျဖည္းျဖည္းနဲ ့ ပ်က္လာပါတယ္။ digital နည္းနဲ ့ တည္ေဆာက္ထားတဲ့ သီခ်င္းေတြကေတာ့ နံပါတ္ေတြ ျဖစ္တဲ့ အတြက္ ဘယ္ေလာက္ဖြင့္ဖြင့္ နံပါတ္ေတြက ဘယ္လိုနည္းနဲ ့ မွ ပ်က္စီးယိုယြင္းမွု မရွိႏိုင္တဲ့ အတြက္ သီခ်င္း အသံကလည္း ဘယ္ေတာ့မွ အရည္အေသြး က်သြားစရာမရွိပါဘူး။ အဲ့ဒီလို analog signal ကို digital signal အျဖစ္ေျပာင္းလဲတဲ့ ေနရာမွာ signal processing က အသံုး၀င္လာျပန္ပါတယ္။

Analog signal ဆိုတာက သူ ့ amplitude က အကန္ ့အသတ္ မရွိတဲ့ အခ်ိန္နဲ ့ အမွ် ေျပာင္းလဲ continuous signal ျဖစ္တဲ့ အတြက္ digital signal လိုမ်ိဳး ကန္ ့သတ္ ထားတဲ့ အခ်ိန္ အမွတ္ေတြ အလိုက္သာ amplitude ေျပာင္းလဲတဲ့ discrete signal တစ္ခုရဖို ့ဆိုရင္ sampling theorem ကိုသံုးျပီး continuous signal ကေန discrete signal ကို အရင္ ေျပာင္းလဲရပါတယ္။ sampling လုပ္တယ္ဆိုတာက (အျမီးစားတာ မဟုတ္ပါ ) :) ကိုယ္လိုခ်င္တဲ့ ကိုယ္သတ္မွတ္ထားတဲ့ အခ်ိန္ အမွတ္ေလး ေတြမွာ ဘဲရွိတဲ့ data points (amplitude) ေတြ ကိုဘဲ စိစစ္ေရြးခ်ယ္ျပီး ပံုစံ ဆင္တူျပီး အရြယ္အစား ပိုေသးငယ္တဲ့ signal တစ္ခု ျပန္တည္ေဆာက္ ျခင္းကို ဆိုလိုတာပါ။ ဒီေအာက္က waveform ၂ ခု ကိုၾကည့္ရင္ အေပၚက waveform က အခ်ိန္အကန္ ့အသတ္မရွိေျပာင္းလဲေနတဲ့ continuous signal ျဖစ္ျပီးေတာ့ သူ ့ေအာက္က waveform ကေတာ့ သတ္မွတ္ထားတဲ့ အခ်ိန္ အမွတ္ေတြမွာသာ လိုက္ေျပာင္းေနတဲ့ sampling လုပ္ထားတဲ့ discrete waveform ျဖစ္ပါတယ္။
http://i92.photobucket.com/albums/l13/nyi1/sampling.jpg
from here (http://www.wescottdesign.com/articles/Sampling/sampling.html)

http://i92.photobucket.com/albums/l13/nyi1/Lena.jpg
ဒီ အေပၚက ပံုကေတာ့ signal processing စာအုပ္တိုင္းလိုလိုမွာ ေတြ ့ရတတ္တဲ့ Playboy star Lena ပံုျဖစ္ပါတယ္။ ပံုေတြမွာ ေတြ ့ရတဲ့ အတိုင္း sampling လုပ္လိုက္ရင္ နဂို ပံုရဲ ့ size ထက္ အရြယ္ငယ္ျပီး ပံုစံ ဆင္တူတဲ့ ပံုကို ရရွိမွာျဖစ္ပါတယ္။ picture image ပံုတစ္ခုဟာ ေသးငယ္တဲ့ pixel အေရာင္ အစက္ ေလးေပါင္း မ်ားစြာ နဲ ့ ဖြဲ ့စည္းထားတဲ့ အတြက္ အဲ့ဒီ အစက္ ေလးေတြ အားလံုးကို မယူဘဲ ကိုယ္ လိုခ်င္တဲ့ သတ္မွတ္ထားတဲ့ (x,y position) ေနရာမွာ ရွိတဲ့ အစက္ေတြကိုဘဲ ေရြးယူျခင္းျဖင့္ sampling လုပ္ျပီး အရြယ္ (file size) ပိုေသးငယ္တဲ့ ညာဖက္ကလို ပံုမ်ိဳးကို ရရွိမွာျဖစ္ပါတယ္။ ဥပမာ high resolution ရွိတဲ့ ".BMP" photo picture တစ္ခုကို windows microsoft paint နဲ ့ ဖြင့္ၾကည့္ျပီး low resolution ရွိတဲ့ ".JPEG" picture တစ္ခုအေနနဲ ့ ျပန္သိမ္းဆည္း (Save As JPEG) ျပီး ရရွိလာတဲ့ ပံုလိုမ်ိဳး ျဖစ္ပါတယ္။

ဒီေနရာမွာ အရမ္း အေရးၾကီးျပီး ေမးသင့္တဲ့ ေမးခြန္းတစ္ခု ရွိပါတယ္။ အဲ့ဒါဘာလဲ ဆိုေတာ့ ဘာျဖစ္လို ့ မ်ား အီလက္ထေရာနစ္ အင္ဂ်င္နီယာ signal processing စာအုပ္တိုင္း လိုလိုမွာ Lena ပံုကို ဥပမာ ေပးတတ္ၾကတာလဲ ဆိုတဲ့ ေမးခြန္းပါဘဲ။ :4: အဲ့ဒီ Lena (Lenna) ရဲ ့ ပံုျပင္ကေတာ့ ဒီလိုပါ။ 1970 ေလာက္တုန္းက University of Southern California (USC) မွာ professor နဲ ့ ေက်ာင္းသား တစ္အုပ္ signal processing နဲ ့ ပတ္သက္တဲ့ ေဆြးေႏြးပြဲမွာ signal processing effect ကို နမူနာ ျပဖို ့ဆိုျပီး သူတို ့ အခန္းထဲမွာ ဓါတ္ပံု လိုက္ရွာၾကပါသတဲ့။ သူတို ့ ဆီမွာ ပံုေပါင္း ေျမာက္ျမားစြာ ရွိေပမယ္လို ့ သံုးျပီးသားေတြကို ထပ္တလဲလဲ မသံုးခ်င္တာနဲ ့ ပံုအသစ္ကို လိုက္ရွာျခင္းျဖစ္ပါတယ္။ ကံအားေလ်ာ္စြာ အဲ့ဒီ အခ်ိန္မွာဘဲ ေက်ာင္းသားတစ္ေယာက္က playboy magazine တစ္အုပ္ကိုင္ျပီး အခန္းထဲကို ၀င္လာပါေလေရာဗ်ာ။ အဲ့ဒီ playboy magazine ထဲက Lena ရဲ ့ကိုယ္တံုးလံုး ပံုကိုလဲ ျမင္ေရာ ဘာေျပာေကာင္းမလဲ professor နဲ ့ အင္ဂ်င္နီယာ ေက်ာင္းသားတစ္အုပ္ အဲ့ဒီ Lena ပံုကို ေခါင္း ကေနျဖတ္ျပီး သူတို ့ signal processing ေဆြးေႏြး သရုပ္ျပပြဲမွာ ထည့္သံုးလိုက္ပါေလေရာ။ အဲ့ဒီကေနစျပီး Lena ပံုကို ဟာသ တစ္ခုအေနနဲ ့ signal processing စာအုပ္တိုင္းလိုလို မွာ ထည့္ၾကပါေလေရာ။ MEF က အင္ဂ်င္နီယာၾကီး ေတြလည္း Lena ရဲ naked ပံုကို ၾကည့္ခ်င္တယ္ ဆိုရင္ေတာ့ ဟဲဟဲ ဒီမွာ မတင္ျပ ေတာ့ပါဘူး။ :4: :4: အင္တာနက္မွာသာ ရွာၾကည့္ ၾကေပေတာ့ဗ်ာ။ :4:

nyi.nyi
09-18-2010, 08:53 AM
အေပၚက Anatomy အပိုင္းက အဲ့ဒီမွာ ဘဲ ခဏရပ္ျပီး signal processing အပိုင္း ကို ဆက္သြားရေအာင္
အဲ့ဒီလို signal ေတြကို sampling လုပ္တဲ့ ေနရာမွာ matlab တို ့ c++ တို ့လိုမ်ိဳး programming ေတြ က အသံုး၀င္လာပါတယ္။

http://i92.photobucket.com/albums/l13/nyi1/sampleSIN.jpg
ဥပမာ ဒီ အေပၚက ပံုထဲကလုိဘဲ sin wave တစ္ခုကို sampling လုပ္ ခ်င္တယ္ဆိုပါေတာ့။ ကြ်န္ေတာ္တို ့ က အဲ့ဒီ signal ကို သတ္မွတ္ထားတဲ့ အခ်ိန္ အမွတ္ (t=1,2,3….etc) ေတြမွာဘဲ လိုခ်င္တယ္ဆိုရင္ ဥပမာ matlab, c++ မွာ ဒီလိုမ်ိဳး programming code ေရးလို ့ရပါတယ္။


double k[15];
for (n=0;n<=15;n++)
k[n] = sin(2 * pi * n / 15);

သေဘာကေတာ့ ၁ ကေန ၁၅ (total time period of the signal) အတြင္း ၁ မွတ္တိုးတိုင္း အဲ့ဒီ အမွတ္မွာ ရွိတဲ့ sin wave ရဲ ့ data point (amplitude) ကို k[n] array ထဲမွာ သြားသိမ္းပါလို ့ ဆိုလိုတာျဖစ္ပါတယ္။ k[n] array ထဲမွာ ရရွိသိမ္းဆည္းထားတဲ့ ဂဏန္း ေတြက ရိုးရိုးသာမာန္ ဒႆမ ဂဏာန္း (floating numbers) ေတြျဖစ္ပါတယ္။ အဲ့ဒါေတြကို မွ ကြန္ျပဴတာ နားလည္ႏိုင္တဲ့ binary integer number ေတြ အျဖစ္ေျပာင္းဖို ့ လိုပါတယ္။ ဒီေနရာမွာ ၾကားျဖတ္ျပီးေတာ့ computer memory မွာ data ေတြကို သိမ္းဆည္း ေနရာခ် တာနဲ ့ ဆက္စပ္ျပီး ေျပာခ်င္ပါတယ္။ hexadecimal number တန္ဖိုးက အစဥ္လိုက္ 0 1 2 3 4 5 6 7 8 9 A B C D E F ရွိပါတယ္။ ဆိုပါေတာ့ ကြ်န္ေတာ္တို ့ ကြန္ျပဴတာ ရဲ ့ memory က 8-bit 256 (decimal number 0 to 255) or (hexadecimal 0x00 to 0xFF) ရွိတယ္ ဆိုပါစို ့့။ သေဘာက memory မွာ ေနရာ အံခြက္ေလးေပါင္း 256 ခုရွိတယ္ဆိုရင္ address 0x00 က အံခြက္ ၁ ကိုဆိုလိုတာျဖစ္ျပီး 0x01 က အံခြက္ ၂ …..ေနာက္ဆံုး 0xFF က ေနာက္ဆံုး အံခြက္ 255 ကို ဆိုလိုတာျဖစ္ပါတယ္။ ကြ်န္ေတာ္တို ့က အေပၚမွာ sampling လုပ္ျပီး ရလာတဲ့ k[n] ထဲက floating value ေတြကို အဲ့ဒီ computer memory ရဲ ့ အံခြက္ေတြထဲမွာ ထည့္သိမ္းခ်င္တာပါ။ ဒါေပမယ့္ အဲ့ဒီလို ထည့္သိမ္းဖို ့ဆိုရင္ ကြန္ျပဴတာ နားလည္ တဲ့ binary integer number 01 အေနနဲ ့ သိမ္းရပါမယ္။ အဲ့ဒီေတာ့ အေပၚက floating number ကို binary number ေျပာင္းဖို ့ အတြက္ programming code ေရးရပါမယ္။
ဥပမာ ကြ်န္ေတာ္ တို ့ ရဲ ့ k[n] array ထဲမွာ သိမ္းထားတဲ့ floating value ေတြက -1.0V ကေန +1.0V အတြင္း ရွိတယ္ဆိုပါေတာ့။ ဒါဆိုရင္ အဲ့ဒီ -1.0 to +1.0 အတြင္း ရွိတဲ့ number ေတြကို 0x00 to 0xFF ရွိတဲ့ 255 ကြက္အတြင္းမွာ ဘယ္လိုမ်ား ေနရာခ်ႏိုင္မလဲ??


unsigned int decNum[15];
for(n=0; n<=15; n++)
decNum[n] = ((k[n] / 2) + 0.5) * 0xFF;

သေဘာကေတာ့ k[n] ထဲမွာရွိတဲ့ floating number တစ္ခုခ်င္းစီကို binary ေျပာင္းခ်င္တဲ့ အတြက္ 2 နဲ ့ စားတာျဖစ္ျပီး။ ေအာက္ဆံုးက အနည္းဆံုး တန္ဖိုးက 0V ကေနစတာမဟုတ္ဘဲ -1.0V ကေနစတာျဖစ္တဲ့ အတြက္ 0.5 ထည့္ေပါင္းေပးလိုက္ျခင္းျဖစ္ပါတယ္။ အဲ့ဒီလို လုပ္ေတာ့မွ ရလာတဲ့ တန္ဖိုး က အျမဲ 0 to 1.0 ၾကားထဲမွာ ရွိေနမွာ ျဖစ္ပါတယ္။ ရလာတဲ့ တန္ဖိုးကိုမွ 0x00 to 0xFF ဒါမွမဟုတ္ 0 to 255 ၾကားထဲမွာ ေနရာ ေပးခ်င္တာျဖစ္တဲ့ အတြက္ အျမင့္ဆံုး 0xFF ဒါမွမဟုတ္ 255 နဲ ့ေျမွာက္ေပးလိုက္တာျဖစ္ပါတယ္။
ဥပမာ ၂ ခု ၃ ခု ေလာက္လုပ္ၾကည္ရေအာင္။ ဥပမာ ကြ်န္ေတာ္တို ့ အေပၚက sin wave ကေန sample လုပ္လို ့ရတဲ့ k[n] array ထဲက floating value တန္ဖိုး တစ္ခုက +0.7V ဆိုပါဆို ့။
+0.7V => (0.7 / 2) + 0.5 = 0.85 => 0.85 * 255 (or) 0.85 * 0xFF = 216.75 ရလာမွာျဖစ္ပါတယ္။ အဲ့ဒါကို မွ unsigned integer variable decNum[n] ထဲမွာ သိမ္းလိုက္တဲ့ အတြက္ floating number 216.75 ကေန integer number 216 (11011000) အျဖစ္ကို ေျပာင္းလဲျပီး သိမ္းသြားပါတယ္။ ဒါဆို အေပၚမွာ ျပထားတဲ့ ပံုလိုဘဲ အျမင့္ဆံုး voltage value က 0xFF မွာ ေနရာ ယူျပီး အနိမ့္ဆံုး value က 0x00 ေနရာမွာ ေနရာယူမွာျဖစ္ပါတယ္။
For example: -1.0V => ((-1.0/2)+0.5)*255 = 0 (00000000)
For example: +1.0 => ((1.0/2)+0.5)*255 = 255 (11111111)
For example: -0.7 => ((-0.7/2)+0.5)*255 = 38.25 => integer 38 = (00100110)
အဲ့ဒီ နည္းနဲ ့ ကြ်န္ေတာ္တို ့ sampling လုပ္ျပီး ရရွိလာတဲ့ wave signal ရဲ ့ floating values ေတြကို ကြန္ျပဴတာ နားလည္ႏိုင္တဲ့ binary 01 ေတြ အျဖစ္ ေျပာင္းလဲ ျပီး ကြန္ျပဴတာ memory ထဲမွာ သိမ္းဆည္းႏိုင္ပါတယ္။ ျပီးေတာ့မွ ကြန္ျပဴတာ ေပၚမွာ software ေတြ သံုးျပီးေတာ့ ကိုယ္လိုခ်င္ သလိုမ်ိဳး signal ေတြ ျပန္တည္ေဆာက္ျပီး process လုပ္ၾကပါတယ္။

ကြ်န္ေတာ္ အာ၀ါတီး ရိုက္တာ ဒီေနရာမွာ ဘဲ ခဏရပ္ထား ျပီးေတာ့
signal processing / digital signal processing အေၾကာင္း နားလည္ တတ္ကြ်မ္း တဲ့ forum က အကိုအမ ေတြကို ၀င္ေရာက္ ေဆြးေႏြး ေပးဖို ့ တိုက္တြန္းခ်င္ပါတယ္။

nyi.nyi
09-19-2010, 06:15 PM
ဒီေအာက္က ဟာေတြက ေက်ာင္းေတြမွာ သင္တဲ့ signal processing အေျခခံ သီအိုရီ တခ်ိဳ ့ ပါ။ time shifting, time scaling, frequency scaling, convolution, correlation etc. ဘယ္ဖက္က ပံုက continuous signal ျဖစ္ျပီး ညာဖက္က ပံုက discrete signal ျဖစ္ပါတယ္။ ႏွစ္ခုယွဥ္ျပထားတာပါ။ ဒီ ေအာက္ က ပံုက ရိုးရိုး သာမာန္ continuous signal x(t) and discrete signal x[n] လို ့ သေဘာထားပါ။ သူတို ့ ကို signal processing လုပ္ရင္ ေအာက္က ပံုေတြထဲကလို မ်ိဳး ရပါတယ္။
http://i92.photobucket.com/albums/l13/nyi1/timeshift.jpg
အေပၚက ပံု ထဲမွာ နဂိုမူလ x(t) နဲ ့ x[n] ကို time shifting နည္း သံုးထားတဲ့ အတြက္ x(t) ကေန x(t-2) ျဖစ္လာျပီး x[n] ကေန x[n-2] ျဖစ္ေနပါတယ္။
signal စသြားတဲ့ အခ်ိန္ကို ေႏွးလိုက္တဲ့သေဘာပါ။
ဥပမာ ပဲ့တင္သံ လိုမ်ိဳးေပါ့။ ရိုးရိုး သာမာန္ ၾကားေနရတဲ့ အသံမွာ ကိုယ့္နားထဲ ၀င္လာတဲ့ အခ်ိန္ကို ေနာက္ဆုတ္လိုက္တဲ့ အတြက္ အသံက အေ၀း ကေန လာသလို ၾကားရျပီး ပဲ့တင္သံ လိုမ်ိဳး ျဖစ္သြားပါတယ္။
http://i92.photobucket.com/albums/l13/nyi1/timescale.jpg
ဒီ အေပၚက x(2t), x(t/2) နဲ ့ x[2n] ကေတာ့ နဂို မူလ x(t) နဲ ့ x[n] ကို ခ်ံဳ ့/ ခ်ဲ ့ လိုက္တဲ့ သေဘာပါ။ time scaling လို ့ေခၚပါတယ္။ x(2t) နဲ ့ x[2n] က နဂို မူလ signal ေတြကို ခ်ံဳ ့ လိုက္တာပါ။ နဂိုမူလ signal ရဲ ့ duration က 4 (t=0 to 4) ရွိတာကို ၂ ဆ ခ်ံဳ ့ လိုက္တဲ့ အတြက္ signal duration က x(2t) နဲ ့ x[2n] လိုမ်ိဳး 2 (t=0 to 2) ျဖစ္သြားပါတယ္။ ဥပမာ တိတ္ေခြ နဲ ့ ကတ္ဆက္အေဟာင္းေတြမွာ ေမာ္တာၾကိဳး တင္းလို ့ ထြက္လာတဲ့ အသံမ်ိဳးေပါ့။ ဒါမွမဟုတ္ DJ disc ကို လက္နဲ ့ ဆြဲပြတ္လိုက္ရင္ ထြက္လာတဲ့ အသံမ်ိဳးေပါ့။ နဂိုမူလထက္ signal တစ္ခုလံုး ကို အခ်ိန္တိုတို အတြင္းမွာ ၾကားလိုက္ရတဲ့ အသံမ်ိဳးေပါ့။ x(t/2) က်ေတာ့ နဂိုမူလ signal ကို duration ခ်ဲ ့ လိုက္တဲ့ သေဘာပါ။ ဥပမာ ကတ္ဆက္ ေမာ္တာၾကိဳး ေခ်ာင္လို ့ထြက္လာတဲ့ အသံမ်ိဳး။ DJ disc ကို လက္နဲ ့ ဆြဲျပီး ေမွးေမွးေလး ထိန္းထားလိုက္တဲ့ အသံမ်ိဳးေပါ့။ နဂိုမူလ ၾကားေနရတဲ့ signal အသံ တစ္ခုကို ဆြဲဆန္ ့ လိုက္တဲ့ အသံမ်ိဳးပါ။ လူတစ္ေယာက္က ေရ ဇလံုထဲ ေခါင္းႏွစ္ျပီး ေရေအာက္ကေန စကားေျပာတာကို ေရေပၚက လူက နားေထာင္တဲ့ အခါ သိပ္သည္းမွု ထူတဲ့ ေရကို ျဖတ္ျပီး ထြက္လာတဲ့ ခပ္ေလးေလး ဆြဲငင္ငင္ အသံလိုမ်ိဳးေပါ့။ ဒီေအာက္က x(-t) နဲ ့ x[-n] ကေတာ့ time reversal property. သူ ့ အတြက္ ဥပမာ ကေတာ့ လြယ္လြယ္ စဥ္းစားလို ့ မရဘူး။ :) space domain ထဲမွာဆိုရင္ေတာ့ ဥပမာ ဓါတ္ပံု တစ္ခုကို photo shop ထဲမွာ ျပင္ျပီး မွန္ထဲမွာ ျပန္ျမင္ရတဲ့ mirror image effect လိုမ်ိဳး လို ့ျမင္လို ့ရပါတယ္။
http://i92.photobucket.com/albums/l13/nyi1/timereverse.jpg
အေပၚမွာ ေျပာခဲ့တာေတြက signal တစ္ခုကို time domain ထဲမွာ ျပင္တာပါ။ တကယ္လို ့သာ အဲ့ဒီ signal ေတြကို frequency domain ထဲမွာ ျပင္မယ္ဆိုရင္ သူတို ့ sound effect က တစ္မ်ိဳး ျဖစ္မွာေပါ့။ အေပၚမွာ ျပထားတဲ့ ပံုေတြကိုဘဲ frequency domain ထဲမွာ ျမင္ရတဲ့ ပံုေတြလို ့ သေဘာထားျပီး ေျပာပါမယ္။ တကယ့္ triangular wave ရဲ ့ fourier transform ကေတာ့ ဒီေအာက္မွာ ျပထားတဲ့ ပံုေတြလိုမ်ိဳး မဟုတ္ဘူးေပါ့။ ဒါေပမယ့္ ဥပမာ အေနနဲ ့ ေျပာတာပါ။ ဒီေအာက္က ပံုထဲမွာျပထားတာက frequency scaling ပံုပါ။ pitch shifting လိုလဲေခၚပါတယ္။ မူရင္း အသံရဲ ့ frequency ကို ခ်ဳံ ့/ ခ်ဲ ့ လိုက္တဲ့ အတြက္ မူရင္ အသံေပ်ာက္ျပီး ဥပမာ လူၾကီး အသံကေန ကေလး အသံ လို ျဖစ္သြားတာမ်ိဳး ဒါမွမဟုတ္ ေယာက်ာ္း အသံကေန မိန္းမ အသံ ျဖစ္သြားတာမ်ိဳးေပါ့။ Alvin and the Chipmunks ရုပ္ရွင္ထဲက chipmunks ေလးေတြ အသံက အဲ့ဒီလိုမ်ိဳး pitch shifting လုပ္ျပီး ရထားတာပါ။ Akon ရဲ ့ Lonely MTV သီခ်င္း အစပိုင္းေလးမွာ Lonely…I am so lonely…I have no body… ဆိုျပီး ေညာင္နာနာ ကေလး အသံေလး လိုမ်ိဳးေပါ့။ pitch shifting (frequency scaling) နဲ ့ frequency shifting ကႏွစ္ခုစလံုးက frequency ကို ေျပာင္းတာပါဘဲ။ ဒါေပမယ့္ pitch shifting မွာက signal တစ္ခုလံုး ရဲ ့ frequency ကို (frequency x 2) စေကး နဲ ့ ျပင္တဲ့ အတြက္ သီခ်င္းသံ ရဲ ့ harmony ပ်က္မသြားဘဲ နားေထာင္လို ့ေကာင္းပါတယ္။ frequency shifting က်ေတာ့ ေနာက္ဆံုး က ပံု ထဲမွာလိုမ်ိဳး signal တစ္ခုလံုးရဲ ့ frequency ကို (frequency + 2) ေနရာေရြ ့ လိုက္တဲ့အတြက္ သီခ်င္းရဲ ့ harmony ပ်က္သြားပါတယ္။ တခ်ိဳ ့ သီခ်င္းေတြမွာ instrumental effect တို metallic sound effect တို ့က frequency shifting လုပ္ျပီး ရလာတာေတြပါ။ frequency shifting/scaling ေတြကို keyboard ေတြမွာပါတဲ့ synthesizer ေတြမွာ သံုးတာမ်ားပါတယ္။ ဥပမာ piano အသံကေန flute အသံေျပာင္းတာမ်ိဳး guitar အသံကေန violin အသံေျပာင္းတာမ်ိဳးေပါ့။
http://i92.photobucket.com/albums/l13/nyi1/pitchShift.jpg

AndrewSway
09-20-2010, 02:09 AM
ကိုညီညီ ရွင္းျပေနတာ အရမ္းစိတ္၀င္စားဖို ့ေကာင္းပါတယ္။ ခဏေလးၾကားျဖတ္၀င္ေဖါလိုက္ပါဦးမယ္။

ဒီေအာက္က x(-t) နဲ ့ x[-n] ကေတာ့ time reversal property. သူ ့ အတြက္ ဥပမာ ကေတာ့ လြယ္လြယ္ စဥ္းစားလို ့ မရဘူး။ :) s
အဲဒါကေတာ ့ တိတ္ေခြသို ့ဓါတ္ျပားကိုေျပာင္းျပန္ဖြင္ ့ reverse play လုပ္တာမ်ိဳးနဲ ့တူမယ္ထင္ပါတယ္။ တခါလုပ္တာေတာ ့ၾကားဘူးပါတယ္။ ဘယ္အေခြဘယ္သီခ်င္းဆိုတာမမွတ္မိေတာ ့ပါ။ Newwave အဖြဲ ့က Raymond Htun Wai (အခု Australia) 2 measures ေလာက္ကို တိတ္ေခြကို ေျပာင္းျပန္ တပ္ျပီး guitar solo အသံသြင္းခဲ့ဘူးပါတယ္။

pitch shifting နဲ ့ frequency shifting နဲနဲေလး ေမးပါရေစ။ pitch shifting ကေတာ ့ keyboard ေတြ karaoke machine ေတြမွာပါတဲ ့ Transpose function နဲ ့တူမယ္ထင္ပါတယ္။ frequency shifting က wave form ကို ေျပာင္းတာ ဆိုလိုပါသလား phase ေျပာင္းတာဆိုလိုပါသလား။
metal effect ေတြက phase shift လုပ္ရင္ ရတတ္ပါတယ္။ piano ကေန flute ေျပာင္းဖို ့က waveform ကိုေျပာင္းရပါမယ္။ piano ကမ်ားေသားအားျဖင္ ့pluse-width waveform ျဖစ္ျပီး flute လို woodwind instrument က pulse wave form ျဖစ္ပါတယ္။ ဂစ္တာနဲ ့ တေယာ ၂ ခုလံုးရဲ ့ အေျခခံ waveform က sawtooth ျဖစ္ေလေတာ ့ filter (low pass, high pass and resonance) နဲ ့ wave envelope parameter (attack, decay, sustain, release) တို ့ေျပာင္းလဲေပးျခင္းျဖင္ ့ဂစ္တာ က တေယာသံေျပာင္းလို ့ရပါတယ္။

nyi.nyi
09-20-2010, 08:23 AM
http://i92.photobucket.com/albums/l13/nyi1/phaseshift.jpg
Time reversal effect က ကို Andrew Sway ေျပာသလို ဓါတ္ျပားကို ေျပာင္းျပန္ ျပန္ဖြင့္တာ ျဖစ္မယ္ထင္တယ္။ ကြ်န္ေတာ္ အဲ့ဒါကို မစဥ္းစားမိဘူး။ ကို Andrew Sway ေျပာတာဟုတ္ပါတယ္။ Pitch shifting ဆိုတာ Transpose ေျပာင္းတာ နဲ ့ အတူတူပါဘဲ။ Transpose ေျပာင္းတယ္ဆိုတာ key ေျပာင္းတာဘဲမဟုတ္လား။ ဥပမာ C key ကေန B key ကိုေျပာင္းလိုက္တာျဖစ္တဲ့ အတြက္ သူတို ့ရဲ ့ fundamental (harmonic) frequency ကို အခ်ိဳးလိုက္ လိုက္ေျပာင္းသြားတဲ့ အတြက္ harmony မပ်က္သြားဘူး။ အဲ့ဒီ သေဘာမ်ိဳး လို ့ ထင္ပါတယ္။
Frequency shifting က်ေတာ့ wave form ေျပာင္းသြားတယ္လို ့ ေျပာလို ့ရပါတယ္။ phase ေျပာင္းတယ္ဆိုတာက time domain မွာ ဥပမာ t=pi ေနရာမွာရွိတဲ့ data (amplitude) ကို t=2pi ေနရာကို ေရြ ့လိုက္တာျဖစ္တဲ့ အတြက္ waveform ေျပာင္းမသြားတဲ့ time shifting သက္သက္ သာ ျဖစ္တယ္လို ့ ကြ်န္ေတာ္ ျမင္ပါတယ္။ အေပၚက ပံုထဲမွာျပထားသလို ေပါ့။ frequency shifting က်ေတာ့ နဂို မူလက T=2pi period မွာ 1 cycle ရွိေနတာကို same T=2pi period အတြင္းမွာဘဲ 2 cycles ျဖစ္လာေအာင္ လုပ္လိုက္တဲ့ အတြက္ (frequency domain) frequency ၂ ဆတိုး လာသလို waveform လည္း ေျပာင္းသြားပါတယ္။ (time domain) time scaling သေဘာနဲ ့ အတူတူပါဘဲ။ ဒါေပမယ့္ အေပၚက ပံုမွာ ကြ်န္ေတာ္ စဥ္းစားမိ တဲ့ frequency shift ႏွစ္မ်ိဳး ျပထားပါတယ္။ တစ္မ်ိဳးက ညာဖက္ ကပံု လိုမ်ိဳး frequency ၂ ဆ တိုးသြားတာပါ။ ပံုထဲမွာ ျပထားသလို harmonic ကို ထိန္း ထားတဲ့ အတြက္ သူက waveform ေျပာင္းသြားေပမယ့္ harmony ပ်က္မသြားပါဘူး။ အဲ့ဒါမ်ိဳးကို pitch shifting လို ့ ကြ်န္ေတာ္ ျမင္တာပါ။ frequency ကို ၂ ဆ တိုးလိုက္တယ္ ဆိုကတည္းက frequency scaling လုပ္တယ္လို ့ ေခၚလို ့ရပါတယ္။ ေနာက္ ဘယ္ဖက္ ေအာက္ဆံုး ပံု မွာလိုမ်ိဳး frequency shift လုပ္တာက်ေတာ့ 2pi period အတြင္းမွာဘဲ 2cycles လဲမဟုတ္ 3cycles လဲမဟုတ္ ကိုးလို ့ကန္ ့လန္ ့ နဲ ့ frequency ကို ေျပာင္းထားတဲ့ အတြက္ harmonic ပ်က္သြားပါတယ္။ အဲ့ဒီေတာ့ frequency scaling (pitch shifting) လို ့ေခၚလို ့မရေတာ့ ပါဘူ။ frequency shifting လို ့ဘဲ ေခၚႏိုင္ပါတယ္။
ကို Andrew Sway ေျပာသလို metallic effect ကို phase shifting လုပ္ျပီး ရတယ္ဆိုတာ ျဖစ္ႏိုင္ပါတယ္။ metallic sound ကို အေပၚက ညာဖက္ ေအာက္ဆံုး က ပံုထဲမွာ ျပထားသလိုဘဲ signal တစ္ခုနဲ ့ အဲ့ဒီ signal ရဲ ့ frequency ကို ေျပာင္းျပီး ရလာတဲ့ ေနာက္ signal အသစ္တစ္ခုနဲ ့ ေပါင္းစပ္ျပီး ရလာတာ ျဖစ္တဲ့ အတြက္ သေဘာက frequency ေျပာင္းျပီး harmonic ပ်က္ေနတဲ့ အသံမ်ိဳး ျဖစ္တဲ့ အတြက္ phase scaling လုပ္ျပီး harmonic ပ်က္ေနတဲ့ အသံ နဲ ့ ဆင္တူတယ္လို ့ ယူဆလုိ ့ရတယ္လို ့ ကြ်န္ေတာ္ ထင္ပါတယ္။
Piano သံကေန flute သံေျပာင္းတာမ်ိဳး ဂစ္တာသံကေန violin အသံေျပာင္းတာမ်ိဳး ေတြကို ကို Andrew နားလည္ ရင္ နဲနဲ အေသးစိတ္ေျပာျပေပးပါလား။ ကြ်န္ေတာ္ကိုယ္တိုင္ သူတို ့ဘယ္လို ေျပာင္းတယ္ဆိုတာကို ေကာင္းေကာင္းနားမလည္လို ့ ျပီးေတာ့ keyboard ေတြမွာ piano-flute-guitar-organ-violin စသျဖင့္ အသံ အမ်ိဳးမ်ိဳး ေျပာင္းတာ ဘယ္လို လုပ္သလဲဆိုတာလည္း သိခ်င္လို ့ပါ။ အဲ့ဒီ musical instruments ေတြရဲ ့ frequency range က မတူတဲ့ အတြက္ signal ရဲ ့ frequency range ကို ေရြ ့ ေပးရမယ္လို ့ ယူဆေပမယ့္ ဘယ္လို လုပ္တယ္ဆိုတာကို ေသခ်ာမသိဘူး ျဖစ္ေနတယ္။ ကြ်န္ေတာ့ အျမင္ ကို ေျပာရရင္ အဲ့ဒီ ကိရိယာ ေတြမွာ တပ္တဲ့ ၾကိဳး အရွည္ အရြယ္အစား ေလျပြန္ အရွည္ အရြယ္အစား ကိုလိုက္ျပီး သူတို ့ ရဲ ့ frequency tone လုိက္ေျပာင္းသြားတာျဖစ္တဲ့ အတြက္ ထြက္လာတဲ့ အသံလည္း မတူတာျဖစ္မယ္ လို ့ ယူဆပါတယ္။ လူေတြမွာ တစ္ေယာက္နဲ ့ တစ္ေယာက္ လည္ေခ်ာင္း vocal tract မတူလို ့ မိန္းမ-ေယာက်ာ္း-ကေလး-လူၾကီး အသံ ကြဲျပား သလိုေပါ့။ အဲ့ဒါေၾကာင့္ သူတို ့ရဲ ့ frequency ကို ေျပာင္းျခင္းအားျဖင့္ ကိရိယာ အသံ တစ္ခုကေန ေနာက္ အသံ တစ္ခုကို ေျပာင္းလဲႏိုင္တယ္လို့ ယူဆပါတယ္။ ကို Andrew Sway ေျပာသလို သူတို ့ရဲ ့မတူညီတဲ့ waveform/wave envelope parameter စတာေတြနဲ ့ အဆင့္ဆင့္ ေျပာင္းလဲ ႏိုင္ပံုကိုေတာ့ ကြ်န္ေတာ္ သိခ်င္ပါတယ္။

ကြ်န္ေတာ္ က အေျခခံ သီအိုရီ ေလာက္ဘဲ သိတာဆိုေတာ့ တကယ့္ လက္ေတြ ့မွာ အဲ့ဒီ အသံေတြ ဘယ္လို ရွိတယ္ဆိုတာကို ေသခ်ာမသိဘူး ျဖစ္ေနတယ္။ ကြ်န္ေတာ့ ဆီမွာလဲ အဲ့ဒီလို အသံကို ျပဳျပင္ ေျပာင္းလဲတဲ့ software မရွိေတာ့ သံုးလဲ မသံုးတတ္ေတာ့ :) နမူနာ လက္ေတြ ့ စမ္းၾကည့္လို ့မရဘူးျဖစ္ေနတယ္။ အဲ့ဒါနဲ ့ အင္တာနက္မွာ နမူနာ အသံေတြ လိုက္ရွာရင္နဲ ့ ဒီ site ေလးေတြ ့ပါတယ္။ pitch shifting နဲ ့ frequency shifting အသံ ဘယ္လုိရလာတယ္ဆိုတာေတာ့ အေသးစိတ္ရွင္းျပမထားပါဘူး။ ဒါေပမယ့္ ကြ်န္ေတာ္ လိုခ်င္တဲ့ အသံ နမူနာ ေတြေတာ့ ေတြ ့လို ့ ဒီမွာ တင္ေပးလိုက္ပါတယ္။


http://ifile.it/36vfnhc/PFshift.rar
http://www.mirrorcreator.com/files/DBT46ZFY/PFshift.rar_links
http://www.dspdimension.com/admin/time-pitch-overview/
http://maukkha.org/download/other/PFshift.rar


လမ္းၾကံဳတာနဲ ့ ကြ်န္ေတာ္မွာ ရွိတဲ့ signal processing နဲ ့ ပတ္သတ္တဲ့ ဖတ္စာအုပ္တစ္အုပ္ နဲ ့ တြဲရက္ ပုဒ္စာအေျဖ စာအုပ္ ပါ တင္ေပးလိုက္ပါတယ္။ ေက်ာင္းေတြမွာ သံုးတဲ့ ေအာပန္ဟုိင္ ရဲ ့ ဖတ္စာအုပ္ပါ။ စကား၀ွက္ ကေတာ့ ထံုးစံ အတိုင္း MEF ပါ။ ကို ထက္လင္းေအာင္ နဲ ့ ကို ဖိုးလျပည့္ ေဆာက္ထားတဲ့ library ဆိုတာေတာ့ ေတြ ့လိုက္မိတယ္။ ဘယ္နားမွာမွန္း ရွာလို ့မရတာနဲ ့ ဒီမွာဘဲ လြယ္လြယ္ တင္ေပးလိုက္ပါတယ္။ ေနာက္ရွာလို ့ေတြ ့မွဘဲ library မွာ တစုတစည္းတည္း ျဖစ္ေအာင္ ေျပာင္းတင္ေပးပါ့မယ္။


http://www.mirrorcreator.com/files/0E0H4FA4/OSS2ed.rar_links
http://www.mirrorcreator.com/files/VE2O1D3O/OSS2edSM.rar_links
(or)
http://maukkha.org/download/engineering/electronic/OSS2ed.rar
http://maukkha.org/download/engineering/electronic/OSS2edSM.rar

AndrewSway
09-21-2010, 12:08 PM
စာအုပ္ေတြတင္ေပးတာေက်းဇူးပါ။
ကိုညီညီတင္ထားတဲ ့ phase shift အသံဖိုင္ေလးနားေထာင္ၾကည့္ ေတာ ့ က်ေနာ္အေပၞကေျပာခဲ ့တဲ ့filter section (low pass, high pass and resonance) က high pass filter နဲ ့resoance ကို ကစားရင္ထြက္လာတဲ ့အသံမ်ိုဳးနဲ ့တူပါတယ္။ harmonics ကို interference ျဖစ္ေစတယ္လို ့ေျပာလို ့ရမလားမသိဘူး။
piano flute string guitar အသံေတြဘယ္လို ဖန္တီးတယ္ဆိုတာကိုေတာ ့ software synthesizer တခုနဲ ့ကလိၾကည္ ့ရင္ သေဘာေပါက္လာမယ္ထင္ပါတယ္။ က်ေနာ္လည္း အဆင္ေျပမဲ ့Softsynth လိုက္ရွာေနပါတယ္။ ေတြ ့ရင္တင္ေပးပါမယ္။ အခုေတြ ့တာက Acid တို ့ Cubase တို ့မွာ plugin အေနနဲ ့သံုးတဲ ့VST ေတြဘဲျဖစ္ေနပါတယ္။ ဥပမာတခုေျပာရ ရင္ http://www.youtube.com/watch?v=uaaPTnlw0OE က ၇၀ ေႏွာင္းပိုင္းနဲ ့ ၈၀ ၀န္းက်င္မွာ ေခတ္စားခဲ ့တဲ ့ Roland Jupiter 8 ရဲ ့ software synth အေၾကာင္းပါ။

ဂီတာတူရိယာသံအမ်ိဳးမိ်ဳးဖန္တီး (synthesis) လုပ္တာ ေခတ္နဲ ့အလိုက္ေျပာင္းလဲတိုးတက္လာပါတယ္။ 60, 70 နဲ ့ 80 အေစာပိုင္းမွာ Analog synthesizer ေတြရိွပါတယ္။ အေပၞက Jupiter 8 က analog ထဲမွာ ေနာက္ဆံုးမ်ိဳးဆက္ လို ့ေျပာရင္ရပါတယ္။ ျမန္မာျပည္ ပထမဆံုးေရာက္လာတဲ ့ Yahama SY-1 တို ့ Roland SH-1 1 တို ့Farfisa synthochestra တို ့ကေတာ ့အသံအသင္ ့စပ္ျပီးသား ခလုပ္ခ်ိဳးတီးယံုပါဘဲ။ သည္ ့ေနာက္(၁၉၇၇) ၀င္လာတဲ ့ Yamaha CS-60 Roland SH-11 တို ့ကေတာ ့program လုပ္လို ့ရတဲ ့တကဲ ့analog synthesizer ေတြပါ။ Voltage Controlled Oscillator VCO, Voltage Controlled Filter VCF နဲ ့ Voltage Controlled Amplifier VCA စတဲ ့အေျခခံ synth module ေတြပါတဲ ့keyboard ေတြပါ။ ၇၉-၈၀ ေလာက္မွာေတာ ့Roland Jupiter series (2, 4 နဲ ့8) ျမန္မာျပည္ေရာက္လာပါတယ္။ ဒါေတြကေတာ ့polyphonic analog synth ေတြျဖစ္တဲ ့အျပင္ စပ္ထားတဲ ့အသံေတြကို သိမ္းလို ့ရတဲ ့ memory module ေတြလည္းပါလာပါျပီ။

သည္ ေနာက္ေတာ ့ Digital synth ေခတ္စျပီေျပာရမွာဘဲ။ Roland Juno-2 ကေတာ ့ digital synth ဒါေပမဲ ့ programming အပိုင္းမွာ ၾကည့္ရင္ analog အတိုင္းပါဘဲ။ သည္ ့ေနာက္ ၈၃-၈၄ မွာေတာ ့ roland JX-10, D-50 နဲ ့ Yamaha DX-7, DX-8, DX-10 တို ့ကေတာ ့ တကဲ ့ digital synth အစစ္ေတြလို ့ေျပာရပါမယ္။ အရင္ analog လို ့voltage control မဟုတ္ေတာ ့ဘဲ FM (frequency modulation) tone generator သံုးလာပါတယ္။ carrier wave နဲ ့signal wave ၂ခုကို modulate လုပ္ျပီးလိုအပ္တဲ ့အေျခခံ waveform မ်ားကို generate လုပ္ပါတယ္။

အဲဒီေခတ္က digital synth ကိုၾကည္ ့ရင္ algorithm က အဓိကအားျဖင္ ၂ မ်ိဳးရိွပါတယ္။ Linear arithmetic နဲ ့ Fourier (non-linear) ပါ။ Linear arithmetic သံုးတဲ ့ဥပမာ Roland Juno series and D series ကို LA synth လို ့သမုတ္က်ျပီး Non-linear သံုးတဲ ့ Yamaha DX series ကို ေတာ ့Fourier synth လို ့ေခၞပါတယ္။

၉၀ အေစာပိုင္းမွာေတာ ့waveform synth ေတြေပၞလာပါျပီ။ FM tone generator အစား အေျခခံ waveform ေတြကို တကဲ ့ instrument ေတြက sample ယူထားတာပါ။ ဒါေပမဲ ့ algorithm အပိုင္းမွာေတာ ့ LA နဲ ့Fourier ကြဲတုန္းပါဘဲ။ Roland U series, JV series, Ensoniq ESq series, Korg M series ေတြေပါ ့။ ၉၅ ေနာက္ပိုင္းမွာေတာ ့ synth အားလံုးက Fourier base ျဖစ္သြားပါျပီ။ က်ေနာ္လည္း ၉၅ မတိုင္ခင္က program လုပ္ရတာလြယ္တဲ ့ LA synth ဘဲ တြယ္ကပ္ျပီးသံုးခဲ ့တာ။ အခုေနာက္ပိုင္းက program လုပ္စရာမလို ေလာက္ေအာင္အသံေတြစံုေနပါျပီ။ အသံတူလိုျခင္ရင္ ကိုယ္ ့ဖာသာကိုယ္ sample လုပ္နိုင္တဲ ့sampler module ေတြလည္း keyboard ေတြမွာပါလာပါျပီ။ ဥပမာ- က်ေနာ့မွာရိွတဲ ့ Korg Triiton LE နဲ ့ Yamaha MO6 မွာ sampler capability ပါပါတယ္။ ဒါေၾကာင္ ့လည္း အားလံုး Fourier ျဖစ္ကုန္တာထင္ပါတယ္။ က်ေနာ္ေရးျပသြားတဲ ့သမိုင္းက wiki တို ့ဘာတို ့မွာ ရွာေရးတာမဟုတ္ပါ။ က်ေနာ ့အေတြ ့အၾကံဳအရမွတ္မိသမွ်ေရးထားတာပါ။ ဒါေၾကာင္ ့က်န္ေနတာေတြလည္းရိွမယ္ထင္ပါတယ္။

ကိုညီညီသိခ်င္တဲ ့တူရိယာအမ်ိဳးမိ်ဳးအသံေျပာင္းတာ ဘယ္ generation က synth နဲ ့ပါတ္သက္ျပီးသိခ်င္ပါသလဲ။

zinmaung
08-28-2012, 04:41 PM
၀ီကီ ထဲကေန ေတြ႕ထားတာေလးကုိ ေလ့လာရင္း တင္ျပလုိက္ပါတယ္။

သိပ္နားမလည္တာလည္းပါလုိ႕ပါ။

Analogue/Digital & Discrete Signal ေတြနဲ႕ ပတ္သတ္တာ ရွိရင္ ေဆြးေႏြးေပးေစခ်င္ပါတယ္။

http://www.rlocman.ru/i/Image/2009/07/03/1.png

Picture ထဲမွာျပထားတာကေတာ့ ရွင္းသလုိလုိပါပဲ။ သလုိလို ျဖစ္ေနလုိ႕ပါ။

ဘယ္လုိ State ကုိ Discrete Signal လုိ႕ ေခၚမလဲလို႕ေပါ့.....။

wlk3649
04-06-2013, 11:42 AM
ကိုညီညီခင္ဗ်ာ...အရမ္းေကာင္းမြန္ျပီး အရမ္းအဖိုးတန္တဲ့ ေဆြးေႏြးခ်က္ေတြကို ဆက္လက္တင္ေပးၾကပါဦးလို႔ forum ညီအစ္ကိုေမာင္ႏွမအားလံုးကို ႏိႈးေဆာ္အပ္ပါတယ္ဗ်ာ

sawkyiiphyu
06-02-2013, 11:21 AM
အင္း အီလက္ထေရာနစ္သမားေတြ ခက္ခဲေစတဲ့ေမးခြန္းေတြလုိထင္ေစသလုိ လြယ္ကူေနသလုိလဲခံစားရပါတယ္.....အားလုံးလဲ ဇင္ေမာင္ေျပာသလုိ သုိေလာသုိေလာ ျဖစ္ေနမယ္လုိထင္ပါတယ္...... discrete signal ကုိ နားလည္တာကေတာ့ အခ်ိန္အမ်ိဳးမ်ဳိးအတြင္းမွာ တုိင္းတာလုိရတဲ့ တန္ဖုိးတစ္ခုလိုထင္ပါတယ္.....(ဥပမာဗ်ာ က်ေနာ္တုိ႔ အသုံးျပဳတဲ့ freq တုိင္းတာတဲ့ကိရိယာေတြမွာ မိမိတုိင္းတာလုိတဲ့အခ်ိန္ကုိ ေပးၿပီး အဲဒီအခ်ိန္အတြင္းမွာရွိတဲ့ ဆားကစ္ရဲ႔ freq ကုိ တုိင္းတာလုိရတာမ်ိဳးေပါ့...) အခု discrete ကေတာ့ မိမိဘာသာ အခ်ိန္ေတြကုိ သတ္မွတ္ေပးထားၿပီး အဲဒီအခ်ိန္မွာရွိတဲ့ တန္ဖုိးကုိတုိင္းတာျခင္းျဖစ္ပါတယ္....Digital signal ကေတာ့ time တစ္ခုအတြင္းမွာ တန္းဖုိးကေတာ့ high and low value ႏွစ္မ်ဳိးတည္းပဲရွိပါတယ္.....အေပၚမွာေျပာတဲ့အတုိင္းပဲ ဘယ္လုိ state ကုိ Discrete signal လုိ ေခၚမလဲဆုိေတာ့ ေအာက္ဆုံးပုံႏွစ္ခုစလုံးကုိ Discrete signal လုိေခၚသည္ေပါ့ ကုိဇင္ေမာင္ေရ...... မိမိဖတ္ၿပီးနားလည္သလုိ ရွင္းျပျခင္းျဖစ္ပါတယ္.......

ေအ၇ာ
06-03-2013, 08:43 AM
၀ီကီ ထဲကေန ေတြ႕ထားတာေလးကုိ ေလ့လာရင္း တင္ျပလုိက္ပါတယ္။

သိပ္နားမလည္တာလည္းပါလုိ႕ပါ။

Analogue/Digital & Discrete Signal ေတြနဲ႕ ပတ္သတ္တာ ရွိရင္ ေဆြးေႏြးေပးေစခ်င္ပါတယ္။

http://www.rlocman.ru/i/Image/2009/07/03/1.png

Picture ထဲမွာျပထားတာကေတာ့ ရွင္းသလုိလုိပါပဲ။ သလုိလို ျဖစ္ေနလုိ႕ပါ။

ဘယ္လုိ State ကုိ Discrete Signal လုိ႕ ေခၚမလဲလို႕ေပါ့.....။
ကိုဇင္ေမာင္ေရ
ၿခံဳငံုၿပီး အၾကမ္းဖ်ဥ္းေလ့လာတာက ပိုသေဘာေပါက္ဖို႕လြယ္ေစမယ္လို႕ထင္ပါတယ္။
Discrete data ဆိုတာမ်ဳိးက အေရအတြက္တန္ဖိုးတိတိက်က်ကို သိသာထင္ျမင္ မွတ္တမ္းတင္ႏိုင္တာမ်ဳိးေတြျဖစ္ပါတယ္။ Discrete signal ဆိုေတာ့လည္း အဲဒီလို တိက်တဲ့ အခ်က္အလက္မ်ား ေပးေနတဲ့ Signal အမ်ဳိးအစားလို႕ပဲမွတ္ယူႏိုင္ပါတယ္။
ဥပမာေျပာရလွ်င္ ေခတ္မီနည္းစနစ္ေတြ သံုးၿပီး အခေၾကးေငြေကာက္ခံတဲ့ ကားပတ္ကင္စနစ္တစ္ခုကို စဥ္းစားၾကည့္ပါ။
၁) ေစာင့္ၾကည့္ေနတဲ့ စနစ္အတြင္းမွာ ေရာက္ရွိေနတဲ့ ကားအေရအတြက္ကိန္းဂဏန္းဟာ Discrete data အမ်ဳိးအစားျဖစ္ပါတယ္။
၂) အဲဒီအထဲက ကားတစ္စင္း ပါကင္အတြင္းေရာက္ရွိေနတဲ့အခ်ိန္ကာလကိုစဥ္းစားလွ်င္ တိၾကျပတ္သားဖို႕နည္းနည္းခက္ခဲသြားပါတယ္။ စတင္၀င္ေရာက္ခ်ိန္ကို လည္း စနစ္က မွတ္သားတယ္၊ ျပန္ထြက္ခ်ိန္ကိုလည္းစနစ္က မွတ္သားတယ္၊ အဲဒီေတာ့ တြက္ခ်က္မႈအဆင့္ၿပီးလွ်င္ တိက်တဲ့အခ်ိန္ရၿပီမဟုတ္လားလို႕ အလြယ္ေတြးႏိုင္ပါတယ္။ (ဒါေပမယ့္ စနစ္က အခ်ိန္ကို အေသးစိတ္လိုက္ယူတယ္ဆိုေတာင္ တစ္စကၠန္႕ရဲ႕ အပံုတစ္ရာပံုပံုလွ်င္ တစ္ပံုတန္ဘိုးကဲြလဲြမႈေလာက္အထိ သူတို႕လိုက္မမွတ္ၾကပါဘူး။) အဲဒီေတာ့ ေဒတာအျဖစ္မွတ္ယူသြားတဲ့ အခ်ိန္တန္ဘိုးဟာ ပကတိအခ်ိန္တန္ဘိုးနဲ႕ အလြန္ေသးငယ္တဲ့ပမာဏတစ္ခုအထိ အၿမဲလိုလိုလဲြေနႏိုင္ပါတယ္။ (အလြယ္ေျပာရလွ်င္ ကားကိုေရတြက္တာေလာက္ေတာ့ မတိက်ဘူးဆိုရပါမယ္။)
၃) အခ်ိန္ကို ပကတိအေနအထားအထိ အရမ္းႀကီးတိက်ေအာင္ မမွတ္သားႏိုင္ေပမယ္လို႕ ေငြေကာက္ခံေတာ့ နာရီ၀က္အပိုင္းအျခားကာလကို ဘယ္ေလာက္၊ တစ္နာရီဆိုဘယ္ေလာက္ႏႈန္း စတာမ်ဳိးေတြနဲ႕ ေကာက္ခံတတ္ၾကပါတယ္။ (ကားနံပတ္ကို မွတ္ပံုတင္ထားရွိခဲ့လွ်င္) ကားႀကီးကားေသး၊ အသင္း၀င္အဆင့္စတာေတြအေပၚမွာမူတည္ၿပီး ေလွ်ာ့ေစ်းေပးတာ၊ အေစာပိုင္းကာလတစ္ခုကို အခမဲ့သံုးခြင့္ျပဳတာမ်ဳိး ရွိတတ္ေပမယ့္ စုစုေပါင္းက်သင့္ေငြတြက္ဖို႕ၾကေတာ့ အပိုင္းအျခားယူနစ္ေပါင္း ဘယ္ေရြ႕ဘယ္မွ်ၾကာခဲ့တယ္ကိုပဲ ေရတြက္ကာ တြက္ခ်က္ရတာျဖစ္ပါတယ္။
အဲဒီ ယူနစ္ပမာဏေတြဟာ အခ်ိန္တန္ဖိုးလို နာရီ မိနစ္ စကၠန္႕ေတြ အထိတိတိက်က် မယူေတာ့ပဲ တစ္ယူနစ္ေက်ာ္တာနဲ႕ ႏွစ္ယူနစ္ဖိုးေကာက္မွာျဖစ္လို႕ ဒစ္ဂ်စ္တယ္တန္ဖိုးေတြလို႕ ေျပာလို႕ရပါတယ္။
ဒီအေျခခံသေဘာကို လက္ခံသေဘာေပါက္လွ်င္ အထက္ကပံုေတြကို တစ္ဖန္ျပန္ေလ့လာၾကည့္ၾကရေအာင္ပါ။

ပံုေတြက ျဖစ္ကတတ္ဆန္း ဆဲြထားရာေရာက္ၿပီး လိုအပ္ခ်က္ မျပည့္စံုပါဘူး။
ဒါေပမယ့္ အလ်ားလိုက္ ညာဖက္ကို ေရြ႕သြားလွ်င္ အခ်ိန္ပိုပို ၾကာျမင့္လာတာလို႕ထင္ပါတယ္။

၁) ပထမဆံုးပံုမွာ အခ်ိန္ၾကာလွ်င္ အျမင့္ေျပာင္းတာေတာ့ သိႏိုင္ၿပီး အခ်ိန္ကိုလည္း သတ္သတ္မွတ္မွတ္ မဆံုးျဖတ္ႏိုင္သလို အျမင့္တန္ဘိုးကလည္း ကိန္းျပည့္မရႏိုင္ပဲ ဆယ္လီစိတ္၊ ရာလီစိတ္ ကိန္းေတြအျဖစ္ အနိမ့္ဆံုးနဲ႕ အျမင့္ဆံုးတန္ဘိုးအၾကား အၿမဲ (အဆက္မျပတ္)ေျပာင္းလဲရေနမွာပါ။
၂) ဒုတိယပံုက အခ်ိန္ဘယ္ေလာက္အၾကာမွာ တစ္ခါ အျမင့္ကို ဖတ္ယူမွတ္သားမယ္ဆိုတဲ့သေဘာပါ။ အျမင့္ဖတ္ရာမွာ အတတ္ႏိုင္ဆံုးေတာ့ နီးစပ္မွန္ကန္ေအာင္ဖတ္ယူပါတယ္။
၃) တတိယပံုက်ေတာ့ အျမင့္ကို ယူနစ္ဘယ္ေလာက္ ျပည့္မီသလဲပဲ ေရတြက္ပါတယ္။ အတိအက်မဖတ္ေတာ့ပါဘူး။ (ျမင္လြယ္မည့္ ဥပမာတစ္ခုေပးရလွ်င္ ေရသန္႕ဘူးထုတ္လုပ္တဲ့ ၂၄နာရီလည္ပတ္တဲ့စက္ရံုတစ္ခုက ေလးနာရီျပည့္တိုင္း ေရသန္႕ ပါကင္ပံုး ဘယ္ေလာက္ ထုပ္ပိုးထုတ္လုပ္ၿပီးစီးခဲ့သလဲ မွတ္တမ္းေကာက္ယူ စာရင္းသြင္းတယ္ဆိုပါေတာ့။ ထုပ္ပိုးမၿပီးေသးတဲ့ လုပ္လက္စ ပါကင္ပံုးေတြဟာ စာရင္းထဲ၀င္မသြားပါဘူး။) စာရင္းထဲ၀င္သြားႏိုင္တဲ့ အဲဒီအေရအတြက္ဟာ ဒစ္ဂ်စ္တယ္ဆစ္ဂနယ္တစ္ခုပဲျဖစ္ပါတယ္ရွင္။

ေလးစားစြာျဖင့္
ေအ၇ာေမ