本申請是基于2011年12月20日提交的申請?zhí)枮?011104295681、發(fā)明創(chuàng)造名稱為“電子樂器”的中國專利申請的分案申請。
技術(shù)領(lǐng)域
本發(fā)明涉及一種電子樂器,其通過使用音樂演奏數(shù)據(jù)指示用戶期望演奏的音樂演奏操作元件,來為用戶提供音樂演奏指導(dǎo)。
背景技術(shù):
盡管初學(xué)者期望在電子樂器上彈奏(play)樂曲,不過他或她不清楚彈奏哪個音符、何時彈奏以及彈奏該音符多長時間。已經(jīng)存在具有音樂演奏指導(dǎo)功能的電子樂器,其用于再現(xiàn)用戶期望樂曲的音樂演奏數(shù)據(jù),并且在顯示器上或者通過指示燈指示用戶應(yīng)當彈奏的音符。在如下文獻1至3中描述了具有這種音樂演奏指導(dǎo)功能的傳統(tǒng)電子樂器:
文獻1:日本專利公開第2707853號
文獻2:日本未審查專利公開第2004-101979號
文獻3:Yamaha Corporation,PORTATONE EZJ-210Manual,p.32,http://www2.yamaha.co.jp/manual/pdf/emi/japan/port/ezj210_j a_om_a0.pdf(2010年12月8日搜索結(jié)果)。
通過傳統(tǒng)電子樂器的音樂演奏指導(dǎo)功能,當再現(xiàn)用戶期望練習(xí)的樂曲到達用戶應(yīng)當彈奏的時刻時,電子樂器會指示與用戶應(yīng)當彈奏的音符對應(yīng)的按鍵,從而用戶能夠自己學(xué)習(xí)應(yīng)當彈奏的音符以及應(yīng)當何時彈奏該音符。此外,通常存在這樣的音樂演奏指導(dǎo)功能,其中如果用戶未在特定的時刻彈奏所指示的按鍵,則電子樂器進入等待狀態(tài),直到用戶彈奏了指示的按鍵。在這種等待狀態(tài)下,電子樂器暫停根據(jù)樂曲的進程讀取音樂演奏數(shù)據(jù),并等待用戶彈奏所指示的按鍵。當用戶彈奏指示的按鍵時,電子樂器產(chǎn)生對應(yīng)于所彈奏按鍵的樂音,并且開始讀取后續(xù)的音樂演奏數(shù)據(jù)以恢復(fù)樂曲的再現(xiàn)。
下面參照圖8結(jié)合鍵盤樂器的示例來對傳統(tǒng)音樂演奏指導(dǎo)的操作進行說明。
在圖8的頂行中,以時間順序?qū)χ甘居脩粢獜椬嗟臉非淖詣右魳费葑鄶?shù)據(jù)的音符進行排列。在頂行下面的一行中,以長矩形來表示頂行中所指示的各個音符的音符長度。在第二行下方的一行中,以長矩形表示按鍵按下的時間段,該時間段從用戶按下上述音符所對應(yīng)的按鍵到用戶釋放該按鍵為止。不過,在圖8中未示出各個音符的音符編號。圖8中,時刻t1、t2、t3、t4、t5……是各個節(jié)拍(beat)開始的時刻。具體來說,每兩個時刻之間的間隔等于一個節(jié)拍。應(yīng)當產(chǎn)生指示自動音樂演奏數(shù)據(jù)的第一四分音符n1的時刻為t1時刻。應(yīng)當產(chǎn)生第二四分音符n2的時刻為t2時刻。應(yīng)當產(chǎn)生第三二分音符n3的時刻為t3時刻。
當用戶為了彈奏樂曲而開啟了用戶可以進行開關(guān)切換的音樂演奏指導(dǎo)功能時,自動音樂演奏數(shù)據(jù)被順序讀取。在相比應(yīng)當產(chǎn)生四分音符n1的t1時刻早特定時間T的t01時刻,指示具有該四分音符n1的音高(tone pitch)的按鍵的指示燈打開。假設(shè)即使指示燈已經(jīng)在t01時刻打開,但用戶仍未在樂音產(chǎn)生時刻t1按下指示燈所指示的按鍵。于是,電子樂器進入等待狀態(tài),暫停讀取音樂演奏數(shù)據(jù),以等待用戶按下所指示的按鍵。假設(shè)用戶在晚于t1時刻的t1’時刻按下了指示燈所指示的按鍵。按下該按鍵時,指示燈關(guān)閉,同時從t1’時刻開始產(chǎn)生具有所按下按鍵的音高的樂音,并持續(xù)產(chǎn)生該樂音,直到釋放該按鍵。另外,電子樂器取消該等待狀態(tài)以讀出下一音樂演奏數(shù)據(jù),來準備對下一個四分音符n2進行指導(dǎo)。從t01時刻到t1時刻的時間段即是所述特定時間段T,其是例如等于32分音符的音符長度的短時間段。在用戶按下了不同于指示燈所指示的按鍵的情況下,電子樂器判斷該按鍵的按下是錯誤的按下,從而電子樂器認為沒有在t1時刻之前按下正確的按鍵,于是進入等待狀態(tài),等待正確地按下所指示的按鍵。
如上文所述,在用戶按下由指示燈指示并且對應(yīng)于四分音符n1的樂音的按鍵時,讀出下一音樂演奏數(shù)據(jù),其中t20時刻被定義為應(yīng)當產(chǎn)生四分音符n2的時刻,t20時刻相比按下對應(yīng)于四分音符n1的按鍵的t1’時刻晚一個節(jié)拍。因此,在比t20時刻早特定時間段T的時間點,指示與四分音符n2的音高對應(yīng)的按鍵的指示燈打開,以為四分音符n2提供音樂演奏指導(dǎo)。對于針對四分音符n2以及二分音符n3的音樂演奏數(shù)據(jù),在比應(yīng)當產(chǎn)生各個音符的樂音的各個時刻早特定時間段T的各個時間點處,指示與音符n2、n3的音高對應(yīng)的各個按鍵的指示燈打開,以為各個音符提供音樂演奏指導(dǎo)。在圖8的情況下,盡管為用戶提供了這種指導(dǎo),但用戶仍未在音符n2、n3的各個樂音產(chǎn)生時刻按下指示燈所指示的按鍵。因此,電子樂器在音符n2、n3的各個樂音產(chǎn)生時刻進入等待狀態(tài)。然后,用戶在晚于樂音產(chǎn)生時刻t20的t2’時刻按下對應(yīng)于四分音符n2的按鍵,于是等待狀態(tài)消除。此外,用戶在晚于樂音產(chǎn)生時刻t30的t3’時刻按下對應(yīng)于二分音符n3的按鍵,于是等待狀態(tài)消除。通過正確地按下按鍵以消除等待狀態(tài),具有所指導(dǎo)音符的音高(即具有所按下按鍵的音高)的樂音的產(chǎn)生開始保持所產(chǎn)生的樂音,直到釋放按鍵,同時讀出下一音樂演奏數(shù)據(jù)以準備對下一音符進行指導(dǎo)。
通過上述指導(dǎo)功能,在再現(xiàn)用戶希望練習(xí)的樂曲期間,在用戶應(yīng)當按下按鍵的時刻之前,電子樂器為用戶提供指示用戶應(yīng)當按下的按鍵的指導(dǎo)。如果用戶在原始設(shè)置的樂音產(chǎn)生時刻沒有按下所指導(dǎo)的按鍵,則電子樂器進入等待狀態(tài)。如果用戶隨后按下了所指導(dǎo)的按鍵,則電子樂器恢復(fù)樂曲的再現(xiàn)。相應(yīng)的樂音將在從按下按鍵到釋放按鍵的時間段內(nèi)產(chǎn)生。這種指導(dǎo)功能僅指示應(yīng)當按下的音符以及應(yīng)當按下按鍵的時刻,但不指示應(yīng)當釋放按鍵的時刻。因此,傳統(tǒng)的指導(dǎo)功能的缺點在于,如果用戶過早釋放按鍵,則產(chǎn)生對應(yīng)樂音的時間段過短,從而打斷了音樂演奏。
為了克服此缺點,存在一種傳統(tǒng)的音樂演奏指導(dǎo)功能,其還能夠允許用戶學(xué)習(xí)應(yīng)當釋放按鍵的時刻。通過這種傳統(tǒng)音樂演奏指導(dǎo)功能,不管用戶何時釋放按鍵,都保持產(chǎn)生對應(yīng)于該按鍵的樂音,直到達到樂曲數(shù)據(jù)中記錄的音符的音符長度,并且在達到音符的音符長度時,自動停止產(chǎn)生該樂音。因此,通過這種傳統(tǒng)音樂演奏指導(dǎo),即使用戶沒有在正確的時刻釋放按鍵,用戶所彈奏的樂曲也將聽起來正確。通過使用這種音樂演奏指導(dǎo)功能反復(fù)練習(xí)樂曲,用戶能夠?qū)W習(xí)何時釋放按鍵。
下面將參照圖9對這種傳統(tǒng)音樂演奏指導(dǎo)的操作進行說明。在圖9中同樣描述了鍵盤樂器的示例。
在圖9的頂行中,以時間順序?qū)χ甘居脩粢獜椬嗟臉非淖詣右魳费葑鄶?shù)據(jù)的音符進行排列。在頂行下面的一行中,以長矩形來表示頂行中所指示的各個音符的音符長度。在第二行下方的一行中,以長矩形表示每個從用戶按下上述音符所對應(yīng)的按鍵到用戶釋放該按鍵為止的時間段。在圖9中,時刻t1、t2、t3、t4……是各個節(jié)拍開始的時刻。具體來說,每兩個時刻之間的間隔等于一個節(jié)拍。應(yīng)當產(chǎn)生指示自動音樂演奏數(shù)據(jù)的四分音符n10的時刻為t1時刻。應(yīng)當產(chǎn)生第二四分音符n11的時刻為t2時刻。應(yīng)當產(chǎn)生第三四分音符n12的時刻為t3時刻。應(yīng)當產(chǎn)生第四四分音符n13的時刻為t4時刻。四分音符n10的音符長度為ta1。四分音符n11的音符長度為ta2。四分音符n12的音符長度為ta3。四分音符n13的音符長度為ta4。因為音符n10至n13每一個均為四分音符,因此各個音符長度ta1至ta4具有相同的長度。
在開啟音樂演奏指導(dǎo)的情況下用戶開始音樂演奏時,順序讀取自動音樂演奏數(shù)據(jù),同時在未示出的但相比應(yīng)當產(chǎn)生四分音符n10的t1時刻早特定時間段的時間點處,指示與四分音符n10的音高對應(yīng)的按鍵的指示燈打開。假設(shè)用戶識別出打開的指示燈,并且在t1時刻按下該指示燈所指示的按鍵,并在時間段tb1內(nèi)持續(xù)按下該按鍵。在這種情況下,盡管時間段tb1小于四分音符n10的音符長度ta1,實際產(chǎn)生的樂音的長度也延長為具有音符長度ta1。在已經(jīng)按下了指示燈所指示的與四分音符n10的音高對應(yīng)的按鍵的情況下,讀出下一自動音樂演奏數(shù)據(jù),以在相比應(yīng)當產(chǎn)生四分音符n11的t2時刻早特定時間段的時間點處使得指示與四分音符n11的音高對應(yīng)的按鍵的指示燈打開。假設(shè)用戶同樣在t2時刻按下了指示燈所指示的按鍵,并在時間段tb2內(nèi)保持按下該按鍵。在這種情況下,盡管時間段tb2小于四分音符n11的音符長度ta2,實際產(chǎn)生的樂音的長度也延長為具有音符長度ta2。此外,在彈奏由指示燈指示并且與四分音符n11的音高對應(yīng)的按鍵時,讀出下一自動演奏數(shù)據(jù),同時在相比應(yīng)當產(chǎn)生四分音符n12的t3時刻早特定時間段的時間點處使得指示與四分音符n12的音高對應(yīng)的按鍵的指示燈打開。假設(shè)用戶同樣在t3時刻按下了指示燈所指示的按鍵,并在時間段tb3內(nèi)保持按下該按鍵。在這種情況下,盡管時間段tb3大于四分音符n12的音符長度ta3,實際產(chǎn)生的樂音的長度也縮短為具有音符長度ta3。
因此,通過這種傳統(tǒng)音樂演奏指導(dǎo)功能,無論用戶實際釋放各個按鍵的時刻如何,也能夠針對樂曲數(shù)據(jù)中記錄的各個音符長度來保持產(chǎn)生各個樂音。
技術(shù)實現(xiàn)要素:
在圖8所示的傳統(tǒng)音樂演奏指導(dǎo)的情況下,如果用戶在應(yīng)當產(chǎn)生指導(dǎo)音符的時刻之后也未按下指導(dǎo)按鍵,則電子樂器進入等待狀態(tài),直到用戶按下所指示的按鍵。當按下音樂演奏指導(dǎo)所指示的按鍵時,電子樂器開始產(chǎn)生對應(yīng)于所按下按鍵的樂音。通過這種傳統(tǒng)音樂演奏指導(dǎo),在用戶希望學(xué)習(xí)的樂曲的再現(xiàn)期間,在比用戶應(yīng)當按下按鍵的時刻早特定時間段T的時間點處,對用戶應(yīng)當彈奏的音符進行指導(dǎo),于是用戶能夠按下對應(yīng)于所指導(dǎo)音符的按鍵。在這種情況下,將所述特定時間段T設(shè)置為例如32分音符的音符長度的短時間段。由于特定時間段T較短,因此傳統(tǒng)音樂演奏指導(dǎo)使得用戶僅通過在指示的時刻按下按鍵就能夠精確地彈奏樂曲。然而,另一方面,用戶必需等待用戶應(yīng)當按下的按鍵的下一個指示。如果已知下一個要彈奏的按鍵的用戶如圖8的最下行所示在早了特定時間段T的時間點處按下了下一個要指示的按鍵,則用戶的此次按鍵的按下被判斷為錯誤的按下。因此在這種情況下,盡管用戶按照樂譜所示彈奏了正確的音符,但如果用戶彈奏音符比音樂演奏指導(dǎo)所允許的更快,則無法產(chǎn)生用戶已經(jīng)彈奏的早于期望時刻的音符的樂音。
另外,在圖9所示的情況下,如果用戶在t3時刻按下了指示燈所指示的對應(yīng)于四分音符n12的按鍵,以在大于一個節(jié)拍的時間段tb3內(nèi)保持按下該按鍵,則時間段tb3結(jié)束的時間點晚于應(yīng)當產(chǎn)生下一個四分音符n13的t4時刻。盡管針對四分音符n13的音樂演奏指導(dǎo)從相比t4時刻早特定時間段T的時間點開始,但用戶要在時間段tb3結(jié)束后按下對應(yīng)于音符n13的按鍵。在這種情況下,音符n12的樂音的產(chǎn)生自動在等于音符長度ta3的結(jié)束的時間點處終止,從而用戶彈奏的樂曲在t4時刻進入等待狀態(tài)。當用戶在比t4時刻晚時間Dt的t4’時刻按下對應(yīng)于音符n13的按鍵時,在t4’時刻樂曲恢復(fù)。在這種情況下,用戶在t4’時刻按下指示燈所指示的按鍵,并在時間段tb4內(nèi)保持按下按鍵。盡管時間段tb4小于四分音符n13的音符長度ta4,實際產(chǎn)生的樂音的長度也延長為具有音符長度ta4的長度。即使節(jié)拍開始的時刻t4’延遲了,電子樂器也將使得確定節(jié)拍長度的拍子(tempo)保持恒定。因此,t4’時刻后的各個節(jié)拍的各個時刻t4’、t5’、t6’……之間的長度將不會變化。
如上文所述,通過圖9所示的傳統(tǒng)音樂演奏指導(dǎo),無論用戶實際釋放按鍵的時刻如何,拍子都保持恒定。具體來說,即使用戶希望輕快地彈奏樂曲而較早地釋放按鍵,傳統(tǒng)的音樂演奏指導(dǎo)也將使用戶等待較長時間而不進行對下一節(jié)拍的指導(dǎo)。另外,即使用戶希望較慢地彈奏樂曲而較晚地釋放按鍵,傳統(tǒng)的音樂演奏指導(dǎo)也將在按鍵釋放之前開始針對下一節(jié)拍的指導(dǎo),而不延遲對下一節(jié)拍的指導(dǎo)。因此,傳統(tǒng)的音樂演奏指導(dǎo)不夠用戶友好。
如上文所述,具有傳統(tǒng)指導(dǎo)功能的電子樂器的缺點在于,傳統(tǒng)的指導(dǎo)功能無法滿足用戶不僅按照指導(dǎo)的指示彈奏樂曲、還能夠帶有感情地更輕快或者更和緩地彈奏的需求。
因此,提出本發(fā)明以解決上述問題。本發(fā)明的一個目的是提供一種具有音樂演奏指導(dǎo)的電子樂器,其能夠滿足用戶不僅按照指導(dǎo)的指示彈奏樂曲、還能夠帶有感情地更輕快或者更和緩地彈奏的需求。
為了實現(xiàn)上述目的,本發(fā)明的一個特征是提供一種電子樂器,包括存儲部分,用于存儲樂曲的第一部分的音樂演奏數(shù)據(jù);讀取部分,用于根據(jù)樂曲的進程從存儲部分中讀出第一部分的音樂演奏數(shù)據(jù);指示部分,用于根據(jù)讀取部分為了由用戶彈奏所讀出的第一部分的音樂演奏數(shù)據(jù),指示包括在多個音樂演奏操作元件中并且應(yīng)當由用戶操作的一個音樂演奏操作元件;設(shè)置部分,用于基于通過讀取部分讀出的第一部分的音樂演奏數(shù)據(jù),為要產(chǎn)生的每個樂音設(shè)置特定的時間時間段,來作為樂音產(chǎn)生開始允許時間段,樂音產(chǎn)生開始允許時間段早于應(yīng)當產(chǎn)生樂音的樂音產(chǎn)生時刻;音樂演奏確定部分,用于確定是否已經(jīng)在設(shè)置部分所設(shè)置的樂音產(chǎn)生開始允許時間段開始的開始時刻上或者在所述開始時刻之后正確地操作了指示部分所指示的音樂演奏操作元件;拍子跟隨部分,用于根據(jù)操作音樂演奏操作元件的時刻改變樂曲的拍子;以及暫停部分,用于在音樂演奏確定部分確定已經(jīng)在所述開始時刻上或者在所述開始時刻之后正確操作了由指示部分所指示的音樂演奏操作元件時,指示產(chǎn)生對應(yīng)于所操作的音樂演奏操作元件的樂音信號,并且當音樂演奏確定部分確定即使在所述開始時刻經(jīng)過之后也沒有在樂音產(chǎn)生時刻之前正確地操作由指示部分所指示的音樂演奏操作元件時,暫停通過讀取部分讀取第一部分的音樂演奏數(shù)據(jù),直到音樂演奏確定部分確定音樂演奏操作元件已被正確操作。
根據(jù)本發(fā)明,通過組合樂音產(chǎn)生開始允許時間段和拍子跟隨功能,電子樂器判斷用戶在樂音產(chǎn)生時刻之前的按鍵操作是否為正確的按鍵操作,并且改變再現(xiàn)樂曲的拍子,從而使拍子能夠跟隨用戶操作音樂演奏操作元件以彈奏樂曲的時刻,其中所述樂音產(chǎn)生開始允許時間段是提供在樂音產(chǎn)生時刻之前的特定時間時間段。具體來說,無論用戶早于或晚于樂音產(chǎn)生時刻按下按鍵,本發(fā)明的電子樂器均判斷用戶的按鍵操作正確,并且根據(jù)用戶的正確按鍵操作來控制樂曲的拍子。因此,本發(fā)明的電子樂器能夠滿足用戶不僅按照指導(dǎo)的指示彈奏樂曲、還能夠更輕快地彈奏或者更和緩地帶有感情地彈奏的需求。
此外,根據(jù)本發(fā)明,通過開啟或關(guān)閉拍子跟隨部分以改變樂音產(chǎn)生開始允許時間段的長度,用戶能夠更有效地練習(xí)電子樂器。通過針對拍子跟隨部分處于關(guān)閉的情況設(shè)置較短的樂音產(chǎn)生開始允許時間段,電子樂器通過以恒定的拍子在精確的時刻指示按下按鍵來指導(dǎo)用戶,從而本發(fā)明的電子樂器還可以滿足熟練程度低的用戶,其希望學(xué)習(xí)按下按鍵的時刻。對于拍子跟隨部分處于開啟狀態(tài)的情況下較長的樂音產(chǎn)生開始允許時間段,該樂音產(chǎn)生開始允許時間段越長,則允許用戶越早地按下按鍵,于是能夠以用戶期望的速度演奏音樂。
本發(fā)明的另一個特征是提供一種電子樂器,除了上述存儲部分、讀取部分、指示部分、設(shè)置部分和音樂演奏確定部分,所述電子樂器還包括操作時刻存儲部分,其用于存儲通過音樂演奏確定部分確定音樂演奏操作元件已被正確操作的該音樂演奏操作元件的操作時刻;拍子控制部分,其用于根據(jù)操作時刻存儲部分中存儲的操作時刻來控制再現(xiàn)樂曲的音樂演奏數(shù)據(jù)的拍子;切換部分,其用于將所述拍子控制部分在啟用和禁用狀態(tài)之間切換;樂音產(chǎn)生停止處理控制部分,其用于在通過切換部分將拍子控制部分設(shè)置為啟用狀態(tài)時,根據(jù)音樂演奏操作元件的完成操作來停止產(chǎn)生當前產(chǎn)生的樂音,并且在通過切換部分將拍子控制部分設(shè)置為禁用狀態(tài)時,根據(jù)第一部分的音樂演奏數(shù)據(jù)中包含的音符結(jié)束(note-off)信息來停止產(chǎn)生當前產(chǎn)生的樂音;和暫停部分,其用于在音樂演奏確定部分確定已經(jīng)在所述開始時刻上或者在所述開始時刻之后正確操作了由指示部分所指示的音樂演奏操作元件時,指示產(chǎn)生對應(yīng)于所操作的音樂演奏操作元件的樂音信號,并且當音樂演奏確定部分確定即使在所述開始時刻經(jīng)過之后也沒有在樂音產(chǎn)生時刻之前正確地操作由指示部分所指示的音樂演奏操作元件時,暫停通過讀取部分讀取第一部分的音樂演奏數(shù)據(jù),直到音樂演奏確定部分確定音樂演奏操作元件已被正確操作。
根據(jù)此特征,對于熟練程度低的用戶,通過將拍子控制部分切換為禁用狀態(tài),電子樂器將不根據(jù)用戶釋放按鍵而是根據(jù)再現(xiàn)樂曲的樂曲數(shù)據(jù)的音符結(jié)束事件來停止產(chǎn)生樂音,從而用戶可以學(xué)習(xí)各個樂音應(yīng)當彈奏多長時間。此外,由于以恒定的拍子再現(xiàn)樂曲,因此用戶可以學(xué)習(xí)應(yīng)當按下音樂演奏操作元件的時刻。此外,對于熟練程度高的用戶,通過將拍子控制部分切換為啟用狀態(tài),電子樂器將根據(jù)用戶對音樂演奏操作元件的完成操作來停止產(chǎn)生當前產(chǎn)生的樂音,也即根據(jù)用戶釋放相應(yīng)的按鍵來停止,于是用戶可以確定下一按鍵的按下時刻,從而以用戶期望的速度來彈奏樂曲。此外,具有該特征的電子樂器允許用戶確定下一樂音的按鍵時刻,并且根據(jù)用戶的按鍵時刻來計算用戶的音樂演奏拍子,從而使得跟隨計算得到的拍子來再現(xiàn)自動演奏數(shù)據(jù)的拍子。因此,具有該特征的電子樂器的用戶能夠在自由控制樂曲演奏的過程中享受快樂。
附圖說明
圖1是表示根據(jù)本發(fā)明一個實施例的電子樂器的構(gòu)造的框圖;
圖2是表示本發(fā)明的電子樂器的音樂演奏指導(dǎo)的操作的示圖;
圖3是表示本發(fā)明的電子樂器的音樂演奏指導(dǎo)的另一種操作的示圖;
圖4是表示本發(fā)明的電子樂器所使用的音樂演奏數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的示圖;
圖5A是表示本發(fā)明的電子樂器所執(zhí)行的主處理的一部分的流程圖;
圖5B是表示本發(fā)明的電子樂器所執(zhí)行的主處理的另一部分的流程圖;
圖6A是表示等待再現(xiàn)期間進行的處理的一部分的流程圖,其中該處理在通過本發(fā)明的電子樂器執(zhí)行的主處理中執(zhí)行;
圖6B是表示等待再現(xiàn)期間進行的處理的另一部分的流程圖,其中該處理在通過本發(fā)明的電子樂器執(zhí)行的主處理中執(zhí)行;
圖7A是表示本發(fā)明的電子樂器所執(zhí)行的中斷處理的一部分的流程圖;
圖7B是表示本發(fā)明的電子樂器所執(zhí)行的中斷處理的另一部分的流程圖;
圖8是表示傳統(tǒng)電子樂器的音樂演奏指導(dǎo)的操作的示圖;和
圖9是表示傳統(tǒng)電子樂器的音樂演奏指導(dǎo)的另一種操作的示圖。
具體實施方式
圖1是表示根據(jù)本發(fā)明一個實施例的電子樂器的構(gòu)造的框圖。
圖1所示的電子樂器1是鍵盤樂器,其為用戶提供指導(dǎo)以幫助用戶在電子樂器1上演奏樂曲。電子樂器1具有未示出的鍵盤,用作音樂演奏操作元件17,其由水平排列的多個分別對應(yīng)于音高名稱的白鍵和黑鍵構(gòu)成,并且涵蓋多個八度音(octave)。此外,在靠近每個白鍵和黑鍵處或者在每個按鍵內(nèi)部提供指示燈19,以指示應(yīng)當彈奏的相應(yīng)按鍵來作為音樂演奏指導(dǎo)。在演奏操作元件17和指示燈19上方提供操作面板。在操作面板上,提供由液晶顯示器構(gòu)成的面板顯示裝置22。此外在面板顯示裝置22的兩側(cè)布置發(fā)聲系統(tǒng)16的揚聲器。在面板顯示裝置22和揚聲器之間布置設(shè)置操作元件21。通過操作設(shè)置操作元件21,用戶指定要產(chǎn)生的樂音的音色和音量,并且對電子樂器1進行各種設(shè)置,例如對面板顯示裝置22上顯示的內(nèi)容進行設(shè)置的指令。設(shè)置操作元件21至少包括操作元件以及用于開始所選擇樂曲的再現(xiàn)的開關(guān),其中所述操作元件用于設(shè)置對自動彈奏樂曲以及音樂演奏指導(dǎo)的操作模式進行選擇的裝置。為電子樂器1提供的音樂演奏指導(dǎo)功能是等待再現(xiàn)。此外,在等待模式下,電子樂器1允許用戶在“啟用拍子跟隨”和“禁用拍子跟隨”之間進行切換。此外,用戶還可以禁用音樂演奏指導(dǎo)功能以選擇正常再現(xiàn),通過選擇正常再現(xiàn),禁用音樂演奏指導(dǎo)功能以不再進行指示燈的打開以及等待再現(xiàn)。
在圖1所示的電子樂器1中,CPU 10是控制電子樂器1的各個部件的動作的中央處理單元。CPU 10具有定時器13,其指示操作中經(jīng)過的時間并且以特定的間隔產(chǎn)生定時器中斷。ROM(只讀存儲器)11是非易失性存儲器,其存儲諸如音樂演奏指導(dǎo)程序和樂音產(chǎn)生程序的程序,并存儲諸如音樂演奏數(shù)據(jù)的各種數(shù)據(jù)。RAM(隨機訪問存儲器)12是易失性存儲器,其具有用于存儲音樂演奏數(shù)據(jù)和各種數(shù)據(jù)的存儲區(qū)域以及用于CPU 10的工作區(qū)域。樂音發(fā)生器14接收由CPU 10通過執(zhí)行音樂演奏指導(dǎo)程序而產(chǎn)生的樂音控制數(shù)據(jù),將所接收的樂音控制數(shù)據(jù)存儲在樂音產(chǎn)生寄存器中,根據(jù)樂音控制數(shù)據(jù)產(chǎn)生樂音,并且將所產(chǎn)生的樂音輸出至DSP(數(shù)字信號處理器)15。根據(jù)從CPU 10發(fā)送的音效參數(shù),DSP 15向樂音發(fā)生器14產(chǎn)生的樂音信號添加諸如混響、和聲、變奏和變形的各種音效。已經(jīng)通過DSP 15添加了音效的樂音信號被提供至發(fā)聲系統(tǒng)16。發(fā)聲系統(tǒng)16將樂音信號轉(zhuǎn)換成模擬樂音信號,放大該模擬樂音信號,并且從揚聲器將放大的樂音信號發(fā)出為樂音。音樂演奏操作元件接口18對由白鍵和黑鍵構(gòu)成的音樂演奏操作元件17進行掃描,以檢測被操作為按下或釋放的音樂演奏操作元件17,并且將與所檢測到的音樂演奏操作元件17有關(guān)的音符開始信息或者音符結(jié)束信息通過總線24發(fā)送至CPU 10。指示燈接口20從CPU 10接收表示了特定音樂演奏操作元件的指示燈19的打開/關(guān)閉的信息,并且根據(jù)該信息使相應(yīng)的指示燈19打開/關(guān)閉。存儲裝置23包括諸如預(yù)先集成在電子樂器1中的硬盤HD和緊致盤CD以及軟盤FD的各種存儲介質(zhì),以存儲大量的音樂演奏數(shù)據(jù)和程序。存儲裝置23還包括用于各種存儲介質(zhì)的驅(qū)動單元。
圖4指示存儲在ROM 11或存儲裝置23中的樂曲的音樂演奏數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。如圖4所示,音樂演奏數(shù)據(jù)由表示樂曲名、拍子、按鍵(key)等的頭H,旋律部分的數(shù)據(jù)D1,以及多個伴奏部分的數(shù)據(jù)構(gòu)成,所述多個伴奏部分的數(shù)據(jù)包括從伴奏部分A的數(shù)據(jù)D2到伴奏部分X的數(shù)據(jù)DX。分別代表樂器的從數(shù)據(jù)D1到數(shù)據(jù)DX的每個部分的音樂演奏數(shù)據(jù)由多個數(shù)據(jù)組形成,所述數(shù)據(jù)組根據(jù)樂曲的進程來排列并且各自由事件數(shù)據(jù)和對應(yīng)于該事件數(shù)據(jù)的時刻數(shù)據(jù)的對構(gòu)成。除了多個數(shù)據(jù)組,每個部分的音樂演奏數(shù)據(jù)還包括表示樂曲結(jié)束的結(jié)束數(shù)據(jù)。數(shù)據(jù)D1以及數(shù)據(jù)D2至DX的各個時刻數(shù)據(jù)被規(guī)定為,當彈奏樂曲時,旋律部分和伴奏部分將同時進行。事件數(shù)據(jù)包括諸如音符開始、音符編號、音符結(jié)束和速度等的各種數(shù)據(jù)。在下文將要說明的指導(dǎo)音樂演奏中,旋律部分是將被指導(dǎo)的部分,同時伴奏部分A至X是“伴奏部分”。
接下來參照圖2對本發(fā)明的電子樂器1處在帶有“拍子跟隨啟用”設(shè)置的“啟用等待”音樂演奏指導(dǎo)模式下的情況進行說明。
在圖2的頂行中,以時間順序排列了對用戶要彈奏的樂曲的自動音樂演奏數(shù)據(jù)中包含的作為指導(dǎo)部分的旋律部分的音樂演奏數(shù)據(jù)進行指示的音符。在頂行下面的一行中,以矩形來表示各個音符的音符長度。在第二行下方的一行中,以矩形表示按鍵按下的時間段,該時間段從用戶按下上述音符所對應(yīng)的按鍵到用戶釋放該按鍵為止。不過,在圖2中未示出各個音符的音符編號。圖2中,時刻t1、t2、t3、t4、t5……是各個節(jié)拍開始的時刻。具體來說,每兩個時刻之間的間隔等于一個節(jié)拍。應(yīng)當產(chǎn)生旋律部分的音樂演奏數(shù)據(jù)的第一四分音符n1的時刻為t1時刻。應(yīng)當產(chǎn)生第二四分音符n2的時刻為t2時刻。應(yīng)當產(chǎn)生第三二分音符n3的時刻為t3時刻。發(fā)出四分音符n1至二分音符n3的各個樂音長度是等于各個音符長度的長度。
在音樂演奏指導(dǎo)處于帶有“拍子跟隨啟用”設(shè)置的“啟用等待”模式的情況下,提供比“拍子跟隨禁用”設(shè)置中提供的樂音產(chǎn)生開始允許時間段Ta’長數(shù)倍的樂音產(chǎn)生開始允許時間段Ta,以使得樂音產(chǎn)生開始允許時間段Ta可以超前于圖2所示的各個音符的各個樂音產(chǎn)生時刻。用于進行音樂演奏指導(dǎo)的樂音產(chǎn)生開始允許時間段Ta等于例如四分音符的音符長度。當用戶指示開始再現(xiàn)所選擇的樂曲時,根據(jù)樂曲的進程從頂部開始順序讀出旋律部分的數(shù)據(jù)D1。在這種情況下,具體來說,讀出作為頂部旋律音符的四分音符n1的時刻數(shù)據(jù)和事件數(shù)據(jù),從而在相比t1時刻早樂音產(chǎn)生開始允許時間段Ta的t01時刻打開指示與四分音符n1的音高對應(yīng)的按鍵的指示燈19,t1時刻是基于定時器13和時刻數(shù)據(jù)所指示的絕對時間而設(shè)置的樂音產(chǎn)生時刻。假設(shè)用戶在早于樂音產(chǎn)生時刻t1的t1’時刻按下了由指示燈19所指示的按鍵。在按下按鍵后,指示燈19關(guān)閉,同時樂音發(fā)生器14開始根據(jù)四分音符n1的事件數(shù)據(jù)在t1’時刻產(chǎn)生該音高的旋律音,并保持產(chǎn)生該旋律音直至按鍵被釋放,同時讀出表示下一旋律音的四分音符n2的時刻數(shù)據(jù)和事件數(shù)據(jù)以準備對四分音符n2的音樂演奏指導(dǎo)。與四分音符n1的旋律音同時地,順序讀出對應(yīng)于此旋律音的伴奏部分(具體來說,是包含在伴奏部分A至X中并且處在從此旋律音開始彈奏的時刻直到下一旋律音開始彈奏的時刻的事件數(shù)據(jù)),以根據(jù)通過樂音發(fā)生器14讀取的數(shù)據(jù)產(chǎn)生伴奏音。
于是,將相比四分音符n1的按鍵時刻t1’晚一個節(jié)拍的t20時刻定義為應(yīng)當產(chǎn)生四分音符n2的時刻。因此,在比t20時刻早樂音產(chǎn)生開始允許時間段Ta的t02時刻,指示與四分音符n2的樂音對應(yīng)的按鍵的指示燈19打開,以針對四分音符n2進行音樂演奏指導(dǎo)。假設(shè)用戶在早于樂音產(chǎn)生時刻t20的t2’時刻按下了指示燈19所指示的按鍵。與上述情況類似,在按下該按鍵后,指示燈19關(guān)閉,同時樂音發(fā)生器14開始在t2’時刻產(chǎn)生由四分音符n2的事件數(shù)據(jù)所指示的音高的旋律音,并保持產(chǎn)生該旋律音直至按鍵釋放。同時讀出作為下一旋律音的二分音符n3的時刻數(shù)據(jù)和事件數(shù)據(jù),以準備對二分音符n3進行音樂演奏指導(dǎo)。如上文所述,根據(jù)自動演奏數(shù)據(jù)的進程,指示與各個音符的音高對應(yīng)的按鍵的指示燈19根據(jù)各個音符的時刻數(shù)據(jù)在比各個樂音產(chǎn)生時刻早樂音產(chǎn)生開始允許時間段Ta的時刻打開,以對各個音符進行音樂演奏指導(dǎo)。
假設(shè)用戶在比樂音產(chǎn)生時刻t30早的t3’時刻根據(jù)對二分音符n3的音樂演奏指導(dǎo)按下了與指示燈19所指示的二分音符n3對應(yīng)的按鍵。與上述情況類似,在按下該按鍵后,指示燈19關(guān)閉,同時樂音發(fā)生器14開始在t3’時刻產(chǎn)生由二分音符n3的事件數(shù)據(jù)所指示的音高的旋律音,并保持產(chǎn)生該旋律音直至按鍵釋放。同時讀出下一旋律音的時刻數(shù)據(jù)和事件數(shù)據(jù),以準備對下一旋律音進行音樂演奏指導(dǎo)。與旋律音的產(chǎn)生同時地,順序讀出對應(yīng)于此旋律音的伴奏部分的數(shù)據(jù),以根據(jù)通過樂音發(fā)生器14讀取的數(shù)據(jù)產(chǎn)生伴奏音。
根據(jù)自動演奏數(shù)據(jù)的進程,隨后順序讀出旋律部分的數(shù)據(jù)D1以進行與上文所述相似的處理,從而當讀出結(jié)束數(shù)據(jù)時完成該樂曲的指導(dǎo)音樂演奏。由于電子樂器1設(shè)置為“拍子跟隨啟用”設(shè)置,因此自動演奏的拍子將被控制為跟隨用戶在鍵盤上彈奏樂曲的速度。不過在圖2的情況下,用戶的速度大致與自動演奏的拍子相同。因此在圖2的情況下,自動演奏的拍子很少改變。
接下來參照圖3對本發(fā)明的電子樂器1處在帶有“拍子跟隨啟用”設(shè)置的“啟用等待”音樂演奏指導(dǎo)模式下的情況中的拍子跟隨的細節(jié)進行說明。
在圖3的情況下,用戶已經(jīng)選擇了不同的樂曲作為要彈奏的樂曲。在圖3的頂部,以時間順序排列了對樂曲的自動音樂演奏數(shù)據(jù)中包含的作為指導(dǎo)部分的旋律部分的音樂演奏數(shù)據(jù)進行指示的音符。在頂行下面的一行中,以長矩形來表示各個音符的音符長度。在第二行下方的一行中,以長矩形表示按鍵按下的時間段,該時間段的每一個從用戶按下上述音符所對應(yīng)的按鍵到用戶釋放該按鍵為止。不過在圖3中未示出各個音符的音符編號。圖3中,時刻t1、t2、t3、t4……是各個節(jié)拍開始的時刻。具體來說,每兩個時刻之間的間隔等于一個節(jié)拍。應(yīng)當產(chǎn)生自動演奏數(shù)據(jù)的第一四分音符n10的時刻是t1時刻。應(yīng)當產(chǎn)生第二四分音符n11的時刻是t2時刻。應(yīng)當產(chǎn)生第三四分音符n12的時刻是t3時刻。應(yīng)當產(chǎn)生第四四分音符n13的時刻是t4時刻。四分音符n10的音符長度為ta1。四分音符n11的音符長度為ta2。四分音符n12的音符長度為ta3。四分音符n13的音符長度為ta4。因為音符n10至n13均為四分音符,因此音符長度ta1至ta4均具有相同的長度。
如圖2所示,在音樂演奏指導(dǎo)是帶有“拍子跟隨啟用”設(shè)置的“啟用等待”模式的情況下,提供超前于各個音符的樂音產(chǎn)生時刻的樂音產(chǎn)生開始允許時間段Ta。不過,圖3中未示出樂音產(chǎn)生開始允許時間段Ta。當用戶指示開始再現(xiàn)所選擇的樂曲時,根據(jù)樂曲的進程從頂部開始順序讀出旋律部分的數(shù)據(jù)D1。在這種情況下,具體來說,讀出作為頂部旋律音符的四分音符n10的時刻數(shù)據(jù)和事件數(shù)據(jù),從而在相比t1時刻早樂音產(chǎn)生開始允許時間段Ta的時刻打開指示與四分音符n10的音高對應(yīng)的按鍵的指示燈19,t1時刻是基于定時器13和時刻數(shù)據(jù)所指示的絕對時間而設(shè)置的樂音產(chǎn)生時刻。假設(shè)用戶識別了打開的指示燈,從而用戶在t1時刻按下了指示燈所指示的按鍵,并在比音符長度ta1短的時間段tb1內(nèi)保持按下該按鍵。由于t1時刻晚于指示燈的打開,因此判斷用戶的按鍵操作正確。于是指示燈19關(guān)閉,同時樂音發(fā)生器14開始在t1時刻產(chǎn)生由四分音符n10的事件數(shù)據(jù)所指示的音高的旋律音,并且在時間段tb1內(nèi)保持產(chǎn)生該旋律音,時間段tb1在按鍵釋放時結(jié)束,同時表示下一旋律音的四分音符n11的時刻數(shù)據(jù)和事件數(shù)據(jù)被讀出,以準備對四分音符n11進行音樂演奏指導(dǎo)。與四分音符n10的旋律音的產(chǎn)生同時地,順序讀出對應(yīng)于此旋律音的伴奏部分的數(shù)據(jù),以根據(jù)通過樂音發(fā)生器14讀取的數(shù)據(jù)產(chǎn)生伴奏音。在這種情況下,產(chǎn)生樂音的時間段tb1比四分音符n10的音符長度短。
假設(shè)指示與下一旋律音的四分音符n11的音高對應(yīng)的按鍵的指示燈19在比相比用戶按下音符n10的t1時刻晚一個節(jié)拍的時間點早樂音產(chǎn)生開始允許時間段Ta的時刻打開,于是用戶在t12時刻按下與指示燈19指示的四分音符n11對應(yīng)的按鍵,并在短于四分音符n11的音符長度ta2的時間段tb2內(nèi)保持按下該按鍵。在按下按鍵后,指示燈19關(guān)閉,同時樂音發(fā)生器14開始在t12時刻產(chǎn)生由四分音符n11的事件數(shù)據(jù)指示的音高的旋律音,并且在結(jié)束于按鍵釋放的時間段tb2內(nèi)保持產(chǎn)生該旋律音。同時讀出對應(yīng)于此旋律音的伴奏部分的數(shù)據(jù),從而樂音發(fā)生器14根據(jù)所讀取的數(shù)據(jù)產(chǎn)生伴奏音。在這種情況下,產(chǎn)生該樂音的時間段tb2比四分音符n11的音符長度ta2短。此外為了允許拍子跟隨,電子樂器1檢測對應(yīng)于四分音符n10的按鍵的按下時刻t1和對應(yīng)于四分音符n11的按鍵的按下時刻t12之間的時間間隔,以基于檢測到的時間間隔通過后文將說明的方式計算拍子,從而以計算得到的拍子讀出下一音樂演奏數(shù)據(jù)。換句話說,電子樂器1根據(jù)正確的按鍵之間的時間間隔在每次正確的按鍵處改變拍子。如上文所述,電子樂器1提供根據(jù)用戶的音樂演奏速度而控制的拍子跟隨,讀出下一旋律音的四分音符n12的時刻數(shù)據(jù)和事件數(shù)據(jù)以準備對四分音符n12進行音樂演奏指導(dǎo)。
假設(shè)用戶隨后在t13時刻按下由指示燈19指示的對應(yīng)于四分音符n12的按鍵,并且在比四分音符n12的音符長度ta3長的時間段tb3內(nèi)保持按下該按鍵。在按下按鍵后,指示燈19關(guān)閉,同時樂音發(fā)生器14開始在t13時刻產(chǎn)生由四分音符n12的事件數(shù)據(jù)指示的音高的旋律音,并且在結(jié)束于按鍵釋放的時間段tb3內(nèi)保持產(chǎn)生該旋律音。同時讀出對應(yīng)于此旋律音的伴奏部分的數(shù)據(jù),從而樂音發(fā)生器14根據(jù)所讀取的數(shù)據(jù)產(chǎn)生伴奏音。在這種情況下,產(chǎn)生該樂音的時間段tb3比四分音符n12的音符長度ta3長。此外為了允許拍子跟隨,電子樂器1檢測對應(yīng)于四分音符n11的按鍵的按下時刻t12和對應(yīng)于四分音符n12的按鍵的按下時刻t13之間的時間間隔,以基于檢測到的時間間隔通過后文將說明的方式計算拍子,從而以計算得到的拍子讀出下一音樂演奏數(shù)據(jù)。如上文所述,電子樂器1根據(jù)正確的按鍵之間的時間間隔在每次正確的按鍵處改變拍子。隨后,電子樂器1讀出下一旋律音的四分音符n13的時刻數(shù)據(jù)和事件數(shù)據(jù)以準備對四分音符n13進行音樂演奏指導(dǎo)。
假設(shè)用戶隨后在t14時刻按下由指示燈19指示的對應(yīng)于四分音符n13的按鍵,并且在比四分音符n13的音符長度ta4短的時間段tb4內(nèi)保持按下該按鍵。在按下按鍵后,指示燈19關(guān)閉,同時樂音發(fā)生器14開始在t14時刻產(chǎn)生由四分音符n13的事件數(shù)據(jù)指示的旋律音,并且在結(jié)束于按鍵釋放的時間段tb4內(nèi)保持產(chǎn)生該旋律音。同時讀出對應(yīng)于此旋律音的伴奏部分的數(shù)據(jù),從而樂音發(fā)生器14根據(jù)所讀取的數(shù)據(jù)產(chǎn)生伴奏音。在這種情況下,產(chǎn)生該樂音的時間段tb4比四分音符n13的音符長度ta4短。此外為了允許拍子跟隨,電子樂器1檢測對應(yīng)于四分音符n12的按鍵的按下時刻t13和對應(yīng)于四分音符n13的按鍵的按下時刻t14之間的時間間隔,以基于檢測到的時間間隔通過后文將說明的方式計算拍子,從而以計算得到的拍子讀出下一音樂演奏數(shù)據(jù)。
在根據(jù)本發(fā)明的電子樂器1設(shè)置為“拍子跟隨啟用”音樂演奏指導(dǎo)的情況下,如上文所述,電子樂器1根據(jù)每次正確按鍵之間的間隔在各次正確的按鍵處改變拍子。換句話說,電子樂器1根據(jù)用戶彈奏樂曲的速度來改變等于樂曲的自動演奏的一個節(jié)拍的拍子。
在本發(fā)明的電子樂器1處于帶有“拍子跟隨啟用”設(shè)置的“啟用等待”音樂演奏指導(dǎo)模式的情況下,如上文所述,電子樂器1在相比對圖2所示的用戶要彈奏的樂曲的音樂演奏數(shù)據(jù)進行表示的音符的各個樂音產(chǎn)生時刻早的時間點處提供樂音產(chǎn)生開始允許時間段Ta,該樂音產(chǎn)生開始允許時間段Ta是針對拍子跟隨禁用設(shè)置提供的樂音產(chǎn)生開始允許時間段Ta’的數(shù)倍。此外如圖3所示,電子樂器1根據(jù)用戶彈奏樂曲的速度改變節(jié)拍的長度,該節(jié)拍的長度等于樂曲的自動音樂演奏的拍子。因此,本發(fā)明的電子樂器1能夠滿足用戶不僅按照音樂演奏指導(dǎo)的指示進行簡單彈奏、還能夠更輕快地以及更和緩而有感情地彈奏的需求。在這種情況下,即使用戶輕快地彈奏,電子樂器1也允許產(chǎn)生用戶彈奏的音符,而不將用戶的按鍵判斷為錯誤。因此,電子樂器1不僅使得用戶的音樂演奏聽起來自然,還為用戶提供滿足按照期望控制樂曲演奏的感受。
本發(fā)明的電子樂器提供的音樂演奏指導(dǎo)被設(shè)計為,如果由指示燈19指示的按鍵在樂音產(chǎn)生時刻時仍未被按下,則電子樂器1進入上述等待狀態(tài)以暫停讀取下一音樂演奏數(shù)據(jù),直到用戶按下了由指示燈19指示的按鍵。
在電子樂器1處在不帶“拍子跟隨”的“啟用等待”音樂演奏指導(dǎo)模式的情況下,在對用戶彈奏的樂曲的音樂演奏數(shù)據(jù)進行表示的各個音符的樂音產(chǎn)生時刻之前提供樂音產(chǎn)生開始允許時間段Ta’。禁用“拍子跟隨”情況下的樂音產(chǎn)生開始允許時間段Ta’非常短,例如32分音符的音符長度。另外在此設(shè)置中,電子樂器1將不根據(jù)用戶彈奏樂曲的速度來改變拍子,所述拍子決定了樂曲自動演奏的一個節(jié)拍的長度。這是因為禁用“拍子跟隨”的設(shè)置主要用于用戶希望學(xué)習(xí)精確的按鍵時刻的情況。
圖5A和圖5B是本發(fā)明的電子樂器1的CPU 10所執(zhí)行的主處理的流程圖。圖6A和圖6B是該主處理中在等待再現(xiàn)期間執(zhí)行的處理的流程圖,同時圖7A和圖7B是CPU 10所執(zhí)行的中斷處理的流程圖。
下面將參照圖5A至圖7B所示的流程圖對本發(fā)明的電子樂器1的操作進行說明。
在本發(fā)明的電子樂器1啟動時,CPU 10開始如圖5A和圖5B所示的主處理,以在步驟S10中初始化電子樂器1。初始化包括設(shè)置樂音發(fā)生器14的初始音色以及清空RAM 12中的各種寄存器。另外,將音樂演奏指導(dǎo)重置為初始狀態(tài)。該初始狀態(tài)是例如不帶有“拍子跟隨”的“啟用等待”音樂演奏指導(dǎo)。不過,用戶可以通過在面板顯示裝置22上調(diào)出設(shè)置屏幕并且通過操作設(shè)置操作元件21來選擇用戶期望的狀態(tài),以根據(jù)期望來設(shè)置音樂演奏指導(dǎo)的初始狀態(tài)。
對于主處理的步驟S11至S27,當在電子樂器1上針對樂器演奏操作了音樂演奏操作元件17、設(shè)置操作元件21等的任何一個時,執(zhí)行對應(yīng)于該操作的處理。此外,在電子樂器1的電源處于開啟狀態(tài)時,步驟S11至S27重復(fù)執(zhí)行。當按下任意一個音樂演奏操作元件17時,音樂演奏操作元件接口18對音樂演奏操作元件17進行掃描,以檢測按鍵事件。CPU 10在步驟S11確定已有按鍵被按下,并進入步驟S12。在步驟S12,CPU 10執(zhí)行處理以開始產(chǎn)生對應(yīng)于所按下按鍵的音高的樂音。當任意一個音樂演奏操作元件17被釋放時,音樂演奏操作元件接口18對音樂演奏操作元件17進行掃描以檢測釋放事件。然后CPU 10在步驟S13確定已有按鍵被釋放,并進入步驟S14。在步驟S14,CPU 10執(zhí)行處理以停止產(chǎn)生對應(yīng)于所按下按鍵的音高的樂音。
當設(shè)置操作元件21中包括的等待模式開關(guān)被操作時,CPU 10在步驟S15確定等待模式開關(guān)已被操作,并進入步驟S16。在步驟S16,CPU 10將當前狀態(tài)在開啟與關(guān)閉之間反轉(zhuǎn),以重寫等待模式標志的值。在操作之前等待模式已經(jīng)處于開啟狀態(tài)的情況下,CPU 10將等待模式標志置為關(guān)閉。在操作之前等待模式已經(jīng)處于關(guān)閉狀態(tài)的情況下,CPU 10將等待模式標志置為開啟。當對設(shè)置操作元件21進行操作以選擇樂曲時,CPU 10在步驟S17確定已經(jīng)進行了選擇樂曲的操作,并進入步驟S18。在步驟S18,準備所選擇的樂曲來作為要再現(xiàn)的樂曲,將該樂曲的數(shù)據(jù)存儲在RAM 12中提供的用于再現(xiàn)的樂曲寄存器中。即使用戶試圖在樂曲再現(xiàn)期間選擇樂曲,用戶選擇樂曲的操作也將被拒絕,因為電子樂器1被設(shè)計為在樂曲再現(xiàn)期間不允許任何選擇樂曲的操作。
當設(shè)置操作元件21中包括的拍子跟隨設(shè)置開關(guān)被操作時,CPU 10在步驟S19確定拍子跟隨設(shè)置開關(guān)已被操作,并進入步驟S20。在步驟S20,CPU 10將拍子跟隨設(shè)置的當前狀態(tài)在開啟與關(guān)閉之間反轉(zhuǎn),以重寫拍子跟隨設(shè)置標志的值。在拍子跟隨設(shè)置開關(guān)的操作之前拍子跟隨設(shè)置標識已經(jīng)處于開啟狀態(tài)的情況下,CPU 10將拍子跟隨設(shè)置標志置為關(guān)閉。在拍子跟隨設(shè)置開關(guān)的操作之前拍子跟隨設(shè)置標志已經(jīng)處于關(guān)閉狀態(tài)的情況下,CPU 10將拍子跟隨設(shè)置標志置為開啟。在步驟S20之后,CPU 10進入步驟S21,改變樂音產(chǎn)生開始允許時間段Ta的持續(xù)時間。然后CPU 10在步驟S22切換停止樂音產(chǎn)生的方式。在步驟S21和S22,在步驟S20中已經(jīng)將拍子跟隨設(shè)置標志反轉(zhuǎn)為開啟狀態(tài)從而具有“拍子跟隨啟用”設(shè)置的情況下,CPU 10在步驟S21將用于等待再現(xiàn)的樂音產(chǎn)生開始允許時間段變?yōu)橄挛膶⒁f明的用于拍子跟隨啟用設(shè)置的預(yù)定樂音產(chǎn)生開始允許時間段(允許時間#2)。允許時間#2是例如等于四分音符的音符長度的較長的樂音產(chǎn)生開始允許時間段Ta。此外,在步驟S22,CPU 10不是將樂音產(chǎn)生停止的時刻改變成相應(yīng)的音樂演奏數(shù)據(jù)的音符結(jié)束時刻,而是變?yōu)榘存I釋放的時刻。在已經(jīng)在步驟S20中將拍子跟隨設(shè)置標志反轉(zhuǎn)為關(guān)閉狀態(tài)從而具有“拍子跟隨禁用”設(shè)置的情況下,CPU 10在步驟S21將樂音產(chǎn)生開始允許時間段改變?yōu)橛糜谂淖痈S禁用設(shè)置的預(yù)定樂音產(chǎn)生開始允許時間段(允許時間#1)。允許時間#1比允許時間#2短,例如是等于32分音符的音符長度的較短的樂音產(chǎn)生開始允許時間段Ta’。此外,在步驟S22,CPU 10不是將樂音產(chǎn)生停止的時刻改變?yōu)榘存I釋放時刻,而是變?yōu)榕c釋放的按鍵對應(yīng)的音樂演奏數(shù)據(jù)的音符結(jié)束時刻。
當進行開始樂曲再現(xiàn)的操作時,CPU 10在步驟S23確定已經(jīng)進行開始樂曲再現(xiàn)的操作,并進入步驟S24。在步驟S24,CPU 10對電子樂器1當前是否處于等待模式進行確定。在等待模式標志的當前狀態(tài)為開啟狀態(tài)從而處于“啟用等待”模式的情況下,CPU 10進入S26。在等待模式標志的當前狀態(tài)為關(guān)閉狀態(tài)從而處于“禁用等待”模式的情況下,CPU 10進入S25。在步驟S25,CPU 10開始對準備用于再現(xiàn)的樂曲進行開始正常再現(xiàn)的處理。通過開始正常再現(xiàn)的處理,CPU 10重置存儲于樂曲再現(xiàn)寄存器中的用于樂曲再現(xiàn)的計數(shù)器,開始如圖7A和圖7B所示的中斷處理,并設(shè)置再現(xiàn)標志,從而在中斷處理中可以確定正在正常再現(xiàn)樂曲。此外,將用于再現(xiàn)的樂曲設(shè)置為中斷處理中將要處理的目標樂曲,其中將樂曲中記錄的拍子設(shè)置為再現(xiàn)時使用的拍子。電子樂器1被設(shè)計為即使在樂曲再現(xiàn)期間完成了開始樂曲再現(xiàn)的操作,也將在步驟S23中忽略該操作,從而禁止開始樂曲再現(xiàn)的操作。樂曲再現(xiàn)中使用的計數(shù)器以對應(yīng)于所設(shè)置拍子的速度進行計數(shù),同時音樂演奏數(shù)據(jù)的自動演奏根據(jù)該再現(xiàn)計數(shù)器的計數(shù)值前進。因此,自動音樂演奏前進的速度隨設(shè)置的拍子而變化。
在步驟S26,CPU 10開始用于再現(xiàn)的樂曲的等待再現(xiàn)的處理。在開始等待模式的再現(xiàn)的處理中,CPU 10重置再現(xiàn)計數(shù)器,開始如圖7A和圖7B所示的中斷處理,并設(shè)置再現(xiàn)標志,從而在中斷處理中可以確定樂曲正以等待模式進行再現(xiàn)。此外,將用于再現(xiàn)的樂曲設(shè)置為中斷處理中將被處理的目標樂曲,其中將樂曲中記錄的拍子設(shè)置為用于再現(xiàn)的拍子,從而指定旋律部分的第一音樂演奏數(shù)據(jù)的指導(dǎo)開始時刻(音符開始)。具體來說,CPU 10根據(jù)按照拍子跟隨設(shè)置標志的當前設(shè)置(開啟/關(guān)閉)而設(shè)置的樂音產(chǎn)生開始允許時間段(#1:允許時間Ta’或者#2:允許時間Ta)來指定指導(dǎo)開始時刻。在步驟S26之后,CPU 10進行如圖6A和6B所示的在樂曲的等待再現(xiàn)期間進行的處理。在等待再現(xiàn)期間,CPU 10持續(xù)進行該處理而不返回圖5A和圖5B的主處理,直到指示CPU 10終止等待再現(xiàn)。當指示CPU 10終止等待再現(xiàn)時,CPU 10返回圖5A和圖5B的主處理以進入步驟S27。在步驟S27,CPU 10進行諸如在面板顯示裝置22上進行顯示處理的面板處理和其它處理。
如上文所述,只要電子樂器1的電源處于開啟狀態(tài),則重復(fù)執(zhí)行由步驟S11至S27形成的主處理,于是用戶對電子樂器1的操作將使CPU 10執(zhí)行與該操作對應(yīng)的處理。
在等待模式處于開啟狀態(tài)的情況下,當對樂曲再現(xiàn)開始開關(guān)進行操作以開始對選擇用于再現(xiàn)的樂曲進行再現(xiàn)時,如圖5A和圖5B所示的主處理所示,執(zhí)行如圖6A和圖6B所示的等待再現(xiàn)期間的處理。
在等待再現(xiàn)期間執(zhí)行的處理中,在步驟S30確定拍子跟隨設(shè)置標志是否處于開啟狀態(tài)。在確定拍子跟隨設(shè)置標志處于關(guān)閉狀態(tài)的情況下,也即,在拍子跟隨禁用設(shè)置的情況下,重復(fù)執(zhí)行由步驟S31至S40形成的等待再現(xiàn)處理。在確定拍子跟隨設(shè)置標志處于開啟狀態(tài)的情況下,也即,在拍子跟隨啟用設(shè)置的情況下,重復(fù)執(zhí)行由步驟S43至S57形成的等待再現(xiàn)處理。
在拍子跟隨設(shè)置標志處于關(guān)閉狀態(tài)的情況下,當用戶按下音樂演奏操作元件17時,音樂演奏操作元件接口18檢測到按鍵事件。通過該檢測,在步驟S31確定已經(jīng)按下了按鍵,于是CPU 10進入步驟S32。在步驟S32,確定當前是否處在樂音產(chǎn)生開始允許時間段。處于樂音產(chǎn)生開始允許時間段表明當前正在提供指導(dǎo),即,指示燈已經(jīng)在比應(yīng)當演奏當前處理的旋律音的正確時刻早樂音產(chǎn)生開始允許時間段Ta’(允許時間#1)的時刻打開,并且繼續(xù)打開。如果當前正在提供指導(dǎo),則確定當前處在樂音產(chǎn)生開始允許時間段,并進入步驟S33。如果當前沒有提供指導(dǎo),則確定當前并未處在樂音產(chǎn)生開始允許時間段,以跳過步驟S33至S39。這是因為在未提供指導(dǎo)時按下按鍵會被認為是錯誤的按鍵。因此不對這種按鍵進行處理。
在步驟S33,確定用戶按下按鍵的音高是否與音樂演奏指導(dǎo)所指示的旋律音的音高相匹配。在用戶按下了音樂演奏指導(dǎo)所指示的音高的按鍵時,將該按鍵操作判定為正確的按鍵操作,并進入步驟S34以開始產(chǎn)生此旋律音。在用戶按下了與音樂演奏指導(dǎo)所指示的按鍵不同的按鍵時,將該按鍵操作判定為錯誤的按鍵操作,以跳過步驟S34至S39,不執(zhí)行產(chǎn)生與該按鍵對應(yīng)的樂音的處理。在步驟S34的樂音產(chǎn)生開始處理中,CPU 10將此旋律音的樂音控制數(shù)據(jù)發(fā)送至樂音發(fā)生器14,于是樂音發(fā)生器14開始根據(jù)該樂音控制數(shù)據(jù)產(chǎn)生此旋律音。在步驟S34之后,由于正確的按鍵操作,對應(yīng)于此旋律音的按鍵的指示燈在步驟S35關(guān)閉,以終止對此旋律音的指導(dǎo)。
在步驟S36,CPU 10設(shè)置讀取與此旋律音對應(yīng)的伴奏部分,同時CPU 10將對應(yīng)于此旋律音的伴奏部分的頂部移動至此旋律音的樂音產(chǎn)生開始時刻。然后CPU 10進入步驟S37以將再現(xiàn)計數(shù)器的值改變?yōu)榈扔诖诵梢舻臉芬舢a(chǎn)生開始時刻的值。具體來說,在步驟S37,CPU 10將用于圖7A和圖7B所示的中斷處理中的再現(xiàn)計數(shù)器的值變?yōu)橄啾却诵梢舻臉芬舢a(chǎn)生開始時刻早一個時鐘的值,從而可以在伴奏部分已經(jīng)在步驟S36被移動到的時刻成功再現(xiàn)該伴奏部分。在步驟S37之后,CPU 10進入步驟S38以讀出下一旋律音的樂音產(chǎn)生開始時刻,從而允許暫停再現(xiàn)。具體來說,步驟S38是將自動音樂演奏數(shù)據(jù)的進度被暫停的時刻替換為新的值的步驟,也即用下一旋律音的樂音產(chǎn)生開始時刻來替換。如果下一旋律音未被彈奏,則該步驟是必要的,以便在該下一旋律音的樂音產(chǎn)生時刻處暫停當前旋律音的伴奏。在步驟S39,CPU 10將相比下一旋律音的樂音產(chǎn)生開始時刻早樂音產(chǎn)生開始允許時間段Ta’的時刻設(shè)置為開始指導(dǎo)的時刻。用在步驟S39中的樂音產(chǎn)生開始允許時間段Ta’是較短的允許時間#1,因為拍子跟隨設(shè)置標志處于關(guān)閉狀態(tài)。
在拍子跟隨設(shè)置標志處于關(guān)閉狀態(tài)時,當CPU 10檢測到用戶操作等待再現(xiàn)停止開關(guān),或者當CPU 10檢測到再現(xiàn)樂曲的再現(xiàn)進度到達了樂曲末尾(到達結(jié)束位置),CPU 10在步驟S40確定指示電子樂器1終止等待再現(xiàn)。然后CPU 10進入步驟S41以終止等待再現(xiàn)。在終止等待再現(xiàn)的處理之后,CPU 10返回主處理的步驟S27。
即使在拍子跟隨設(shè)置標志處于關(guān)閉狀態(tài)的設(shè)置中釋放音樂演奏操作元件17,電子樂器1也不停止產(chǎn)生與所釋放按鍵對應(yīng)的旋律音。具體來說,在拍子跟隨設(shè)置標志處于關(guān)閉狀態(tài)的情況下,電子樂器1不是在釋放按鍵的時刻(在該時刻已經(jīng)指示開始產(chǎn)生旋律音)停止產(chǎn)生當前產(chǎn)生的旋律音,而是當自動演奏進行到讀出了再現(xiàn)樂曲中包含的旋律音的音符結(jié)束數(shù)據(jù)時停止。
在拍子跟隨設(shè)置標志處于開啟狀態(tài)的情況下,當用戶按下音樂演奏操作元件17時,音樂演奏操作元件接口18檢測到按鍵事件。通過該檢測,在步驟S43確定已經(jīng)按下了按鍵,于是CPU 10進入步驟S44。在步驟S44,確定當前是否處在樂音產(chǎn)生開始允許時間段。處于樂音產(chǎn)生開始允許時間段表明當前正在提供指導(dǎo),即,指示燈已經(jīng)在比應(yīng)當演奏該旋律音的正確時刻早樂音產(chǎn)生開始允許時間段Ta(允許時間#2)的時刻打開,并且繼續(xù)打開。如果當前正在提供指導(dǎo),則確定當前處在樂音產(chǎn)生開始允許時間段,并進入步驟S45。如果當前沒有提供指導(dǎo),則確定當前并未處在樂音產(chǎn)生開始允許時間段,以跳過步驟S45至S53。這是因為在未提供指導(dǎo)時按下按鍵會被認為是錯誤的按鍵。因此不對這種按鍵進行處理。
在步驟S45,確定用戶按下按鍵的音高是否與音樂演奏指導(dǎo)所指示的旋律音的音高相匹配。在用戶按下了具有音樂演奏指導(dǎo)所指示的音高的按鍵時,將該按鍵操作判定為正確的按鍵操作,并進入步驟S46以開始產(chǎn)生此旋律音。在用戶按下了與音樂演奏指導(dǎo)所指示的按鍵不同的按鍵時,將該按鍵操作判定為錯誤的按鍵操作,以跳過步驟S46至S53,不執(zhí)行產(chǎn)生與該按鍵對應(yīng)的樂音的處理。在步驟S46的樂音產(chǎn)生開始處理中,CPU 10將此旋律音的樂音控制數(shù)據(jù)發(fā)送至樂音發(fā)生器14,于是樂音發(fā)生器14開始根據(jù)該樂音控制數(shù)據(jù)產(chǎn)生此旋律音。在步驟S46之后,由于正確的按鍵操作,對應(yīng)于此旋律音的按鍵的指示燈在步驟S47關(guān)閉,以終止對此旋律音的指導(dǎo)。
在步驟S48計算拍子。作為拍子計算的示例,檢測正確按鍵之間的時間間隔,并用檢測到的時間除以對應(yīng)音樂演奏數(shù)據(jù)的音符長度,以獲得每個節(jié)拍的時間長度。對之前的兩個音符各自進行這種計算以獲得每個節(jié)拍的時間長度,從而得到作為拍子的平均時間長度值,該拍子將用于讀取下一音樂演奏數(shù)據(jù)。在步驟S49,將當前拍子變?yōu)樯鲜霁@得的拍子。在步驟S50,CPU 10設(shè)置讀取對應(yīng)于此旋律音的伴奏部分,同時CPU 10將對應(yīng)于此旋律音的伴奏部分頂部移動至此旋律音的樂音產(chǎn)生開始時刻。然后CPU 10進入步驟S51以將再現(xiàn)計數(shù)器的值改變?yōu)榈扔诖诵梢舻臉芬舢a(chǎn)生開始時刻的值。具體來說,在步驟S51,CPU 10將用于圖7A和圖7B所示的中斷處理中的再現(xiàn)計數(shù)器的值變?yōu)橄啾却诵梢舻臉芬舢a(chǎn)生開始時刻早一個時鐘的值,從而可以在伴奏部分已經(jīng)在步驟S50中被移動到的時刻成功再現(xiàn)該伴奏部分。在步驟S51之后,CPU 10進入步驟S52以讀出下一旋律音的樂音產(chǎn)生開始時刻,從而允許暫停再現(xiàn)。具體來說,步驟S52是將自動音樂演奏數(shù)據(jù)的進度被暫停的時刻替換為新的值的步驟,也即用下一旋律音的樂音產(chǎn)生開始時刻來替換。在下一旋律音未被彈奏的情況下該步驟是必要的,以便在該下一旋律音的樂音產(chǎn)生時刻暫停伴奏。然后CPU 10進入步驟S53,以設(shè)置下一旋律音的指導(dǎo)開始時刻。在步驟S53,CPU 10將相比下一旋律音的樂音產(chǎn)生開始時刻早當前所設(shè)樂音產(chǎn)生開始允許時間段Ta的時刻設(shè)置為開始指導(dǎo)的時刻。用在步驟S53中的樂音產(chǎn)生開始允許時間段Ta是較長的允許時間#2,因為拍子跟隨設(shè)置標志處于開啟狀態(tài)。
在拍子跟隨設(shè)置標志處于開啟狀態(tài)的情況下,當用戶釋放音樂演奏操作元件17時,音樂演奏操作元件接口18檢測到按鍵釋放事件。通過此檢測,在步驟S54確定存在按鍵釋放,于是CPU 10進入步驟S55。在步驟S55,確定是否正在產(chǎn)生與用戶釋放的按鍵具有相同音高的旋律音。在正在產(chǎn)生與釋放的按鍵具有相同音高的旋律音的情況下,在步驟S56停止旋律音的樂音產(chǎn)生。
在拍子跟隨設(shè)置標志處于開啟狀態(tài)時,當CPU 10檢測到用戶操作等待再現(xiàn)停止開關(guān),或者當CPU 10檢測到再現(xiàn)樂曲的再現(xiàn)進度到達了樂曲末尾(到達結(jié)束位置)時,CPU 10在步驟S57確定指示電子樂器1終止等待再現(xiàn)。然后CPU 10進入步驟S58以終止等待再現(xiàn)。在終止等待再現(xiàn)的處理之后,CPU 10返回主處理的步驟S27。
接下來對圖7A和圖7B所示的中斷處理進行說明,該中斷處理開始于音樂演奏數(shù)據(jù)的每個定時時鐘。相對一個定時時鐘的時間長度隨著再現(xiàn)樂曲的拍子而變。具體來說,當通過等待再現(xiàn)期間執(zhí)行的處理中的步驟S49改變拍子時,中斷處理的開始之間的時間間隔也隨改變的拍子而變。
當圖7A和圖7B所示的中斷處理開始時再現(xiàn)標志表明正在正常再現(xiàn)樂曲時,在步驟S60確定正在正常再現(xiàn)樂曲,于是在步驟S61更新再現(xiàn)計數(shù)器的值。在步驟S61,再現(xiàn)計數(shù)器的值加1。在用于對音樂演奏數(shù)據(jù)的定時時鐘數(shù)進行計數(shù)的再現(xiàn)計數(shù)器的值進行更新的步驟之后,在要再現(xiàn)的樂曲包括將在與再現(xiàn)計數(shù)器的更新值匹配的時刻處理的音樂演奏數(shù)據(jù)的情況下,在步驟S62確定旋律部分或者伴奏部分具有應(yīng)當處理的音樂演奏數(shù)據(jù)。在步驟S63,不區(qū)分旋律部分和伴奏部分,對此時刻應(yīng)當處理的所有部分的音樂演奏數(shù)據(jù)進行處理。在步驟S63,根據(jù)旋律部分和伴奏部分的相應(yīng)音樂演奏數(shù)據(jù)進行各種處理,例如產(chǎn)生樂音、停止產(chǎn)生樂音、改變音量和音色。盡管CPU 10從步驟S63進行到S64,CPU 10由于正常的樂曲再現(xiàn)而在步驟S64給出“否”,并且終止中斷處理。
在當圖7A和圖7B所示的中斷處理開始時再現(xiàn)標志表明正在等待模式下再現(xiàn)樂曲的情況下,CPU 10在步驟S60給出“否”,并進入步驟S64。在步驟S64,確定正在等待模式下再現(xiàn)樂曲。在步驟S65,確定用戶是否沒有按下正確的按鍵,從而錯過了音樂演奏指導(dǎo)指示為用戶應(yīng)當按下按鍵的旋律音的正確樂音產(chǎn)生時刻。具體來說,如果再現(xiàn)計數(shù)器的值到達了比旋律音的正確樂音產(chǎn)生時刻早一個時鐘的點,則CPU 10給出“是”。如果再現(xiàn)計數(shù)器的值尚未到達該點,則CPU 10給出“否”。在確定再現(xiàn)計數(shù)器值已經(jīng)到達該點的情況下,終止中斷處理,于是再現(xiàn)計數(shù)器的計數(shù)值停在比正確的樂音產(chǎn)生時刻早一個時鐘的值處。當按下正確的按鍵時,再現(xiàn)計數(shù)器恢復(fù)計數(shù)。換句話說,通過按下正確的按鍵,用戶應(yīng)當按下的旋律音被下一旋律音替換,同時用于進行比較的正確的樂音產(chǎn)生時刻也被下一旋律音的樂音產(chǎn)生開始時刻替換。因此,認為再現(xiàn)計數(shù)器的值尚未到達新的樂音產(chǎn)生時刻。
在步驟S65中確定再現(xiàn)計數(shù)器值尚未經(jīng)過按鍵時刻的情況下,CPU 10進入步驟S66,將再現(xiàn)計數(shù)器值加1以更新再現(xiàn)計數(shù)器值。在拍子跟隨設(shè)置標記為關(guān)閉狀態(tài)的情況下,在步驟S67確定拍子跟隨設(shè)置標記處于關(guān)閉狀態(tài),然后進入步驟S68。在步驟S68,確定再現(xiàn)計數(shù)器值是否到達了當前設(shè)置的指導(dǎo)開始的時刻。如果確定計數(shù)器值到達該時刻,則CPU 10進入步驟S69,以打開其音高對應(yīng)于用戶應(yīng)當下一個按下的下一個旋律音的音高的按鍵的指示燈。然后CPU 10進入步驟S70以清除當前設(shè)置指導(dǎo)的開始時刻。如果在步驟S68確定再現(xiàn)計數(shù)器值尚未到達當前設(shè)置指導(dǎo)開始的時刻,則跳過步驟S69、S70。在拍子跟隨設(shè)置標記處于關(guān)閉狀態(tài)的情況下,并且在步驟S71中確定旋律部分具有應(yīng)當在此時刻處理的音符結(jié)束事件,則CPU 10在步驟S72停止產(chǎn)生相應(yīng)的旋律音。在步驟S71中確定旋律部分不具有任何應(yīng)當在此時刻處理的音符結(jié)束事件的情況下,跳過步驟S72。
在拍子跟隨設(shè)置標記處于關(guān)閉狀態(tài)的情況下,并且在步驟S73中確定伴奏部分具有表示應(yīng)當在此時刻處理的音符開始事件或音符結(jié)束事件的音樂演奏數(shù)據(jù),CPU 10進入步驟S74以根據(jù)伴奏部分的相應(yīng)音樂演奏數(shù)據(jù)產(chǎn)生或停止伴奏音。如上文所述,與正常再現(xiàn)的情況相同,CPU 10連續(xù)執(zhí)行伴奏部分的自動演奏的處理。在步驟S73中確定伴奏部分不具有表示應(yīng)當在此時刻處理的音符開始事件或音符結(jié)束事件的任何音樂演奏數(shù)據(jù)的情況下,跳過步驟S74。
在拍子跟隨設(shè)置標記為開啟狀態(tài)的情況下,在步驟S67確定拍子跟隨設(shè)置標記處于開啟狀態(tài),然后進入步驟S76。在步驟S76,確定再現(xiàn)計數(shù)器值是否到達當前設(shè)置的指導(dǎo)開始的時刻。如果確定計數(shù)器值到達了該時刻,則CPU 10進入步驟S77,以打開其音高對應(yīng)于用戶下一個應(yīng)當按下的下一個旋律音的音高的按鍵的指示燈。然后CPU 10進入步驟S78以清除該指導(dǎo)的開始時刻。如果在步驟S76確定再現(xiàn)計數(shù)器值尚未到達當前設(shè)置指導(dǎo)開始的時刻,則跳過步驟S77、S78。在拍子跟隨設(shè)置標記處于開啟狀態(tài)的情況下,并且在步驟S79中確定伴奏部分具有表示應(yīng)當在此時刻處理的音符開始事件或音符結(jié)束事件的音樂演奏數(shù)據(jù),CPU 10進入步驟S80以根據(jù)伴奏部分的相應(yīng)音樂演奏數(shù)據(jù)產(chǎn)生或停止伴奏音。如上文所述,與正常再現(xiàn)的情況相同,CPU 10連續(xù)執(zhí)行伴奏部分的自動演奏的處理。在步驟S79中確定伴奏部分不具有表示應(yīng)當在此時刻處理的音符開始事件或音符結(jié)束事件的任何音樂演奏數(shù)據(jù)的情況下,跳過步驟S80。
在拍子跟隨設(shè)置標記為開啟狀態(tài)的情況下,即使旋律部分具有應(yīng)當在此時刻處理的音符結(jié)束事件,也不停止相應(yīng)的旋律音。在拍子跟隨設(shè)置標記為開啟狀態(tài)的情況下,通過等待再現(xiàn)期間執(zhí)行的上述處理,CPU 10響應(yīng)于按鍵的釋放來停止與釋放按鍵對應(yīng)的旋律音。
在步驟S64中確定再現(xiàn)標志表明沒有在等待模式下再現(xiàn)樂曲的情況下,在步驟S65中確定用戶錯過了應(yīng)當按下按鍵的時刻的情況下,以及在步驟S74或S80完成的情況下,均終止中斷處理以返回中斷處理之前的處理。
如上文所述,本發(fā)明的電子樂器1被設(shè)計為,當用戶在禁用等待模式下按下按鍵時,開始產(chǎn)生具有分配給所按下按鍵的音高的樂音(主處理的步驟S12),而通過釋放按鍵來停止產(chǎn)生具有分配給所按下按鍵的音高的樂音(主處理的步驟S14)。此外在電子樂器1上,當再現(xiàn)用于再現(xiàn)的樂曲時,通過中斷處理的步驟S61至S63來進行樂曲的正常再現(xiàn)。
在電子樂器1處于帶有“拍子跟隨設(shè)置禁用”設(shè)置的等待模式的情況下,通過中斷處理的步驟S68到S70的處理,指示燈在比用于再現(xiàn)的樂曲的旋律音的音符開始時刻早樂音產(chǎn)生開始允許時間段(允許時間#1)的時間點打開。當用戶在樂音產(chǎn)生開始允許時間段內(nèi)按下了正確的按鍵時,產(chǎn)生當前指導(dǎo)的旋律音,并關(guān)閉指示燈(等待再現(xiàn)期間進行的步驟S32至S39的處理)。即使按鍵被釋放,也不停止具有分配給按鍵的音高的樂音。具體來說,分配給按鍵的音高的樂音的產(chǎn)生在旋律音的音符結(jié)束時刻停止(中斷處理的步驟S71、S72)。在用戶未按下正確按鍵的情況下,重復(fù)等待再現(xiàn)期間的處理步驟S31至S40,以等待用戶按下正確按鍵。在等待按下正確按鍵的期間,再現(xiàn)計數(shù)器的值停留在前一個時鐘的值(中斷處理的步驟S65)。因此,如果用戶在等待按下正確按鍵期間按下了按鍵,則認為用戶的按鍵操作是是允許時間段內(nèi)的按鍵操作(等待再現(xiàn)期間的處理步驟S32)。在用戶按下的按鍵為正確按鍵的情況下,產(chǎn)生當前指導(dǎo)的旋律音,并關(guān)閉指示燈(等待再現(xiàn)期間的處理步驟S33至S39)。在上述音樂演奏指導(dǎo)模式下,電子樂器1在允許時間#1的樂音產(chǎn)生開始允許時間段內(nèi)等待,直到用戶按下正確的按鍵,其中允許時間#1小于允許時間#2。因此,對于希望學(xué)習(xí)應(yīng)當在何時按下按鍵的熟練程度低的用戶,本發(fā)明的處于上述音樂演奏指導(dǎo)模式的電子樂器1能夠提供用戶應(yīng)當按下按鍵的精確時刻。
在電子樂器1處于帶有“拍子跟隨設(shè)置啟用”設(shè)置的等待模式的情況下,通過中斷處理的步驟S76到S78的處理,指示燈在比用于再現(xiàn)的樂曲的旋律音的音符開始時刻早樂音產(chǎn)生開始允許時間段(允許時間#2)的時間點打開。當用戶在樂音產(chǎn)生開始允許時間段內(nèi)按下了正確的按鍵時,產(chǎn)生當前指導(dǎo)的旋律音,并關(guān)閉指示燈(等待再現(xiàn)期間進行的步驟S44至S47的處理)。此外,根據(jù)正確按鍵之間的時間間隔以及對應(yīng)音樂演奏數(shù)據(jù)的音符長度,計算拍子以將樂曲的拍子變?yōu)橛嬎愕呐淖?等待再現(xiàn)期間的處理步驟S48至S49)。當按鍵釋放時,停止產(chǎn)生分配給所釋放按鍵的音高的樂音(等待再現(xiàn)期間的處理步驟S54至S56)。在用戶未按下正確按鍵的情況下,重復(fù)進行等待再現(xiàn)期間的處理步驟S43至S57,以等待用戶按下正確按鍵。在等待按下正確按鍵期間,再現(xiàn)計數(shù)器的值停留在前一個時鐘的值(中斷處理的步驟S65)。因此,如果用戶在等待按下正確按鍵期間按下了按鍵,則認為用戶的按鍵操作是是允許時間段內(nèi)的按鍵操作(等待再現(xiàn)期間的處理步驟S44)。在用戶按下的按鍵為正確按鍵的情況下,產(chǎn)生當前指導(dǎo)的旋律音,并關(guān)閉指示燈(等待再現(xiàn)期間的處理步驟S45至S53)。在上述音樂演奏指導(dǎo)模式下,電子樂器1在允許時間#2的樂音產(chǎn)生開始允許時間段內(nèi)等待,直到用戶按下正確的按鍵,其中允許時間#2大于允許時間#1。因此,本發(fā)明的處于上述音樂演奏指導(dǎo)模式的電子樂器1允許用戶按下按鍵以產(chǎn)生樂音,即使尚未到達產(chǎn)生樂音的時刻也不將該按鍵操作視為錯誤按鍵。
在本發(fā)明的上述電子樂器中,樂音產(chǎn)生開始允許時間段的切換與拍子跟隨設(shè)置的開關(guān)切換相鏈接。不過,電子樂器可以設(shè)計為允許用戶獨立地僅改變樂音產(chǎn)生開始允許時間段。通過例如提供樂音產(chǎn)生開始允許時間段設(shè)置開關(guān),電子樂器可以通過開關(guān)的每次操作在允許時間#1和允許時間#2之間切換。
盡管本發(fā)明的提供音樂演奏指導(dǎo)的電子樂器是鍵盤樂器,但該電子樂器不限于此實施例,而是可以應(yīng)用于具有音樂演奏操作元件的各種電子樂器。
另外,在本發(fā)明中,指示燈提供在按鍵附近或者按鍵內(nèi)部以實現(xiàn)指示功能。不過本發(fā)明的指示功能不限于該實施例,而是可以通過軟件在顯示裝置上顯示的鍵盤圖樣或者樂譜上進行指示來實現(xiàn)。此外,通過在外部連接的個人計算機上顯示指示,或者在外部連接的具有指示燈的樂器上顯示指示,可以在外部裝置上實現(xiàn)本發(fā)明的指示功能。
對于上述允許時間#1的設(shè)置,可以將允許時間#1(Ta’)設(shè)置為零,因為可以在精確的時刻提供音樂演奏指導(dǎo),以幫助用戶學(xué)習(xí)正確的時刻。不過,實際上在用戶感知指示燈以及用戶按下相應(yīng)按鍵之間存在很小的時滯。因此,優(yōu)選使得允許時間#1等于此時滯。對于允許時間#2的設(shè)置,優(yōu)選使得允許時間#2較長,從而用戶能夠自由彈奏樂曲。不過,如果允許時間#2過長(例如對旋律音的指導(dǎo)開始于提前一個小節(jié)(bar)以上的時間點),則對旋律音的指導(dǎo)不得不在甚至前一樂音出現(xiàn)之前開始,而這會破壞指導(dǎo)的感受。因此,優(yōu)選允許時間#2的長度適當。例如,可以靈活設(shè)置允許時間#2,例如使允許時間#2等于具有很多十六分音符的快歌的十六分音符的音符長度,以及使允許時間#2等于具有很多二分音符和全音符的慢歌的二分音符的音符長度。
此外,本發(fā)明的拍子計算方法不限于上述拍子計算,而是可以通過僅拾取緊接在前的樂音,將按鍵之間的時間間隔除以樂音的音符長度以得到每個節(jié)拍的時間長度,從而將所得的時間長度用作讀取下一數(shù)據(jù)的拍子。針對每個樂音進行這種計算可以容易地進行拍子的突然改變。此外,可以基于彈奏幾個樂音的時間總和來計算拍子。例如,通過將彈奏前一小節(jié)的數(shù)據(jù)的時間除以4,可以獲得用作下一小節(jié)的拍子的每個節(jié)拍的長度?;蛘撸梢葬槍γ總€樂音確定按鍵操作是否早于正確時刻。具體來說,在按鍵操作比正確時刻早的情況下,可以以預(yù)定的速率加快拍子。在按鍵操作比正確時刻晚的情況下,可以以預(yù)定的速率減慢拍子。這種控制能夠?qū)ε淖舆M行逐漸的加速和減速,從而為用戶提供自然適當?shù)呐淖涌刂啤?/p>