我已經在android上做了一些簡單的應用程序,並認爲是時候更復雜一些了。所以,我認爲我會嘗試一些已經存在的東西,但是從頭開始構建它。
這個想法是創建一個應用程序,允許用戶通過按下顯示屏上的虛擬鍵來彈奏鋼琴。但我不知道如何去綜合每個音符的聲音,最好是將每個音符的副本存儲在文件中,還是有一種動態合成音符和和絃的動態方式。
我已經與C++合作,所以NDK的東西也沒關係。 感謝您的幫助。如何在android/java中合成鋼琴聲音
4
A
回答
2
聲音播放(越區切換緩衝器)幾乎必須被從Android的Java API
合成可以在本機或Java來完成,取它優選完成。
短的(未壓縮的)樣本可以重複播放,但您可能也想要一個攻擊瞬變。也許你可以有一個攻擊,一個延續和釋放,只要關鍵失效就重複延續。理想情況下,每個樣本應該是其基本組成部分的整數個週期,以便在維持或持續衰減的攻擊之間切換時不會出現瞬態。
我確定你可以在FM或其他合成器的某個地方找到代碼......這個你可能想要在一個本地庫中實現,它將緩衝區轉交給java代碼傳遞給音頻apis。
真是太糟糕了,android已經有了一個內置midi合成器,但是顯然沒有動態的接口,所以它只能播放midi文件。
1
到目前爲止,最簡單的解決方案是將每個音符的聲音錄製在鋼琴上,並在按下鍵時播放它。許多專業的虛擬鋼琴樂器以這種方式工作,記錄鋼琴上以多種速度播放的每個音符。顯然,這可能需要很多千兆字節的磁盤空間,但對於手機應用程序,您可能會以一個八度音程記錄每個音符的單個MP3音樂。
實際上算法綜合鋼琴的聲音是很難做到的,直到最近,很少有人做得令人信服(pianoteq是當前最好的實現之一)。
相關問題
- 1. CLI鋼琴合成器?
- 2. 如何在Java中合成聲音?
- 3. 如何合成聲音?
- 4. JavaScript聲音合成
- 5. 與聲音合成
- 6. 繪製鋼琴
- 7. 如何在Android中輕鬆生成合成和絃聲音?
- 8. 如何使用UIScrollView在鋼琴應用程序中滾動八度音階
- 9. 聲音合成用C#
- 10. 合成採樣聲音
- 11. Android libGdx如何製作鋼琴瓦?
- 12. 如何爲鋼琴創造佈局
- 13. Google Chrome(Windows) - 如何添加缺少的語音合成聲音
- 14. 改進Android合成器上的MIDI合成器聲音/加載聲音字體
- 15. 在Java中混合聲音?
- 16. 如何在C#中實現鋼琴鍵頻率功能?
- 17. 如何在Iphone中創建鋼琴用戶界面?
- 18. 滑過鋼琴鍵(swift/iOS)
- 19. 如何在iPhone中合成音頻
- 20. 爲什麼我只能得到鋼琴音符(Java)?
- 21. 鋼琴應用程序的Android錄製音頻
- 22. C++蜂鳴器彈鋼琴音符爲Arduino
- 23. 音頻[MediaPlayer]不適用於我的鋼琴應用程序
- 24. 在圖像上識別鋼琴鍵
- 25. 我想讓音樂應用程序(記錄語音播放鋼琴或吉他)
- 26. 是代數聲音合成可能嗎?
- 27. jFugue - 如何同時在鋼琴上使用左手和右手?
- 28. 基本的聲音生成/合成庫,任何語言
- 29. 如何在Java中使用共振峯合成從頭開始創建聲音?
- 30. 在python中合成音頻音調
問題標題與問題真的很少有關。你真的在問如何在java中合成聲音。另外,你幾乎肯定不會想用ndk – Falmarri 2010-12-03 17:16:26
來做這件事,我在看https://ccrma.stanford.edu/software/stk/。我認爲把我需要的零件放入NDK,然後從那裏出發。或類似的東西。 – 2010-12-03 18:08:26