音樂遊戲怎麼能讓生成的音符與音樂節奏對應?


對於這個問題,現在的音樂遊戲開發程度只能讓題主失望了。

osu!作為現今全球最大的節奏遊戲社區,擁有20萬首以上的歌曲,60萬個以上的難度(圈內稱為Beatmap,中文為圖,做圖者叫Mapper),但是我可以跟你打包票,這其中99%以上的圖都是Mapper們一個音符一個音符地手打進去的。

The Quick Brown Fox - Gotsta Terrify (mapped by Smoothie)

為什麼不用代碼分析節奏然後自動生成呢?因為代碼缺乏創造力。純靠代碼分析的音樂遊戲也不是沒有,比如曾經在國外火過的Audiosurf。

玩過這個遊戲的同學應該就能感覺到,很多時候程序分析出來的Note並沒有排在正確的節拍上,而且Note之間的協調性也不理想,變化也少。 @侯帥英 你要是覺得這樣的遊戲好玩那你還不能被稱為節奏遊戲玩家。

還有Android上火過的BEAT MP3

只能說我玩DJ Max Ray或者Tap Sonic或者PC上的DJ Max,Mania都快玩膩了,你做成這個樣子讓我有什麼動力去玩?還有一個HTML5寫的節奏遊戲Demo實驗(Chrome Experiments),現在網站已經掛了,我當時玩過,覺得還有點意思,至少節奏的分析比Audiosurf要精確。沒記錯的話應該是用的Charles J. Cliffe.寫的JS庫cjcliffe/beatdetektor · GitHub

但是正如我說的,代碼終究還只是停留在工具層面,真正的創造性要由人來完成。引用Arthur Koestler的話來講就是:

人與機器最大的區別在於,機器只能通過固定的行為模式對外部環境做出反應;而人卻能創造出新的行為模式去適應不同的環境。

我喜歡收集各種各樣的osu! Beatmap,然後去發現一些有趣的有創造性的東西。像前幾年突然冒出來的2B Style,就是利用了osu!的一些判定機制而做的非常規圖,代表作有:

IOSYS - Endless Tewi-ma Park (mapped by Lanturn)

這圖真能玩!我現在能96%ACC吧,只是最後一個Spin是絕殺,還沒見過有人生還。

還有一些圖對音樂的詮釋非常到位,Notes的放置非常獨特,玩起來特別帶感,比如fanzhen0019的圖:

Nekomata Master+ - Funny shuffle (mapped by fanzhen0019)

DDRKirby寫的一個系列的網頁節奏遊戲也是玩得我欲罷不能,注意這些遊戲中的音樂基本都是他原創的

Ripple Runner Deluxe

Labyrinth

Rain

還有老牌的Jubeat、最近火著的Cytus、Deemo……這些真正好玩的音樂遊戲都不是用代碼隨隨便便就能生成出來的,只有作者傾注了心血去創作才能夠讓玩家體驗到快樂。說白了就是能夠讓喜歡音樂的人相互之間產生共鳴,而不是將快樂僅僅建立在商業運作、軟體設計上面。音樂是沒有界限的藝術,音樂遊戲也不應該設有過多的限制,而是應該將更多的空間留給音樂愛好者們去自由發揮,這樣得到的結果往往會更好。

以上。

=========跑題了,以下才是正確回答=========

題主問如何讓音符與節奏對應。這的確需要代碼來幫助,有一些軟體啊演算法啊可以做到給它一個音頻文件然後它就能把節奏點全部找出來,比如Ableton Live:

軟體自動識別好節拍點,然後與工程項目的拍號和BPM對齊。這種功能對於DJ來說再重要不過了,否則每個Sample都得手動切片不得累死。

但是osu!的作者畢竟不是學信號處理的,對這些演算法研究不深,所以osu!的原裝做圖編輯器是不帶分析節奏的功能的。不過他倒是用最傳統的Tapping方式來計算曲子的Tempo。

Mapper根據曲子的節奏去點那個按鈕,然後程序計算你點擊的平均速度來決定Tempo和Offset。這個辦法雖然很土,但是也並不麻煩。一般的曲子的Tempo都是整數的,所以很快就能定下來。如果不是整數的話可以拉後一點看看偏移量多少再做微調,或者分段重設一個Tempo。至於微調offset,osu!的編輯器提供低至25%的慢速播放,可以很精確地調整offset,當然這對Mapper的節奏感要求也很高。好的Mapper本身都是好的Player,所以做這些工作其實壓力不大。

