![]() |
請教關於寫簡單的程式來模擬鋼琴(vbscript)
請教關於寫簡單的程式來模擬鋼琴(vbscript)
蒙之前mini psac sdany三位大大指出一條學習 vbscript 的路 所以現在對於vbscript算是稍微知道一點點 想寫一個簡單小程式來模擬鋼琴 以前好像在網頁上看人家有寫過程式 不知道該怎麼寫? 我的vbscript指的是WSH 非用於網頁的vbscript (因為兩者有點不同) :toomuch: 不好意思麻煩各位大大了 |
vbs 因為沒有 Form 可以用
所以無法模擬鍵盤畫面 又 除非使用 VBA (也就是在MS 的應用程式上使用的 vbscript) 才可以宣告API 就算不是要 鍵盤畫面 或只是 直接寫譜方式 來模擬 .vbs 也沒有多媒體演奏函式可以使用 這裡有個利用網頁的vbscript的模擬鋼琴寫法 http://www.socialwork.com.hk/vb/vbsd...omForm0010.htm (這個網頁要開啟 要花一點時間...) 要不然只能退一步 準備好一首曲子 接著 .vbs內容如下三行 dim MCIOBJ set MCIOBJ = CreateObject("WScript.Shell") MCIOBJ.run "mplay32.exe /play /close c:\piano.wav" 註: mplay32.exe是 windows內建的一個播放程式 /play /close 表示演奏後自動關閉此播放程式 c:\piano.wav 就是準備好的曲子 WSH 在檔案操作上是很好用 但也是有限制的 無法像 VB做深入操作的 可以的話 退一步研究看看 VBA for Office (Excel、Word...什麼的) 最後 下三行是叫出windows多媒體裝置控制台 dim MCIOBJ set MCIOBJ = CreateObject("WScript.Shell") MCIOBJ.run "Rundll32.exe Shell32.dll, Control_RunDLL mmsys.cpl,,0" 那能否解析出 .dll 的操作 抽出 mciSendStringA、PlaySoundA 等WinAPI函式呢.....? 個人是找不到啦 ^^"" 可能還是有辦法 比如用 .js 來辦到 不過個人是對 Javascript 沒有研究 所以只能想到這些... 網路上大部分能找到都是 vbscript、JavaScript網頁設計 對 .js、.vbs for WSH 很多是定位於 危險 ≒ 病毒 所以建議網友 可以直接試試 VB 來設計 編譯成 .exe 也是容易攜帶的 |
引用:
能不能請教大大 完整的播放一個聲音檔是下面這樣而已嗎? dim MCIOBJ set MCIOBJ = CreateObject("WScript.Shell") MCIOBJ.run "mplay32.exe /play /close c:\piano.wav" 還是說我需要再叫出"windows多媒體裝置控制台"才可以執行? MCIOBJ.run "Rundll32.exe Shell32.dll, Control_RunDLL mmsys.cpl,,0" 只能退而求其次準備多個鋼琴按鍵音的檔,沒有Form直接用鍵盤彈,也是不錯 如果要這麼做的話,第三行可不可以直接去掉 /close 寫成 MCIOBJ.run "mplay32.exe /play c:\piano.wav" 印象中好像有個程式叫API-Guide 好像可以查出API的功能,不過好像只有英文版(大概) 另外FoxAPIv15好像也可以,不過是簡體版,所以使用上會有亂碼 |
這
dim MCIOBJ set MCIOBJ = CreateObject("WScript.Shell") MCIOBJ.run "mplay32.exe /play /close c:\piano.wav" 三行,存成 某某.vbs 就可得到效果了 去掉 /close 的話,演奏完 mplay32.exe開啟的播放視窗程式就不會自動關閉 MCIOBJ.run "Rundll32.exe Shell32.dll, Control_RunDLL mmsys.cpl,,0" 只是比喻 "是否有方法能使用 .dll 裡的API ?" 而已 Q:FoxAPIv15好像也可以,不過是簡體版,所以使用上會有亂碼 A:你可以用 Microsoft AppLocale 來掛上 FoxAPIv15簡體版 這樣就可以看到到簡體字 或 到中文化版區 求助 繁中化 |
引用:
要寫這個程式我目前能夠想到的是 準備各音階的聲音檔 , 製作的時候 只能寫好譜或是給一個inputbox讓使用者填入整首譜 , 然後讓vbs執行 這種方式應該不難 , 但是我比較想要作的是彈什麼就是什麼 , 就像一般的鋼琴般 把鍵盤當作琴鍵 , 按一個音是個音... 我有查到一個網站 http://faculty.stut.edu.tw/~tang/project/proj_ref.htm 鋼琴鍵盤示範midi發聲程式設計 這項有VB原始碼 我比較驚訝的是好像是直接以winAPI來發音 , 所以不需要準備什麼鋼琴音 看了一下他好像有用到winmm的東西 , 沒學過VB和API用法 一下子看很吃力 , 完全不知所云 不知道這個程式 , 有沒有辦法vbscript化 ? 不用太複雜 , 只要可以彈就好了 他是以Form用滑鼠來彈 ( 雖然看過資料WSH可以利用,IE的物件叫出表單 ) 我有想過 , 想用鍵盤彈感覺好像很難達成 因為用能夠給他指令的 , 目前我只知道 1. 以inputbox給 , 但是按一個音後要按enter , 所以不可行 2. 用另外的txt檔給或是由DOS執行時 , 順便給指令 但是這個跟一次給整首歌的情形 , 不就沒兩樣了 不知道有沒有辦法 , 達成按一個鍵就達成某事件(EX:一個鋼琴音) 的方法 :drtyt76h6 |
Q: 不知道這個程式 , 有沒有辦法vbscript化 ?
A: 個人是覺得沒辦法... ※VB的 WinAPI 是很簡單使用的東西 (當然你還是要了解各參數欄的意義) 如果你能解決 WSH彈奏的問題 (這一點個人想不出辦法,看了一下 VBScript 所不支援的 VBA 功能 還真不少...) 對於 設計好樂普格式後 利用讀取寫好的樂普 自動彈曲 這還好解決 |
所有時間均為台北時間。現在的時間是 02:20 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *