精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用Python寫了一個自動彈鋼琴腳本!

jf_TEuU2tls ? 來源:浩道linux ? 2023-09-10 10:21 ? 次閱讀

效果展示

我們先來看看最終實現效果

3d71e616-4f7e-11ee-a25d-92fbcf53809c.gif

功能實現

總體的實現相對是比較簡單的,主要分為以下4步實現:

  • 實現演奏函數,通過手指及時間間隔模擬彈鋼琴

  • 添加各個演奏旋律線程,通過多線程模擬雙手演奏效果

  • 確定需要演奏的鋼琴樂譜,確認主旋律、和弦、右手拇指、右手食指、左手拇指、左手食指

  • 自動切換打開鍵盤鋼琴(autopiano)網頁,通過鍵盤鍵入實現模擬演奏功能

代碼實現

演奏函數

首先需要模擬出演奏時各個按鍵的停頓間隔時間,實現鍵盤控制,通過傳入的音樂樂符和時間實現各個現場手指的演奏。

defplay_piano(music,keytime):
forninmusic:
ifn.isupper():
keyboard.press(Key.shift)
time.sleep(0.001)
keyboard.press(n.lower())
time.sleep(keytime-0.001)
keyboard.release(n.lower())
keyboard.release(Key.shift)
elifn=="|"orn==")":
pass
elifnin"!@$%^*(":
keyboard.press(Key.shift)
time.sleep(0.001)
keyboard.press("1245689"["!@$%^*(".index(n)])
time.sleep(keytime-0.001)
keyboard.release("1245689"["!@$%^*(".index(n)])
keyboard.release(Key.shift)
elifn!=""andn!="-":
keyboard.press(n)
ifmusic.index(n)!=len(music)-1andmusic[music.index(n)+1]==")":
time.sleep(keytime/2)
else:
time.sleep(keytime)
keyboard.release(n)
elifn=="-":
time.sleep(2*keytime)
else:
time.sleep(keytime)

添加演奏旋律

音樂彈奏的時候,有時候需要雙手同時控制演奏,我們需要通過線程模擬出主旋律、和弦、右手拇指、右手食指、左手拇指、左手食指各個部分的演奏效果,通過多線程開啟上面的演奏函數。

準備演奏

雙手彈琴需要確認好整首音樂中各個手指的彈奏節奏和彈奏內容。需要模擬出各個階段需要的演奏音樂并拼出整首音樂。

right="s-asf|a--u|p-ops|"
"o--uu|i-uis-|u-sss|a-Iia|"
"a--|"
left="etu--|0wr--|qet--|"
"80w--|9qe--|80w--|7Qr--|"
"370Wr|"
thread_play(play_piano,0.3,right,left)
right="---op|s-asf|a--u|p-ops|"
"o--uu|i-uis-|u-sss|a-Iia|"
"a--pa|s-asf|a--u|p-ops|"
left="----|etu--|0wr--|qet--|"
"80w--|9qe--|80w--|7Qr--|"
"370Wru|etu--|0wr--|qet--|"
thread_play(play_piano,0.25,right,left)
right="o--uu|isa-s|dfs--|sapaO|"
"p--sd|f-dfh|d--o|s-asf|"
"f--oo|pasasd|s-oo-|dsap|"
left="80w--|9qe--|680--|9ey0-|"
"e---|89w-t|579--|60e-t|"
"370w-|q-q-|0---|9---|"
rightThumb="----|----|----|--W-|"
"s---|----|----|----|"
"----|----|----|gfds|"
rightIndexFinger="----|----|----|--r-|"
"u---|----|----|----|"
"----|e-r-|w---|e---|"
leftThumb="----|----|----|----|"
"----|----|----|----|"
"----|t-y-|t---|t---|"
thread_play(play_piano,0.25,right,left,rightThumb,rightIndexFinger,leftThumb)
right="a--f|j-h-|fds-s|d-sdh|"
"f--f|j-h-|"
left="3%70Wru|60e37w|48qerw|59qet|"
"80wty-|60e37w|"
rightThumb="f---|----|----|----|"
"----|----|"
rightIndexFinger="----|----|----|----|"
"----|----|"
leftThumb="----|----|----|----|"
"----|----|"
thread_play(play_piano,0.25,right,left,rightThumb,rightIndexFinger,leftThumb)
#右手
right="fds-s|d-sda|u--op|"
#左手
left="48qerw|7-7%|6---|"
#右拇指
rightThumb="----|9---|8"
#右食指
rightIndexFinger="----|q---|0"
#左拇指
leftThumb="----|----|p"
#多線程模擬手指彈琴,按鍵時間為0.3s
thread_play(play_piano,0.3,right,left,rightThumb,rightIndexFinger,leftThumb)
right="s-asf|a--u|p-ops|"
"o--uu|i-uis-|u-sss|a-Iia|"
"a--|"
left="etu--|0wr--|qet--|"
"80w--|9qe--|80w--|7Qr--|"
"370Wr|"
thread_play(play_piano,0.4,right,left)

模擬演奏

最后只需要打開鋼琴網頁,通過控制鍵盤按鍵,實現手指演奏曲譜線程,就可以模擬彈奏出整首音樂了。

這里我們需要安裝谷歌瀏覽器驅動,來實現自動打開瀏覽器。

