BEEP and Sound 授課:ANT 日期:2014/5/28.

Slides:



Advertisements
Similar presentations
苏少版《音乐》教材分析与 教学研究 江苏省中小学教研室 戴海云. 提 纲 第一部分 《音乐》教材分析 编写思路 主要特点 第二部分. 《音乐》教学实验与研究 教学研究 案例分析.
Advertisements

數學社群 教學分享 和平國小 陳淑渟老師 數學社群 教學分享 和平國小 陳淑渟老師. 小一常發生的 學習困難 定位板的應用 序數的學習 困難與教學 突破 主題大綱.
While 迴圈 - 不知重複執行次數
健康.安全年 製作 : 黃靜怡. 安全第一,我想,這是一句大家都耳熟能詳的話吧,說安全, 簡單的說,就是注意自己、眼睛要看、耳朵要聽,不要莽莽 撞撞的,安全是大家所期望的,而父母總是常常掛念我們, 就是希望我們能安全,畢竟,孩子是父母一輩子的牽掛,會 擔心我們的,往往就是關心我們的人,每個人都希望自己做.
【大願文教基金會】園藝治療師 黃盛璘督導、王麗玲執行. 年齡在 2 足歲以上 18 歲以下,經醫學中 心或區域醫 院鑑定為 重度、極重度 身心障礙,不具行動能 力、且不能自理生活,並持有身心障礙 手冊的新北市居民。 八里愛心教養院~服務對象.
第二十九课 致儿子书 张之洞.
如何陪伴孩子度過 高三歲月.
把人的生命写在教育的旗帜上 了解一个案件 欣赏一篇散文 学习一种理念 感悟一个故事.
中國音樂史.
六大原因造成 現代人身體酸性化.
【2008年高考重庆卷】A.当冰雪皑皑之际,唯独梅花昂然绽放于枝头,对生命充满希望和自信,教人精神为之一振。
景区讲解常用方法.
課程名稱:多變的聲音 編授教師: 中興國中 楊秉鈞.
第1单元 操作系统概论 第一节 绪论 操作系统定义.
我在哈佛、麥肯錫 學到的一流工作術 富坂美織◎著.
广告文案作业三 黄佩.
民间器乐 第五章.
Loops.
校內科學園遊會 製作說明會 教務處設備組
物流账册系统介绍 2012年5月16日 北京.
手巾比紙巾環保 但不衛生.
AI人工智慧報告 黑白棋 班級:資工四乙 學號:498G0009 姓名:盧冠妤.
指導教授:古錦松 分享同學: 蔡斗溍、陳姿云 陳俊仰、陳國睿(助教)
“国培计划(2012)”—幼儿园骨干教师远程培目
第2课 共享网络资源.
產品調查科~ 包裝紙巾大搜查 第3组 馮鎧洳 鄧穎怡 組長*香凱文 周庭欣 詹卓穎.
孔子傳第三集: 興辦私學-禮學之美 生命教育工作坊.
國三第五課 亞洲音樂漫遊.
微博: weibo.com/zhnitj QQ:
做阳光的 职业教育教师 ——与曲靖农校教师共勉 心理咨询师 梁 永 红 2014年10月11日.
第二十九章 DLL / LIB函式庫開發 當我們開發程式到一個階段之後,我們一定會希望各個Component的程式碼可以分開的越清楚越好。而這一章最主要就是要告訴各位讀者,我們常在Windows系統中看到的dll或是lib的檔案該怎麼實作?做出這樣的library我們又該如何運用?為什麼使用dll或是lib有利於我們開發程式?以上這些疑問都將會在這一章中得到解答。
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
核探测与核电子学国家重点实验室 报告人:董磊 指导老师:宋克柱
走近Lua ——嵌入式脚本在项目中的应用.
如何在VC环境下 安装开发包 ----以EasyX举例.
第4讲 Windows编程基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
STRUCTURE 授課:ANT 日期:2010/5/12.
BEEP and Sound 授課:ANT 日期:2010/5/26.
第十一讲 MFC常用控件的使用(3) 严宣辉 数学与计算机科学学院
第十三章 Win32 API及Registry 我們將利用Win32 API結合上一節所介紹的元件寫一個類似檔案總管的介面,也將介紹Registry的特性,進而利用Registry讓我們的程式更加有彈性。
字符串和字符数组 字符串的输入和输出 字符串的基本操作
計數式重複敘述 for 迴圈 P
研讨课4 文件操作.
第九章 各種對話方塊的建立 視窗介面可以說是最友善的人和電腦間的溝通介面,然而對話方塊就好像是電腦和使用者之間的對話通道。開檔案有開檔案的方式、存檔有存檔的介面、印表機設定、字型選擇、尋找字串、置換字串等等,在Win32的環境中,這類的對話方塊實在是太多了。在這一章我們將帶領大家進入設計對話方塊的世界。
第二週 記譜法.
電子音樂 通訊系 B 楊穎穆.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
第五章: 輸入與輸出.
2008能源與科技論壇暨研討會 自主型二足機器人之研製 鄭暉騰 倪世銓 李明哲 黃加慶 王仲淳 元智大學電機研究所
保留字與識別字.
物件導向程式設計 CH2.
Inheritance -II.
<编程达人入门课程> 本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C语言程序设计 李祥 QQ:
动态链接库 主讲人:孙鑫
高三家長升學講座 「個人申請」審查資料準備方向
羊樂多笛笛 作者:吳滋錕、劉智昇.
第二章 类型、对象、运算符和表达式.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第三章 軟體資源管理 授課老師:褚麗絹.
人民音乐出版社 七年级.
code::blocks 與GLUT 程式開發
校內科學園遊會 製作說明會 教務處設備組
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
裕民國小 100學年度第一學期 多元文化社團 直笛社團&合唱社團 期末成果發表會
Introduction to the C Programming Language
函式庫補充資料 1.
隨機函數.
Presentation transcript:

BEEP and Sound 授課:ANT 日期:2014/5/28

授課內容 BEEP 播放音樂 use System 播放音樂 use PlaySound 簡易使用windows.h MessageBox

About BEEP 最簡單的警示音,利用ASCII裡的基本設定。 #include <stdio.h> #include <stdlib.h> #include <windows.h> int main() { printf("%c",7); Sleep(1000); printf("%c", '\a' ); return 0 ; } http://home.educities.edu.tw/wanker742126/asm/ap04.html

BEEP函式 C除了可利用 printf(“%c”, ‘\a’ );產生 beep單純一聲外,尚可利用 Beep 指令來完成單音的曲子、音階。 運用windows.h裡的函式 Beep(int dwFreq, int dwDuration); 第一個參數dwFreq為音階頻率 第二個參數dwDuration為延遲時間 可依個人需求自訂延遲時間來分別判斷一拍及半拍. ex : 600 為一拍 => 300 便是半拍.

小範例 ex10-1-1 這是一個利用蜂鳴器發出 簡易音階的小範例。 切記:請在無人時實作, 因為真的很吵。

小蜜蜂範例 ex10-1-2 #include<windows.h> #include<conio.h> int main() { int row,col; int voice[16][4]={{700,600,600,0},{650,550,550,0},{500,550,600,650},{700,700,700,0}, {700,600,600,0},{650,550,550,0},{500,650,700,700},{600,0,0,0}, {550,550,550,550},{550,600,650,0},{600,600,600,600},{600,650,700,0}, {700,600,600,0},{650,550,550,0},{500,600,700,700},{500,0,0,0}} ; int tempo[16][4]={{1,1,2,0},{1,1,2,0},{1,1,1,1},{1,1,2,0},{1,1,2,0},{1,1,2,0},{1,1,1,1},{4,0,0,0}, {1,1,1,1},{1,1,2,0},{1,1,1,1},{1,1,2,0},{1,1,2,0},{1,1,2,0},{1,1,1,1},{4,0,0,0}}; for(row=0; row<16; row++) { for(col=0; col<4; col++) { Beep(voice[row][col],tempo[row][col]*350); } return 0;

播放音樂 use System 使用系統預設的播放程式。。 它不是背景音樂,程式想繼 續執行必須要關閉播放器。

播放音樂 use PlaySound PlaySound是用來播放音樂的一個windows.h函式。其函式格式如下: BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound); 參數意義 – 第一個參數可以是音效檔案名稱或內定的聲音別名或程式資源 。 第二個參數只有當第一個參數是程式資源時才可以用,通常為NULL。 第三個參數指定第一個參數是檔案名稱以及同步播放選項 如PlaySound( "yoursound.wav" , NULL, SND_FILENAME | SND_SYNC );

