20-3 ���T������

¤@¥¹§Ú­Ì¥i¥HŪ¤J­µ°TÀɮסA´N¥i¥H¹ïÁn­µ°T¸¹¶i¦æ¦UºØ³B²z¡A¨Ò¦p¼W¤j©Î´î¤p­µ¶q¡B´£°ª©Î­°§C­µ°ª¡B®ø°£Âø°Tµ¥¡C­n½T»{³B²z«áªºÁn­µ°T¸¹¬O§_²Å¦X©Ò»Ý¡A´N­n¯à°÷§â­µ°Tª½±µ³z¹L³s¨ì¹q¸£ªº³â¥z¼½©ñ¥X¨Ó¡A¥»¸`´N¬O­n¤¶²Ð¦p¦ó¨Ï¥Î MATLAB ¨Ó¶i¦æ­µ°Tªº¼½©ñ¡C

Hint
¥t¤@­Ó¼½©ñ­µ°Tªº¤èªk¡A¬O±N­µ°T¸ê®Æ¥ý¼g¤J­µ°TÀɮס]½Ð¨£¥»³¹¨ä«á»¡©ú¡^¡A¦A¥Î¹q¸£ªº¼½©ñµ{¦¡¡]¦p·L³nªº¿ý­µ¾÷¡BWindow Media Player µ¥¡^¨Ó¼½©ñ¡A¦ý³o¼ËÁ`¬O¦h¤F¤@¹D¤âÄò¡A¤ñ¸û³Â·Ð¡C

¦b«e¤@¸`¤¤¡A§Ú­Ì¤w¸gª¾¹D¦p¦óŪ­µ°TÀɮסA¤@¥¹ MATLAB Ū¤J­µ°T¸ê®Æ¡A¨Ã±N¤§³]©w¦¨¤u§@ªÅ¶¡¤¤ªºÅܼƫá¡A§Ú­Ì´N¥i¥H¨Ï¥Î sound «ü¥O¨Óª½±µ¼½©ñ¦¹ÅܼơC¨Ò¦p¡G

Example 1: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/audioPlay01.mload handel.mat % ¸ü¤JÀx¦s©ó handel.mat ªºÅÜ¼Æ sound(y, Fs); % ¼½©ñ¦¹­µ°T

¦b¤W¨Ò¤¤¡AÁn­µ°T¸¹ y ©M ¨ú¼ËÀW²v Fs ³£¨Æ¥ýÀx¦s¦b handel.mat Àɮפ¤¡A¤@¥¹¸ü¤J«á¡A´N¥i¥H¨Ï¥Î sound «ü¥O¨Ó¼½©ñ¡C

Hint
¤W­z½d¨Ò©Ò¼½©ñªº­µ¼Ö¡A¬OÁú¼wº¸ªº¯«¼@¡mÀ±ÁɨȡnHallelujah¡A§¹¾ãª©¥»½Ð¥Ñ¦¹¸ÕÅ¥¡G¡uhttps://www.youtube.com/watch?v=URxQby3HtWY¡v¡C

§Ú­Ì¤]¥i¥H¦P®É¼½©ñ¨âºØ­µ°T¡A¦p¤U¡G

Example 2: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/audioPlay02.m[y, fs]=audioread('welcome.wav'); % ¸ü¤J­µ°T sound(5*y, fs); % ¼½©ñ­µ°T load handel.mat % ¸ü¤J­µ°T sound(y, Fs); % ¼½©ñ­µ°T

³o®É­Ô§Úªº¡uÅwªï¥úÁ{¡v©MÁú¼wº¸ªº¡u«¢§Q¸ô¨È¡v´N·|³Q¦P®É¼½©ñ¥X¨Ó¡A³oºØ¼½©ñ¤è¦¡ºÙ¬°«D¦P¨B¡]asynchronous¡^¡A¦]¬° MATLAB ¨Ã¤£·|µ¥«Ý¼½©ñ§¹²¦¤~°õ¦æ¤U¤@­Ó«ü¥O¡A¦Ó¬O±N­µ°T°e©¹­µ®Ä¥d¼½©ñ«á¡A¥ß§Y«D¦P¨B¦a°õ¦æ¤U¤@­Ó«ü¥O¡C

­Y­nÅý MATLAB ¦b¼½©ñ­µ°T®É¡A¥ý°±¤î¨ä¥L°Ê§@¡Aª½¨ì­µ°T¼½©ñ§¹²¦«á¡A¤~·|¦A¶i¦æ¨ä¥L«ü¥Oªº¹Bºâ¡A³oºØ¤è¦¡ºÙ¬°¦P¨B¡]synchronous¡^¼½©ñ¡C±ý±Ä¥Î¦¹¼½©ñ¤è¦¡¡A§Ú­Ì¥²¶·¨Ï¥Î¸û½ÆÂøªº audioplayer¡Bplay ¤Î playblocking «ü¥O¡C§Ú­Ì¥ý¬Ý¬Ý¤@­Ó²³æªº³æ¤@­µ°T¼½©ñ½d¨Ò¡G

Example 3: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/audioPlay03.mload handel.mat % ¸ü¤J­µ°T p=audioplayer(y, Fs); % ²£¥Í¼½©ñª«¥ó play(p); % ¼½©ñ­µ°T

¦b¤W­z½d¨Ò¤¤¡A§Ú­Ì¨Ï¥Î audioplayer ²£¥Í¤@­Ó­µ°T¼½©ñª«¥ó p¡AµM«á¦A¨Ï¥Î play «ü¥O¨Ó¼½©ñ³o­Óª«¥ó¡C

­Y­n´`§Ç¼½©ñ¨â­Ó­µ°T¡A¥H¹F¦¨¦P¨B¼½©ñ¡A¥i¨£¤U¦C½d¨Ò¡G

Example 4: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/audioPlay04.m[y, fs]=audioread('welcome.wav'); % Ū¤J­µ°T p=audioplayer(y, fs); playblocking(p); % ¼½©ñ­µ°T load handel.mat % ¸ü¤J­µ°T p=audioplayer(y, Fs); playblocking(p); % ¼½©ñ­µ°T

¦b¤W­z½d¨Ò¤¤¡A§Ú­Ì¨Ï¥Î¤F playblocking «ü¥O¨Ó¹F¦¨¦P¨B´`§Ç¼½©ñªº®ÄªG¡C

¤U¤@­Ó½d¨Ò¡A§A·|Å¥¨ì¤@­Ó¦P¨B¼½©ñªºÁn­µ¡AµM«á¦A¦P®ÉÅ¥¨ì¨â­Ó«D¦P¨B¼½©ñªºÁn­µ¡G

Example 5: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/playSync01.m[y, fs]=audioread('welcome.wav'); p=audioplayer(y, fs); playblocking(p); % ¦P¨B¼½©ñ 1.0 ­¿³t«×ªº­µ°T sound(y, 0.8*fs); % «D¦P¨B¼½©ñ 0.8 ­¿³t«×ªº­µ°T sound(y, 0.6*fs); % «D¦P¨B¼½©ñ 0.6 ­¿³t«×ªº­µ°T

§Ú­Ì¦b²Ä¤@¸`´£¨ì¹L¡AÁn­µªº­µ¶q¬O¥ÑÁnªiªº¾_´T¨Ó¨M©w¡A¦]¦¹§Ú­Ì¥iÂǥѾ_´Tªº¤j¤p¨Ó§ïÅÜ­µ¶q¡A¨Ò¦p¡G