if__name__=='__main__':
#準備演奏
##控制鍵盤
keyboard=Controller()
##切換到vue鍵盤鋼琴(autopiano)網頁
#keyboard.press(Key.cmd)
#time.sleep(1)
#keyboard.press("d")
#keyboard.release("d")
#keyboard.release(Key.cmd)
##鏈接的方式點擊桌面任務欄的正在運行程序print_control_identifiers()
#dlg=Desktop(backend="uia").任務欄.運行中的程序.child_window(title="GoogleChrome-1個運行窗口",auto_id="Chrome",
#control_type="Button").click()
chromePath=r'C:ProgramFilesGoogleChromeApplicationchrome.exe'
webbrowser.register('chrome',None,webbrowser.BackgroundBrowser(chromePath))
webbrowser.get('chrome').open('https://www.autopiano.cn',new=1,autoraise=True)

到這里自動彈鋼琴就實現完成了,如果需要實現別的鋼琴演奏,只需要會看樂譜,根據樂譜修改各個階段手指彈奏線程,就可以實現不同樂曲的鋼琴演奏啦!


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 多線程
    +關注

    關注

    0

    文章

    277

    瀏覽量

    19923
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84453
  • 腳本
    +關注

    關注

    1

    文章

    387

    瀏覽量

    14832

原文標題:用Python寫了一個自動彈鋼琴腳本!

文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于Python腳本的R語言的函數

    本文介紹了采用創建Python腳本腳本模仿R風格的函數的方法來方便地進行統計。 是
    的頭像 發表于 10-12 09:33 ?2079次閱讀
    基于<b class='flag-5'>Python</b><b class='flag-5'>腳本</b>的R語言的函數

    介紹10Python自動腳本

    在這個自動化時代,我們有很多重復無聊的工作要做。想想這些你不再需要一次又一次地做的無聊的事情,讓它自動化,讓你的生活更輕松。那么在本文中,我將向您介紹 10
    發表于 10-17 09:27 ?927次閱讀

    10Python腳本來自動化你的日常任務

    今天浩道跟大家分享幾個關于python自動化日常工作的實用案例腳本
    發表于 10-25 09:04 ?713次閱讀

    10殺手級的Python自動腳本

    今天浩道跟大家分享10日常工作中用到的python自動腳本。讓你感受python簡單強大
    發表于 11-28 11:07 ?672次閱讀

    夢幻鋼琴

    ` 本帖最后由 3010203109 于 2013-3-31 14:34 編輯 *界面美觀,多種音色,曲目豐富,可自動彈奏*游戲仿照鋼琴而做,共有13鍵,音域從低音部的sol到高音部的mi
    發表于 10-12 20:02

    labview做的鋼琴程序,可以修改,無密碼

    可以用電腦彈鋼琴鋼琴完全labview做的,比較復雜。
    發表于 06-14 15:46

    python自動編寫腳本及分配引腳

    對于具有484引腳的芯片,如果手動一個一個設置引腳,必然是場噩夢。網上有使用Capture進行自動導入的帖子,不過沒有找到AD方面的帖子。本文使用
    發表于 07-23 06:49

    Arduino Uno板控制88螺線管彈鋼琴

    塊Arduino Uno板控制88螺線管彈鋼琴
    發表于 12-02 14:57 ?0次下載

    基于Arduino的鋼琴機器人

    塊Arduino Uno板控制88螺線管彈鋼琴。多年前,雅馬哈推出了自動鋼琴。年輕天真的我看到了樂器店的玻璃窗后面那架正在彈奏音樂的
    發表于 12-05 17:20 ?0次下載

    10殺手級的Python自動腳本分享

    重復性任務總是耗時且無聊,想想你想要張地裁剪 100 張照片或 Fetch API、糾正拼寫和語法等工作,所有這些任務都很耗時,為什么不自動化它們呢?在今天的文章中,我將與你分
    的頭像 發表于 01-06 15:34 ?729次閱讀

    分享10實用的Python自動腳本

    重復性任務總是耗時且無聊,想想你想要張地裁剪 100 張照片或 Fetch API、糾正拼寫和語法等工作,所有這些任務都很耗時,為什么不自動化它們呢?在今天的文章中,我將與你分
    的頭像 發表于 01-21 15:58 ?1313次閱讀

    利用Python寫了監控服務器資源利用率的腳本

    研究了腳本,其主要目的是:基于 Python 編程語言來監控服務器的 CPU、內存、/目錄、/appslog、/bigdata目錄使用率以及網卡接收和發送情況。
    的頭像 發表于 01-29 15:08 ?662次閱讀

    怎么Python構建自動發送郵件的腳本

    ? 類似的應用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發送郵件;網站宕機了,實時發送郵件提醒;網站負載過高,發送郵件提醒......等等。 下面就來講講怎么Python構建
    的頭像 發表于 10-21 14:47 ?726次閱讀
    怎么<b class='flag-5'>用</b><b class='flag-5'>Python</b>構建<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>自動</b>發送郵件的<b class='flag-5'>腳本</b>

    怎么Python構建自動發送郵件的腳本

    呢? 類似的應用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發送郵件;網站宕機了,實時發送郵件提醒;網站負載過高,發送郵件提醒......等等。 下面就來講講怎么Python構建
    的頭像 發表于 10-31 16:36 ?517次閱讀
    怎么<b class='flag-5'>用</b><b class='flag-5'>Python</b>構建<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>自動</b>發送郵件的<b class='flag-5'>腳本</b>

    如何使用Python編寫腳本來自動發送郵件

    Python種非常流行的編程語言,可以用于多種用途,包括自動化任務。其中常見的自動化任務
    的頭像 發表于 12-07 11:36 ?1306次閱讀