使用PlaySound的事前準備 由於此項函式較為特殊,因此必須使用到winmm.lib,屬於系統的LIB檔。在codeblocks底下,並沒有此lib檔。 首先必須下載winmm.lib (在壓縮檔裡有附。) 接著,將此lib檔放置到與.c檔同一個資料夾底下。 在codeblocks的”setting” -> “Compiler and debugger settings” -> 左欄“Global compiler settings” -> “Linker settings” 按add並將此lib檔加入。

使用PlaySound的事前準備(續) 做完這動作後,還必須在程式中加入 但是此函式目前只能播放.wav 格式的聲音檔 #pragma comment(lib,“winmm.lib”) #include <windows.h> #include <mmsystem.h> 注意include時,window.h要放在mmsystem.h之 上不然會有錯誤產生。 但是此函式目前只能播放.wav 格式的聲音檔 要使用Windows內建的多媒體API函數,就必須於程式的宣告檔 stdafx.h 中載入多媒體函數宣告檔 mmsystem.h,及靜態連結檔 winmm.lib 。 在codeblocks並沒有stdafx.h,但式加入windows.h就可以解決這問題 一般函式庫通常會包含標頭檔(.h)及靜態連結檔(.lib),如果未引入連結檔,則會因為編譯器找不到函式庫,而導致程式編譯時會出現連結錯誤。#pragma comment,代表將函式庫目錄裡的靜態連結黨直接加入檔案中。

PlaySound 此函式的第三個參數為播放標誌,可有下列的選擇: 第三個參數在使用時可以使用” | ”組合函式的功能。 SND_FILENAME pszSound參數指定了WAVE檔名 SND_SYNC 做同步播放,在播放完後才返回 SND_ASYNC 做非同步播放,函數在開始播放後立即返回 SND_LOOP 重複播放聲音,但必須與SND_ASYNC同時使用 SND_NODEFAULT 不播放如果沒有聲音的音效,如果沒使用則當發現 沒有聲音可撥放時會撥放音效。 SND_PURGE 停止所有與調用任務有關的聲音。若參數pszSound 為NULL,就停止所有的聲音,否則停止 pszSound 指定的聲音。 詳情參考 http://chenzhand1.blog.hexun.com.tw/43298441_d.html 第三個參數在使用時可以使用” | ”組合函式的功能。 如SND_FILENAME | SND_ASYNC 表示指定了第一個參數為播放的檔案且做非同步播放。 Private Const SND_NODEFAULT = &H2 ' 若語音檔不存在就播放警告音 http://chenzhand1.blog.hexun.com.tw/43298441_d.html http://msdn.microsoft.com/zh-tw/library/windows/desktop/dd743680(v=vs.85).aspx

範例 ex10-2 注意 音樂檔名在輸入時,請記得要輸入完整的位址 另外參數中的路徑使用兩個連續的反斜杠轉義代表一個反斜杠。 Cls 在命令提示字元中,打這個敘述的功能是把已經輸出的文字清掉,然後再把游標移回到第一行最前面的位置。這個敘述應該是最方便使用的吧,可是這個敘述的速度不是很快,雖然說也不會超過1秒啦。

簡易windows.h使用 - MessageBox 使用很簡單,如下 #include<windows.h> int main() { MessageBox(NULL , “Hello World” , “^ ^",MB_OK|MB_ICONASTERISK); return 0 ; } http://msdn.microsoft.com/zh-tw/library/microsoft.aspnet.snapin.aspnetmanagementutility.messagebox(v=vs.85).aspx 0 (MB_OK) : OK按鈕 1 (MB_OKCANCEL) : OK, Cancel按鈕 2 (MB_ABORTRETRYIGNORE) : Abort, Retry, Ignore按鈕 3 (MB_YESNOCANCEL) : Yes, No, Cancel按鈕 4 (MB_YESNO) : Yes, No按鈕 5 (MB_RETRYCANCEL) : Retry, Cancel按鈕