設置好節奏與拍號後,你使用編輯器放置的Notes就會自動Snap到精準的時間點上,不需要每個Note都手動調整,這一點還是可以做到的。

為了再更進一步說明更複雜的節奏處理,我舉一個最極端的例子。

DM Ashura - deltaMAX (mapped by Sprosive)

這首曲子是均衡變速,在1分44秒內從100BPM不停地加速到573BPM,這對於Mapper的Tempo調整來說是個非常大的挑戰,如果用編輯器打開這張圖,你會看到密密麻麻的變速標記:

為了跟音樂的節拍對上號這些Tempo的值都不是整數,這些都是Mapper進行微調改進過的,為的就是讓玩家能夠打得更爽。

這種工作其實是可以交給程序來完成的,但是我目前還沒見到有可以將Ableton Live的節奏標記導出的工具。而且導出後也不是Tempo的值,還得進行二次計算或者手動調整把實際的Tempo計算出來。再說這樣的曲子100首裡頭都很難找到一首,就算有這樣的工具也很少會用到吧。

(之前嘗試給演奏實錄的曲子作圖,BPM對齊是個很大的問題,於是寫了個 REAPER 腳本能把節拍標記直接導出成 .osu 文件,有興趣的同學可以試試,代碼在這 Export Timing Points to OSU.py )

不過回頭想想,就算是在這麼苛刻的做圖環境中Mapper們的產量還是那麼巨大,這究竟是為什麼呢?其實原因很簡單,因為熱愛。Mapper一般都拿自己喜歡的曲子來做圖,一個好的Mapper會得到很多人的支持,這也相當於是對自己喜歡事物的一種肯定,當然會繼續做下去啦。要知道一張Ranked的圖是要被人上萬人玩幾十萬到幾百萬次的,看著這種數字一個Mapper的心情可想而知。

所以說,要做好音樂遊戲,最主要的不是你的技術有多強大,而是你自己就有一顆熱愛音樂,喜歡節奏的心。只有這樣你的作品才能形成一個生態體系,將志同道合的人都吸引在你身邊,一起為自己所愛的東西做出力所能及的貢獻。


遊戲製作,但凡涉及到「手感」、「打擊感」、「畫面與節奏的同步感」等等感性領域的細節問題,是會有一些只有大略範圍的指導思路、但無法準確理論化、有點玄學的處理方法。最終落實下來就是要靠手動微調。

某些人請不要秉承著(自以為)很工程師的思維,跨界回答一些非本專業的問題,甚至試圖找到某種大一統的流水線化演算法解決方案,你以為是在做敏捷開發、在做速食罐頭加工嗎?


自VOS/Canmusic 和Doremi 之後,沒有原Midi 或者XM 格式的譜面已經令這成為了一個謎題。

本來遊戲市場比較純粹,商業歌曲的授權不多,像早期的BM5K / 7K 基本上是可以拿到工程文件做note 對應的。

但現在玩家對key 音和準度的要求不高,以前的功夫在現在看來就不那麼重要了。

基本上有一隊像OSU! BAT 的高玩檢查一下就可以了。


題主最好還是在做遊戲的同時開發一套做譜器吧

音頻分析和智能note排布真想搞不是不能搞只是真的有那麼多精力去做嗎?


1、有什麼方法或工具可以根據音樂的節奏或是鼓點生成對應的下落的音符?——沒有。或者即使有,這樣的譜面也粗糙到讓玩家無法忍受。老實的把這個技能點點起來,或者找有製作經驗的人來幫你。

2、不會純粹是在製作音符生成的腳本時根據耳朵去聽然後自己憑感覺決定吧?——真的是,即使你有midi譜在手,這也是效率最高的方式。因為照搬原譜未必就是最為「可玩」的方式。大多數的音樂遊戲曲,你把各種音軌都扔進去都只會把絕大多數玩家嚇跑,在製作譜面時幾乎一定是有其選擇性的。(例如IIDX DMT的較低難度關卡)

3、買二贈一的怎麼做。

a. Timing。確定這首曲子的BPM、offset(僅適用於非變BPM曲,但這已經至少涵蓋95%的曲目了),明確這兩個參數後你就能把握這首歌每個節奏點出現的時間,讓他們有一一對應的關係。拿osu的編輯器舉個例子:

這樣你就知道擺在某個「節拍」上的音符對應的是某個「時間點」。