Example 6: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/playVolume01.m[y, fs]=audioread('welcome.wav'); p=audioplayer(1*y, fs); playblocking(p); % ¼½©ñ 1 ­¿¾_´Tªº­µ°T p=audioplayer(3*y, fs); playblocking(p); % ¼½©ñ 3 ­¿¾_´Tªº­µ°T p=audioplayer(5*y, fs); playblocking(p); % ¼½©ñ 5 ­¿¾_´Tªº­µ°T

¦b¤W¨Ò¤¤¡A§Ú­Ì³v¦¸¼W¥[¾_´T¡A¦]¦¹¼½©ñ¥X¨Óªº­µ¶q´N·|¶V¨Ó¶V¤j¡C­n¯S§Oª`·Nªº¬O¡Gaudioplayer °²³] y ªº­È¬O¤¶©ó ¡V1 ©M 1 ¤§¶¡¡A¶W¹L³o­Ó½d³òªº¼Æ­È¡A¨ä¶W¹L³¡¤À·|³QºI°£«á¦A¼½©ñ¡A³o®É­Ô´N·|¥X²{¡u¯}­µ¡vªº²{¶H¡AŪªÌ¥i¥H°õ¦æ¡up=audioplayer(5*y, fs); playblocking(p);¡v¨Ó¸Õ¸Õ¬Ý¡C

Hint
¦b¤W¤@­Ó½d¨Ò¤¤¡AÁöµM§Ú­Ì§â¾_´T¥[¤j5­¿¡A¦ý¬O¦Õ¦·©ÒÅ¥¨ìªº­µ¶q¡A¨Ã¨S¦³·Pı¥[¤j5­¿¡A³o¤]»¡©ú¤F¤H¦Õ¹ï©ó­µ¶qªº·Pı¨Ã¤£¬O©M­µªi®¶´T¦¨¥¿¤ñ¡A¦Ó¬O©M®¶´Tªº¹ï¼Æ¦¨¥¿¤ñ¡C

¦pªG¦b¼½©ñ®É¡A§ïÅܨú¼ËÀW²v¡A´N·|§ïÅܾã­Ó­µ°Tªº®É¶¡ªø«×¡A¶i¦Ó¼vÅT¨ì­µ°ª¡C¦b¤U¨Ò¤¤¡A§Ú­Ìº¥º¥´£°ª¼½©ñ®Éªº¨ú¼ËÀW²v¡AÅ¥¨ìªºÁn­µ´N·|¶V¨Ó¶V§Ö¡B¶V¨Ó¶V°ª¡A³Ì«á¥X²{¹³­ð¦ÑÀnªºÁn­µ¡G

Example 7: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/playFs01.m[y, fs]=audioread('welcome.wav'); p=audioplayer(y, fs); p.SampleRate=1.0*fs; playblocking(p); % ¼½©ñ 1.0 ­¿³t«×ªº­µ°T p.SampleRate=1.2*fs; playblocking(p); % ¼½©ñ 1.2 ­¿³t«×ªº­µ°T p.SampleRate=1.5*fs; playblocking(p); % ¼½©ñ 1.5 ­¿³t«×ªº­µ°T p.SampleRate=2.0*fs; playblocking(p); % ¼½©ñ 2.0 ­¿³t«×ªº­µ°T

¤Ï¤§¡A¦pªGº¥º¥­°§C¼½©ñªºÀW²v¡AÅ¥¨ìªºÁn­µ´N·|¶V¨Ó¶VºC¡B¶V¨Ó¶V§C¡A³Ì«á¥X²{¹³¤û¥sªºÁn­µ¡G

Example 8: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/playFs02.m[y, fs]=audioread('welcome.wav'); p=audioplayer(y, fs); p.SampleRate=1.0*fs; playblocking(p); % ¼½©ñ 1.0 ­¿³t«×ªº­µ°T p.SampleRate=0.9*fs; playblocking(p); % ¼½©ñ 0.9 ­¿³t«×ªº­µ°T p.SampleRate=0.8*fs; playblocking(p); % ¼½©ñ 0.8 ­¿³t«×ªº­µ°T p.SampleRate=0.6*fs; playblocking(p); % ¼½©ñ 0.6 ­¿³t«×ªº­µ°T

Hint
­Y­nºû«ù­µªø¦ý½Õ¾ã­µ°ª¡A©Î¬Oºû«ù­µ°ª¦ý½Õ¾ã­µªø¡A¨º´N­n¹ï»y­µªi§Î¶i¦æ¸û½ÆÂøªº³B²z¡A¥Ñ©ó½g´T¦³­­¡A¦b¦¹²¤¹L¡C

¦pªG§Ú­Ì±NÁnªi°T¸¹¤W¤UÄA­Ë¡AÅ¥¨ìªºÁn­µ°ò¥»¤W¬O¤@¼Ëªº¡A¦ý¬O¦pªG«e«áÄA­Ë¡AÅ¥¨ìªºÁn­µ´N¦p¦P¿ý­µ±a¡u­Ë©ñ¡vªºÁn­µ¡AÅ¥°_¨Ó«Ü¹³¬O¬YºØ¥~°ê»y­µ¡A½Ð¸Õ¸Õ¤U¦C½d¨Ò¡G

Example 9: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/playReverse01.m[y, fs]=audioread('welcome.wav'); p=audioplayer(y, fs); playblocking(p); % ¼½©ñ¥¿±`ªº­µ°Tªi§Î p=audioplayer(-y, fs); playblocking(p); % ¼½©ñ¤W¤UÄA­Ëªº­µ°Tªi§Î p=audioplayer(flipud(y), fs); playblocking(p); % ¼½©ñ«e«áÄA­Ëªº­µ°Tªi§Î

