欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python程序計(jì)算鋼琴88個(gè)鍵的音高

 更新時(shí)間:2022年04月09日 11:17:19   作者:雪山飛豬  
這篇文章介紹了使用Python程序計(jì)算鋼琴88個(gè)鍵的音高,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

我們知道了鋼琴鍵盤的音高是其實(shí)是有規(guī)律的,如下

  • 頻率翻倍,高一個(gè)八度
  • 國(guó)際基準(zhǔn)音:440Hz,鋼琴鍵盤上對(duì)應(yīng)小字一組的la

小字一組的la可以看下圖

根據(jù)這兩個(gè)規(guī)律,我們就可以計(jì)算出所有88個(gè)琴鍵的音高(單位是頻率)。

鋼琴鍵盤是標(biāo)準(zhǔn)的十二平均律,12個(gè)鍵后頻率翻倍,那么每?jī)蓚€(gè)琴鍵之間的頻率倍數(shù)是固定的,也就是可以根據(jù)一個(gè)琴鍵的音高,計(jì)算出下一個(gè)琴鍵的音高。

計(jì)算鋼琴最左邊琴鍵的音高

我們知道小字一組的la頻率是440Hz,鋼琴最左邊的鍵也是la,隔了4個(gè)組,根據(jù)x * 2 * 2 * 2 * 2 = 440Hz。
那么最左邊琴鍵的音高為

x = 440 / 16 = 27.5

計(jì)算每?jī)蓚€(gè)琴鍵的頻率倍數(shù)

每隔12個(gè)鍵音高翻倍,x^12=2
那么每個(gè)鍵的音高倍數(shù)為2開12次方

x = pow(2, 1/12)=1.0594630943592953

python程序?qū)崿F(xiàn)

知道了最左邊琴鍵的音高,還知道了倍數(shù),那么不停地乘個(gè)87次就能知道鋼琴所有琴鍵的音高了。
我們用python實(shí)現(xiàn)一樣

定義鋼琴鍵盤

我們先定義一個(gè)相關(guān)鋼琴鍵盤的變量

# 鋼琴鍵盤chenqionghe
keyboard = {
    "大字二組": ['A2', 'A2#', 'B2'],
    "大字一組": ['C1', 'C1#', 'D1', 'D1#', 'E1', 'F1', 'F1#', 'G1', 'G1#', 'A1', 'A1#', 'B1'],
    "大字組": ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'],
    "小字組": ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'],
    "小字一組": ['c1', 'c1#', 'd1', 'd1#', 'e1', 'f1', 'f1#', 'g1', 'g1#', 'a1', 'a1#', 'b1'],
    "小字二組": ['c2', 'c2#', 'd2', 'd2#', 'e2', 'f2', 'f2#', 'g2', 'g2#', 'a2', 'a2#', 'b2'],
    "小字三組": ['c3', 'c3#', 'd3', 'd3#', 'e3', 'f3', 'f3#', 'g3', 'g3#', 'a3', 'a3#', 'b3'],
    "小字四組": ['c4', 'c4#', 'd4', 'd4#', 'e4', 'f4', 'f4#', 'g4', 'g4#', 'a4', 'a4#', 'b4'],
    "小字五組": ['c5']
}

為了友好展示,我們放入DataFrame中查看

keybord_data={k: [*v, *[""]*(12-len(v))] for k, v in keyboard.items()}
df = pd.DataFrame(keybord_data)

輸出一下

OK,這里我們就先把鋼琴鍵盤弄出來了。

計(jì)算每個(gè)琴鍵的音高

# python
data = {}

start = 440 / 16
loop = math.pow(2, 1 / 12)
i = 0
for groupName, group in keyboard.items():
    for name in group:
        if name == "A2":
            current = start
        else:
            current = current * loop
        data[name] = name + ": " + str(round(current,3))
        i = i + 1

data這個(gè)數(shù)組保存了每個(gè)琴鍵的音高

展示琴鍵音高

df.replace(data)

查看一下

這樣就計(jì)算出了所有琴鍵的音高

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python爬蟲urllib和requests的區(qū)別詳解

    Python爬蟲urllib和requests的區(qū)別詳解

    這篇文章主要介紹了Python爬蟲urllib和requests的區(qū)別詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Python?turtle.right與turtle.setheading的區(qū)別講述

    Python?turtle.right與turtle.setheading的區(qū)別講述

    這篇文章主要介紹了Python?turtle.right與turtle.setheading的區(qū)別,本文以turtle.right為例給大家詳細(xì)介紹,需要的朋友可以參考下
    2022-03-03
  • Python實(shí)戰(zhàn)之自動(dòng)發(fā)送郵件的實(shí)現(xiàn)

    Python實(shí)戰(zhàn)之自動(dòng)發(fā)送郵件的實(shí)現(xiàn)

    自動(dòng)發(fā)送郵件能應(yīng)用于許多場(chǎng)景,下面本文就來和大家講講怎么用Python構(gòu)建一個(gè)自動(dòng)發(fā)送郵件的腳本。感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-05-05
  • Pytorch學(xué)習(xí)之torch用法----比較操作(Comparison Ops)

    Pytorch學(xué)習(xí)之torch用法----比較操作(Comparison Ops)

    這篇文章主要介紹了Pytorch學(xué)習(xí)之torch用法----比較操作(Comparison Ops),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 教你用Python來制作一個(gè)自動(dòng)搶票的腳本小程序

    教你用Python來制作一個(gè)自動(dòng)搶票的腳本小程序

    大麥網(wǎng),是中國(guó)綜合類現(xiàn)場(chǎng)娛樂票務(wù)營(yíng)銷平臺(tái),業(yè)務(wù)覆蓋演唱會(huì)、 話劇、音樂劇、體育賽事等領(lǐng)域,但是因?yàn)槠睌?shù)有限,還有黃牛們不能丟了飯碗,所以導(dǎo)致了,很多人都搶不到票,那么,今天帶大家用Python來制作一個(gè)自動(dòng)搶票的腳本小程序,需要的朋友可以參考下
    2023-07-07
  • numpy ndarray 按條件篩選數(shù)組,關(guān)聯(lián)篩選的例子

    numpy ndarray 按條件篩選數(shù)組,關(guān)聯(lián)篩選的例子

    今天小編就為大家分享一篇numpy ndarray 按條件篩選數(shù)組,關(guān)聯(lián)篩選的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python selenium抓取虎牙短視頻代碼實(shí)例

    Python selenium抓取虎牙短視頻代碼實(shí)例

    這篇文章主要介紹了Python selenium抓取虎牙短視頻代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python爬蟲scrapy圖書分類實(shí)例講解

    python爬蟲scrapy圖書分類實(shí)例講解

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python爬蟲scrapy圖書分類實(shí)例講解內(nèi)容,需要的朋友們可以參考下。
    2020-11-11
  • 詳解Python?Selenium如何獲取鼠標(biāo)指向的元素

    詳解Python?Selenium如何獲取鼠標(biāo)指向的元素

    這篇文章主要介紹了如何通過Selenium獲取當(dāng)前鼠標(biāo)指向的元素,本文方法的核心,是借助JavaScript的事件(event)來獲取鼠標(biāo)所在的元素,感興趣的可以試一試
    2022-03-03
  • django restframework序列化字段校驗(yàn)規(guī)則

    django restframework序列化字段校驗(yàn)規(guī)則

    本文主要介紹了django restframework序列化字段校驗(yàn)規(guī)則,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論