b、Mapping。儘管密度、位置、key音之類的都有一定講究,但在具體操作上,幾乎完全是根據做譜者的個人意願來搞的,也有所謂的風格差異。另外,在不同難度間一定會有區分,這些你都只能通過人工而不是電腦來搞定。(或至少,做工粗糙到難有可玩性)這部分可以說的比較細,但從題目來看我覺得只點到「基本必須人工」就可以了。

c、測試和調整。大部分的Mapper本身都具備一定的打圖能力,或者也可以找水平較高的玩家來測試,對不合理的部分調整(包括了與音樂相性不太好的部分,或者難度太突兀的部分),最後打好包。

4、那有些「自動」的是怎麼做出來的?——其實現在的技術,Timing基本可以自動化了(直接讀取音樂文件,準確率可觀,但有些歌自己比較噁心,就需要調整。比較糟的就是有些軟體這個部分都很差,那就沒法玩了),然後簡單的辦法是根據重音(對於沒怎麼玩過音游的人來說,1拍或2拍一音完全足夠了)來下節拍。玩家可以達到「跟著節奏打拍子」的目的,但和設計優良的音游,玩家感受還是有比較大的距離。


只想說扔個音樂進去就能自動生成譜面的「遊戲」只不過就是為了能讓你聽歌的時候不會感覺太無聊罷了,隨便玩玩就行了就別真當是音樂遊戲了。就算是正經音樂遊戲里人寫的譜面還有時候會出來稀奇古怪的譜子呢,電腦隨機生成的譜子最多能把節奏對準了,譜面長什麼樣可就沒準了。

另外說到「彈鋼琴」一樣的音樂遊戲的話,以前KONAMI出過一個叫keyboardmania的遊戲

視頻封面Keyboardmania II 全曲鑑賞 part3視頻嗯大概這樣


關於你的問題 我的一個回答已經答過了 希望能對你有用:)

像『勁樂團』那樣的音樂節奏遊戲是怎麼做的? - 陳迪飛的回答


以下專業回答來自台灣雷亞音樂遊戲製作人 Gulu:

Gulu照片沒找到,回頭找到貼上來。。。。。。

-------------------我是專業答案-------------------

音樂遊戲不外乎最重要的就是音樂與拍點的完美結合,生成遊戲中能夠被運用的音符,我們往往會利用BPM音樂速度單位與音樂齊頭齊尾的數位樂器介面的MIDI檔案來去定位這些音符,以確保它能和音樂是同步的。

對於有變速便拍的歌曲,也必須由作曲家提供完整的變速資訊,才能夠進行編制,這點是非常重要的。


自動作譜是不可能的事情,記住這句話。

不是說機器不能做出譜,而是做出又難又好玩的譜,換言之,能被認為能玩的譜,必須要有人工參與。

什麼?你說你不打算走核心路線啊,那好了你就無所謂了,憑絕對音感就行。順便判定一定要寬,以175ms最佳(某亞公司遊戲的玩家不要罵我)。

生成譜面的話首先是對準節奏,這個可以通過分析波形測定bpm然後就可以確保note找得到節奏點

哦,順帶一提,世界上存在著變速曲,這個時候你要手動分段並測定。

視頻封面MAX測試視頻視頻

Δmax,一個極端的例子,bpm從100開始每一個小節上升1一直到573,這種曲子按照 @侯帥英 的那個自動作譜作出來一定歪得要命,大部分測bpm的工具一遇到變速曲就吃鱉

有了bpm,理論上你可以隨機地放置四分音,八分音,只要保證這首歌旋律密集的地方note也密集,沒啥旋律的地方別放一堆note就好。對就是這麼簡單,對於不少高速密集曲來說,你就是鋪滿16分音也可以強行和鼓點對上的。

以上就是如何製作一個看上去沒那麼不堪的音游的方法。

然後就是下一個問題,彈鋼琴。

至於要做出彈鋼琴的感覺,這個就難一些了,首先你要考慮你的這個遊戲的軌道數量夠不夠。

這是一個很重要的問題,比如說四軌道的遊戲就很難有彈鋼琴的感覺。不然的話一個有五個音符的樂句你就已經敗了。這個時候你就要重新考慮你的編譜思路

節奏應該採用什麼,這個就看難度了,低難度的一般只有主旋律和部分特別明顯的鼓點,高難度除了主旋律還要有和弦加鼓點,但都是有選擇性的,就算是最難的歌也沒有把所有音軌都扔給玩家的。