Hint
§A¯à¥Ñ¡u­Ë©ñ¡vªºÁn­µ±oª¾­ì¨Ó¥¿±`¼½©ñªºÁn­µ¤º®e¶Ü¡H¸Õ¬Ý¬Ý¡u­Ë©ñ¤@¡v¤Î¡u­Ë©ñ¤G¡v¡I

¦b¶i¦æ­µ°T¼½©ñ®É¡A­µ°TÅÜ¼Æ y ªº¸ê®Æ«¬ºA¥i¥H¬O¤U¦C´XºØ¡G double¡Bsingle¡Bint16¡Buint8¡C¦pªGÅÜ¼Æ y ¬O double ªº¸ê®Æ«¬ºA¡A¨ä­È´N¥²¶·¤¶©ó ¡V1 ©M 1 ¤§¶¡¡A§_«h¶W¹L³¡¤À´N·|³QºI±¼¡C¡]y ªº¸ê®Æ«¬ºA³q±`³£¬O double¡A¦Ü©ó¨ä¥L«¬ºAªº¸ê®Æ¡A¤j³¡¤À¬O°t¦X¿ý­µ«ü¥OÀ³¹B¦Ó¥Í¡A¦³Ãö¦¹²Ó¸`¡A¥i°Ñ¦Ò¥»³¹¨ä«á¹ï©ó¿ý­µ«ü¥O audiorecorder ªº¤¶²Ð¡C¡^

¥t¤@­ÓÃþ¦üªº«ü¥O¬O soundsc¡A¦¹«ü¥O¥i°w¹ï­µ°TÅܼƪº¼Æ­È¥ý¶i¦æ¥¿³W¤Æ¡]¤¶©ó ¡V1 ©M 1 ¤¤¶¡¡^«á¡A¦A°e¨ì³â¥z¼½©ñ¡A¥H¹F¨ì³Ì¦nªº¼½©ñ®ÄªG¡C¨Ò¦p¡G

Example 10: 20-­µ°TŪ¼g¡B¿ý»s»P¼½©ñ/soundsc01.m[y, fs]=audioread('welcome.wav'); p=audioplayer(y, fs); playblocking(p); soundsc(y, fs);

¦b¤W¨Ò¤¤¡A§Ú­Ì·|¥ýÅ¥¨ì­ìª©ªº¡uÅwªï¥úÁ{¡v¡A¦ý¥Ñ©ó·íªì¿ý­µ®ÄªG¤£¨Î¡A©Ò¥H­µ¶q°¾¤p¡C§ï¥Î soundsc ¤§«á¡A²Ä¤G­Ó¡uÅwªï¥úÁ{¡vªºÁn­µ´N¤j¦h¤F¡A¤]²M·¡¦h¤F¡C

Hint
¦b¼v¹³Åã¥Ü¤è­±¡A¹ïÀ³ªº©R¥O¬O imagesc¡C


MATLABµ{¦¡³]­p¡G¤Jªù½g