تبلیغات
" /> باران الکترونیک - مطالب ابر صدا در DSP
یکشنبه 18 بهمن 1394  01:03 ق.ظ
نوع مطلب: (DSP ،برنامه نوسی C ،) توسط: امیرحسین رستمی

هدف از این مقاله تبدیل یک کد ‏floating-poing‏ به ‏fixed-point‏ و مقایسه این دو کد از نظر زمان اجرا ‏می باشد. برای این منظور از کد تولید صدای ناقوس در ‏MATLAB‏ استفاده شد و آن را در پردازنده ‏DSP‏ به ‏شماره قطعه ‏TMS320C5509A‏ پیاده سازی کردیم.‏
می توانید صدای نهایی را از لینک زیر دریافت کنید:
پیاده سازی پروژه نهایی روی پردازنده  DSP در ویدیوی زیر نشان داده شده است:
 
[http://www.aparat.com/v/dsigR]

صوت دیجیتال
 
از کاربردهای صوت دیجیتال می توان به تولید صدا و افکت گذاری روی صدا اشاره کرد. برای تولید صدا به صورت دیجیتال ‏روش های زیادی وجود دارد که عبارتند از:‏
  • مدولاسیون فرکانسی (‏Frequency Modulation‏)‏
                     در این روش از یک موج فرکانسی پیچیده برای تولید صدا به کار می رود‎.‎‏ فرمول کلی به صورت زیر می باشد:‏
    sound = A sin(αt+Isin(βt))‎
 
  • جدول موج ‏Wavetable synthesis
             در این روش صدا از نمونه برداری صدای دستگاه های موسیقی ساخته می شود.‏
 
  • افزایشی ‏Additive synthesis
            در این روش صدا نهایی از ترکیب صداهای ساده تر و کوتاه تر ساخته می¬شود.‏
 
  • کاهشی ‏Subtractive synthesis
              در این روش از یک شکل موج پیچیده (مانند دندان اره ای) به عنوان ورودی استفاده می شود سپس با فیلتر کردن سعی در ‏تولید صدای نهایی می شود.‏
 
  • دانه ای ‏Granular Synthesis
             در این روش از قطعات کوتاه برای ساخت صدای جدید استفاده می شود.‏
 
  • مدل فیزیکی ‏Physical Modelling
             در این روش صدای تولید شده از دستگاه با مدل کردن شکل دستگاه و پیدا کردن معادله موج (ریاضیات مهندسی) ساخته ‏می شود.‏
 
  • مبتنی بر نمونه ‏Sample-based synthesis
             در این روش از ذخیره و بازپخش صدای ضبط شده استفاده می شود. معمولا صدای ضبط شده کوتاه است و همراه با پردازش ‏صوت می باشد.‏

تولید صدا زنگ ناقوس با استفاده از روش ‏FM
 
کد متلب
 
کد ‏MATLAB‏ برای تولید صدای زنگ به صورت زیر می باشد:‏

% bell.m

%

% A Matlab script to compute a bell-like sound using frequency modulation.

%

% by Gary Scavone, McGill University, 2004.

  

% Signal parameters

fs = 22050;

T = 1/fs;

dur = 4.0;

t = 0:T:dur;

T60 = 1.0;

env = 0.95*exp(-t/T60);

  

% FM parameters

fc = 200;

fm = 280;

Imax = 10;

I = Imax.*env;

  

y = env.*sin(2*pi*fc*t + I.*sin(2*pi*fm*t));

plot(t, y);

 

sound(y, fs);


wavwrite(y,fs,16,'sound_bell_float')

% dospectrum = input('\nPlot spectrum? Y/[N]:\n\n', 's');

 

% if dospectrum == 'y',

  specgram(y, 512, fs, [], 256)

% end


با اجرای این کد صدای زیبای زنگ ناقوس از کامپیوتر پخش می شود. نکته باحالی که در این جا وجود ‏دارد این است که با استفاده از دو تابع دبیرستانی سینوس و نمایی این صدای پیچیده تولید می شود. نمودار ‏صدا در حوزه زمان در شکل زیر نشان داده شده است.‏

صدای ناقوس در حوزه زمان


آخرین پست ها