然後再根據你要採用的節奏點對應的旋律(是主旋律還是伴奏還是鼓點等等)去考慮note的排列,這個就看一下鋼琴是怎麼彈的,你就大概怎麼排就可以。(不過一般都需要簡化,不如把一個和弦簡化為一個按鍵這種。)

另外為了增加彈鋼琴的感覺可以考慮加入key音,從原來的曲子里把需要的音扣出來讓玩家在對應的時機按下相應的鍵來發出音效從而產生演奏的感覺。這個工程量就比較大了。基本你需要這首歌的源文件,midi到音源都要有。

然後有人提到用midi做譜也是可以的,vos這個遊戲就是通過機器把midi轉化為譜。不過那就不是按照音樂生成了。 機器對聲音的理解就目前來說,和人類完全不同。


一個音符對應一個音頻文件或者一段音頻。。。全部需要手動設置。。。


我就用做過兩張譜子的經驗來回答這個問題吧。

音樂遊戲怎麼能讓生成的音符與音樂節奏對應?

首先用工具查看一首歌曲的BPM(Beats per Minute),知道每分鐘有多少拍子以後,就可以算出每拍子間隔的時間是多少了。

比如一首曲子的BPM是180,1分鐘是60000毫秒,我們就用60000/180=333ms。

常見的曲子都是4/4拍,即以四分音符為一拍,一小節四拍。八分音符十六分音符也可以算出來。

按例子一個小節就是333.33*4=1332ms。

這樣只要確定了第一個小節的時間點,後面的拍子就只要依次加上去就行了。

不會純粹是在製作音符生成的腳本時根據耳朵去聽然後自己憑感覺決定吧?

還真是根據耳朵去聽的2333,不過是在拍子的基礎上一個一個小節的去排列。說實話大部分曲子抓個主旋律並不困難(也不可能把所有樂器都排進去),只有鼓點特別密或者在用特殊音符的情況下才會出現聽十幾遍怎麼排都不對的情況。

有什麼方法或工具可以根據音樂的節奏或是鼓點生成對應的下落的音符?

自動生成應該不難,按我前面說的計算用電腦都可以實現。

但更需要用心的部分是在譜面的設計上面,要做出適當難度而且手感好的譜子並不是一件容易的事,主要是靠自己的遊戲經驗和作譜經驗,這也是題主所說的電腦自動生成譜面不能帶來的東西。自動生成的譜子往往不是太難就是太簡單,破壞了遊戲性。


這個應該是只能通過人耳去聽,然後對軌了。不過,記錄這些用來點擊的音符應該是使用一種類似midi的思路,這樣能夠記住位置和時間,然後用軟體來進行讀取。

直接拿midi譜估計也不行,因為還需要考慮人的手速等問題,然後製作不同難度等

就拿本人比較喜歡的一款類似遊戲,騰訊出品的節奏大師來說,裡面的每一種音樂都有三種難度,而且每一種難度還對應4、5、6鍵。而且這個4~6鍵還不是很簡單的一種映射關係,偶爾會出現4、5鍵某一部分非常不同的情況,這也說明,此類遊戲應該沒有什麼捷徑,只能是通過程序員自己去聽,然後設計音符塊的出現位置以及出現方式等等,然後去調試難度。

另外,題主可以試試下面兩款軟體,獲得些啟發:

synthesia

miditrail:


我實在是很驚訝這個問題裡面居然全都是回答手動調的......

如果是十首以內的樂曲,手動調還OK。如果是20首,30首呢?如果用戶想用自己的音樂來替代遊戲自帶的音樂,像Beat Hazard或者Audio Surf那樣呢?

很遺憾我不得不反對所有的回答。

樓主問的是:想知道有什麼方法或工具可以根據音樂的節奏或是鼓點生成對應的下落的音符,我只是回答了他這個問題而已。他的需求就這麼簡單,根本不涉及到什麼譜面的問題,你們連他的需求都沒搞清楚,瞎反對個啥?

那麼問題來了:學挖掘機....哦不對,到底如何自動生成節拍和note?

ESSENTIA | Open-source C++ library for audio analysis and audio-based music information retrieval

不用謝,我叫紅領巾。


N年前Win98上有一款叫做VOS的韓國音樂遊戲,可以根據MIDI文件中的信息來生成不同樂器的音軌的,只要給它一個MIDI文件,它就能做出能彈的關卡來,還能選擇要彈奏的樂器和難度。

現在的音樂遊戲就比這個要複雜多了,像Guitar Hero之類的,都需要樂隊配合提供樂譜,或者是直接參与錄音,再一首一首地做出來。


