Mengubah nada audio menggunakan Java (Android)

Saya ingin mengubah nada suara tanpa mengubah kecepatan audio, lalu menyimpannya ke file wav atau mp3, idenya adalah membuat beberapa efek suara menggunakan java di android, saya tidak menemukan cara yang jelas untuk melakukannya, apakah ada tutorial untuk dibaca?


person Mahmoud Nagy    schedule 27.10.2016    source sumber


Jawaban (2)


Di bawah ini adalah tautan ke fungsi tutorial sederhana dan berharga dalam C oleh Stephan M. Bernsee, yang disebut smbPitchShift.cpp, yang dapat menaikkan atau menurunkan nada sinyal musik.

Saya juga dapat menggunakannya untuk memperlambat atau mempercepat musik tanpa mengubah nadanya. Jika Anda ingin melakukan rentang waktu tanpa mengubah nada aslinya, Anda mungkin harus menerapkan pengambilan sampel ulang.

Sepertinya Bernsee telah membuat beberapa perubahan pada kodenya sejak versi ditautkan di GitHub. Kode terbarunya tersedia untuk diunduh dari situs webnya -- ini dapat meningkatkan jangkauan peralihan dari spesifikasi aslinya. Saya mengubah kode aslinya sehingga saya bisa menaikkan pitch sebanyak 8x.

https://github.com/AndyA/BatPhone/blob/master/pitchshift.c

http://blogs.zynaptiq.com/bernsee/time-pitch-overview/

person James Paul Millard    schedule 28.10.2016
comment
Bukan java, tapi saya akan mencoba memahami algoritma dari kode C, terima kasih :D - person Mahmoud Nagy; 28.10.2016

Setelah sedikit meneliti, saya menemukan bahwa apa yang Anda coba lakukan disebut "pergeseran nada". Ini melibatkan banyak perhitungan dan menyia-nyiakan paket suara tampaknya karena mengubah nada suara, secara otomatis mengubah kecepatan pemutarannya. Mengembalikannya ke kecepatan yang Anda inginkan sambil tetap menjaga audio pada sesuatu yang dianggap "normal" bukanlah hal yang mudah.

Bagaimanapun, karena Unity3D menggunakan C#, Anda mungkin (dan saya menekankan kata mungkin) dapat menggunakan perpustakaan sumber terbuka ini untuk mendapatkan efek suara yang Anda perlukan. Ini didasarkan pada NAudio (juga open source, dan C#) sehingga secara teoritis Anda dapat menggunakannya, atau sebagian darinya dalam proyek Anda.

person siddhesh    schedule 27.10.2016
comment
Saya membaca tentang pergeseran nada tetapi idenya adalah saya tidak benar-benar tahu bagaimana mengimplementasikannya ke dalam kode, bagaimanapun saya akan melihat perpustakaan itu, terima kasih - person Mahmoud Nagy; 27.10.2016