MessageBox 格式如下: 四個參數分別是: 1) HWnd :要建立之訊息方塊的擁有人控制代碼。 int MessageBox(HWND hWnd , LPCTSTR lpText , LPCTSTR lpCaption , UNIT uType) 四個參數分別是:  1) HWnd :要建立之訊息方塊的擁有人控制代碼。  2) LpText :想要顯示的文字字串的指標。  3) LpCaption :對話方塊標題字串的指標。  4) UType :顯示在對話方塊上的小圖示的類型。 詳細資料參考 http://msdn.microsoft.com/en-us/library/ms645505(VS.85).aspx

MessageBox(續) 小範例中第四個參數MB_OK及MB_ICONASTERISK,分別表示有個OK的按鈕及有個 的圖示。 關於return值,如果messagebox有Cancel按鍵(ex. MB_OKCANCEL,表示式窗上有OK與Cancel按鍵),則按下它的回傳值會是IDCANCEL,另外如果是按鍵盤上的Esc鍵也會回傳IDCANCEL。 按鍵類型與圖示類型請參考上頁連結。 附其他常用屬性 系統默認圖示,可在訊息方塊上顯示  X錯誤 MB_ICONHAND, MB_ICONSTOP, and MB_ICONERROR  ?詢問 MB_ICONQUESTION  !警告 MB_ICONEXCLAMATION and MB_ICONWARNING  i信息 MB_ICONASTERISK and MB_ICONINFORMATION 按鈕的形式  MB_OK 確定  MB_OKCANCEL 確定和取消  MB_YESNO 是和否  MB_YESNOCANCEL 是和否和取消 返回值  IDCANCEL 取消被選  IDNO 否被選  IDOK 確定被選  IDYES 是被選

範例 ex10-3 利用messagebox的回 傳值,在主程式執行下 一步的動作。 對應到按取消鍵,則 回傳IDCANCEL,而重 試則是IDRETRY。

複習kbhit Kbhit()的使用在於判斷是否有按按鍵。從系統來看就是說,此函式在於判斷暫存器buffer,是否有資料。 當我們按鍵盤按鍵時,電腦會將按鍵字元存於keyboard buffer內,而kbhit如果判斷buffer內有資料則回傳非 0的值,無資料則回傳 0 。 注意:當使用kbhit()後,並未使用getch()函式的話,buffer內的資料會一直存在,再下一次按按鍵時會繼續儲存,直到buffer滿為止,因此往後的kbhit()持續回傳 1 。 Kbhit功能為檢測按鍵。 檢測鍵盤是否有鍵按下,如果有鍵按下,則返回對應鍵值;否則返回零。 Kbhit不等待鍵盤按鍵,無論有無按鍵都會立即返回。

複習kbhit(續) 因此從下面程式就可以知道瞭解問題。 關於buffer大小,不同的電腦設定式不同的,所以沒有一定值。

Lab 10 用Beep製作一個電子琴 按下鍵盤上的ASDFGHJ便會發出對應的聲音 A-Do S-Re D-Mi F-Fa G-So H-La J-Si

HW 10 簡易wav播放器 透過本程式可讓使用者簡易的播放與更換背景音樂,本程式共有三種音樂讓使用者自行選擇。 流程 – 使用者一開始(1)試聽 (2)離開 在選擇試聽後, 出現現有的歌單, 並選擇。 在選擇某一音樂後,使用者有兩種選項(a)試聽秒數 (b)任意, 在(a)中給予試聽的秒數,在(b)中則提供歌曲播放不中斷直到按到鍵盤任一按鍵為止。 當歌曲非意外性停止或中斷, 也就是秒數到了或者選(b)的人按了鍵盤則回到最初選擇(1)試聽 (2)離開

HW 10解釋 首先創建一txt文件檔,內含歌曲名稱,為求方便,歌曲名由助教定義 (歌曲1: haunted.wav 歌曲2: blacksky.wav 歌曲3: rainielove.wav),避免作業繳交時上傳檔案過大,作業上傳時不需要上傳音樂檔。 歌單檔名為song,檔案型態是txt,其中共有三筆資料 由於歌曲檔案很大轉檔後每個約為40MB,故在程式撰寫時,測試程式時請自行找尋wav音樂檔,並命名為歌單的名稱,位置放置C槽底下,做測試。 另外實驗室提供winmm.lib檔 繳交作業需要附上.C檔及song.txt 以及書面檔案(.doc) 將兩個檔案加入壓縮檔上傳(壓縮檔檔名為 “系籍_學號_HW09”)