瀉藥

手機上答的,就只提供個思路,之後用電腦了再補充。

音游想玩出彈鋼琴的感覺是嗎?這種遊戲已經有了,叫音炫瘋。

至於怎麼做出來,你可以先找一首曲子,找出他的鋼琴譜,鋪子上的所有音符全換成note,這樣絕對有彈鋼琴的感覺。

至於做note,用個MIDI所有的小節線都標出來了,用你自己音游的制譜系統往裡面填note好了


看到這個我就滾進來了,知乎第一個答案。我沒有這塊的專業知識,只是碰巧知道點什麼,輕噴。

實際上還真有這樣的遊戲----Android平台上的Full of Music 。這個應用能分析手機中的音樂然後自動生成一個下落式的音樂遊戲。

具體原理我也不清楚,反正大部分情況下拍子還是比較準的,我只是提供一個完成的樣本。

我是手殘黨,分數什麼的別在意。


這種音游的製作是非常見仁見智的,最主要取決於你是要做的精細化還是流水線化,因為音樂的存在本身就是一門藝術,姑且不去考慮遊戲的實現形式(O2、Osu!、Jubeat、太鼓等等遊戲模式),對於一般的音游來說,最核心的部分就是究竟採用本身音頻文件中的哪個音、哪些音、哪種樂器等等問題,這些的確定是不可能流水線化實現的,就像你不可能讓一台機器去分辨《我的滑板鞋》與《加州旅館》究竟哪個更好聽一樣,因為在機器的眼裡,他們只是存在形式不同的波形文件而已,不存在好壞的概念。這也就是為什麼很多音游中不光要提及音樂的基本信息,也要提到音游文件製作者(我習慣稱為譜師/Noter),他們為一款音游進行開發的經驗就在於他們會清楚具體到哪個音是不是應該使用,使用的方式又是怎樣(點/面),同時在遊戲風格相差不大的情況下,這種經驗是可以通用的。

如果還是想使用自動拾取的方式來產生note,那現在其實已經有了很多這樣的具體實現,但是總體而言反響都非常一般,因為質量跟人為製作的就是不一樣,壓音不準,該取的音未取這種事情實在是太多了。道理也很簡單,我們可以用機器給我們畫出各種各樣尺寸標準的施工示意圖,但我們仍然無法讓機器自行創作出能讓大部分人類接受的藝術作品。


不才曾參與過某音樂遊戲的核心工作,這遊戲當時還是挺受歡迎的,感覺還是有點資格來說幾句。

要說自動用軟體生成音符,

答案當然是可以的,也並不複雜,程序通過分析波形的峰值或有規律的頻段,

是可以找到其中的規律所在,並生成可使用的音符。

但程序生成的音符是比較模糊,並且「」絕對理性「」的,

所以「娛樂性」較差,就像一碗面做好了你想提取出裡面的鹽分一樣困難。

2016年的今天,

音頻業界最目前最牛逼的Celemony Melodyne DNA技術也不曾達到讓人滿意的精確程度。

想要具備音樂本身的「娛樂性「,

」」基本還是要靠人來手動編寫啦(要不網上的NOTER大觸們就沒有存在的必要了對吧),

實際上首先要懂一點音序器與音樂製作及時間軸的基本原理吧

(如BPM與標準唱片工業製作的關係)。


沒做過,不過猜想應該是可以通過音軌來捕捉大概,然後加以節奏限制來微調出準確的值,然後就是表現了。

如果說要分難度,那就只能手動去設定那些點需要擊打,用什麼方式擊打,延長類之類的,這些都是細節了。

參考同類型遊戲,相信很快就得出方法。


之前用手機玩初音的時候自製過PV(未完成…),譜子的話,跟著節奏按圈圈/叉叉/方塊/三角就弄出來了


MIDI是曲譜所以可以生成遊戲中的音符,

但是如果是音頻的話,就相當於從音頻中提取特定樂器的聲音,很難。

所以製作精良些的音樂遊戲都是有人製作曲子對應的遊戲樂譜的


推薦閱讀:

優秀的音樂遊戲應該更注重節奏還是手速?
音樂遊戲是判定更重要還是combo更重要?
音樂遊戲如何保證歌曲難度評級的合理性?
beatmania1048是什麼?掐蜜是什麼?
音樂遊戲的選曲應該要有匹配遊戲的特色嗎?

TAG:遊戲 | 遊戲開發 | 音樂遊戲MusicGame | 節奏遊戲RhythmGame |