Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Programming
Gamedevelopment

Tingkat kebisingan: Menciptakan sebuah Synthesizer untuk efek suara Retro - Pendahuluan

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Noise: Creating a Synthesizer for Retro Sound Effects.
Noise: Creating a Synthesizer for Retro Sound Effects - Core Engine

Indonesian (Bahasa Indonesia) translation by Afiff Soebarkah (you can also view the original English article)

Ini adalah yang pertama dalam serangkaian tutorial di mana kita akan menciptakan sebuah synthesizer berbasis audio mesin yang dapat menghasilkan suara untuk permainan bergaya retro. Mesin audio akan menghasilkan semua suara saat runtime tanpa perlu untuk setiap dependensi eksternal seperti file MP3 atau file WAV. Hasil akhirnya akan menjadi sebuah perpustakaan kerja yang dapat dengan mudah jatuh ke permainan Anda.

Sebelum kita dapat mulai untuk membuat mesin audio yang ada beberapa hal yang perlu kita mengerti; ini termasuk bentuk gelombang yang mesin audio akan menggunakan untuk menghasilkan suara terdengar, dan bagaimana gelombang suara disimpan dan diwakili dalam bentuk digital.

Bahasa pemrograman yang digunakan dalam tutorial ini adalah ActionScript 3.0 tapi teknik dan konsep yang digunakan dapat dengan mudah diterjemahkan ke bahasa pemrograman lain yang menyediakan API suara yang rendah.

Anda harus memastikan Anda memiliki Flash Player 11.4 atau lebih tinggi diinstal untuk browser Anda jika Anda ingin menggunakan contoh interaktif dalam tutorial ini.


Bentuk gelombang

Mesin audio yang kita akan menciptakan akan menggunakan empat bentuk gelombang yang dasar (juga dikenal sebagai bentuk gelombang periodik, karena bentuk dasar mereka ulangi secara berkala) yang semuanya sangat umum synthesizer analog dan digital. Gelombang masing-masing memiliki karakteristik terdengar unik sendiri.

Bagian berikut memberikan render visual dari setiap gelombang, sebuah contoh yang terdengar dari setiap gelombang, dan kode yang diperlukan untuk menghasilkan gelombang masing-masing sebagai array data sampel.

Pulse

Gelombang pulsa memproduksi suara tajam dan harmonik.

Tidak ada Flash? Ambil MP3.

Untuk menghasilkan sebuah array nilai (di kisaran -1.0 1.0) yang mewakili gelombang pulsa yang kita dapat menggunakan kode berikut, dimana n adalah jumlah nilai-nilai yang diperlukan untuk mengisi array, array, dan p adalah posisi yang dinormalisasi dalam bentuk gelombang :

Gigi gergaji

Gelombang gigi gergaji menghasilkan suara yang tajam dan keras.

Tidak ada Flash? Ambil MP3.

Untuk menghasilkan sebuah array nilai (di kisaran -1.0 1.0) yang mewakili gelombang gigi gergaji yang kita dapat menggunakan kode berikut, dimana n adalah jumlah nilai-nilai yang diperlukan untuk mengisi array, array, dan p adalah posisi yang dinormalisasi dalam bentuk gelombang :

Sinus

Gelombang sinus menghasilkan suara yang halus dan murni.

Tidak ada Flash? Ambil MP3.

Untuk menghasilkan sebuah array nilai (di kisaran -1.0 1.0) yang mewakili gelombang sinus kita dapat menggunakan kode berikut, dimana n adalah jumlah nilai-nilai yang diperlukan untuk mengisi array, array, dan p adalah posisi yang dinormalisasi dalam bentuk gelombang :

Segitiga

Gelombang segitiga menghasilkan suara yang halus dan harmonis.

Tanpa Flash? Ambil MP3.

Untuk menghasilkan sebuah array nilai (di kisaran -1.0 1.0) yang mewakili gelombang segitiga yang kita dapat menggunakan kode berikut, dimana n adalah jumlah nilai-nilai yang diperlukan untuk mengisi array, a adalah array, dan p adalah posisi yang dinormalisasi dalam bentuk gelombang :

Berikut ini adalah versi yang diperluas jalur 6:


Gelombang amplitudo dan frekuensi

Dua penting sifat gelombang suara adalah amplitudo dan frekuensi gelombang: ini menentukan volume dan nada suara, masing-masing. Amplitudo adalah hanya nilai mutlak puncak dari bentuk gelombang, dan frekuensi adalah frekuensi gelombang diulang per detik yang biasanya diukur dalam satuan hertz (Hz).

Gambar berikut merupakan sebuah snapshot milidetik 200 dari gelombang gigi gergaji dengan amplitudo 0.5 dan frekuensi 20 hertz:

Untuk memberikan gambaran tentang bagaimana frekuensi gelombang secara langsung berhubungan dengan nada audible suara, gelombang dengan frekuensi 440 hertz akan menghasilkan pitch yang sama sebagai catatan A4 standar (tengah A) pada piano konser modern. Dengan frekuensi bahwa dalam pikiran, kami telah mampu menghitung frekuensi catatan apapun dengan menggunakan kode berikut:

Variabel n dalam kode adalah jumlah catatan dari A4 (tengah A) untuk catatan kami tertarik. Misalnya, untuk menemukan frekuensi A5, satu oktaf di atas A4, kami akan mengatur nilai n-12 karena A5 12 catatan di atas A4. Untuk menemukan frekuensi E2 kami akan mengatur nilai n ke -5 karena E2 5 Catatan di bawah A4. Kami juga dapat melakukan sebaliknya dan menemukan sebuah catatan (relatif terhadap A4) untuk frekuensi tertentu:

Alasan mengapa perhitungan ini bekerja adalah karena frekuensi catatan logaritma - frekuensi berlipat dua bergerak catatan atas satu oktaf, sementara membagi frekuensi dengan dua bergerak catatan turun satu oktaf.


Gelombang suara digital

Di dunia digital, gelombang suara harus disimpan sebagai data biner, dan cara yang umum untuk melakukannya adalah untuk mengambil snapshot periodik (atau sampel) gelombang suara. Jumlah gelombang sampel yang diambil untuk setiap detik durasi suara yang dikenal sebagai tingkat sampel, sehingga suara dengan tingkat sampel 44100 akan berisi 44100 gelombang sampel (per saluran) untuk setiap detik suara 's durasi.

Gambar berikut menunjukkan bagaimana gelombang suara dapat diambil sampelnya:

Gumpalan putih dalam gambar mewakili poin amplitudo gelombang yang sampel dan disimpan dalam digital format. Anda dapat menganggap ini sebagai resolusi gambar bitmap: piksel lebih gambar bitmap berisi informasi lebih visual dapat menahan, dan lain informasi hasil dalam file yang lebih besar (mengabaikan file kompresi untuk sekarang). Hal yang sama berlaku untuk suara digital: gelombang sampel file suara berisi lebih akurat gelombang suara direkonstruksi akan.

Serta memiliki tingkat sampel, suara digital juga memiliki bit rate yang yang diukur dalam bit per detik. Bit rate menentukan berapa banyak bit biner yang digunakan untuk menyimpan setiap sampel gelombang. Ini mirip dengan jumlah bit yang digunakan untuk menyimpan informasi ARGB untuk setiap piksel dalam gambar bitmap. Misalnya, suara dengan tingkat sampel 44100 dan bit rate yang dari 705600 akan menjadi menyimpan setiap sampel gelombang yang sebagai nilai 16-bit, dan kita dapat menghitung bahwa cukup mudah menggunakan kode berikut:

Berikut adalah contoh kerja menggunakan nilai-nilai yang disebutkan di atas:

Memahami Apakah sampel suara adalah hal yang paling penting di sini; Mesin audio yang kita akan menciptakan akan memiliki untuk menghasilkan dan memanipulasi sampel suara mentah.


Modulator

Satu hal yang kita harus menyadari sebelum kita mulai program audio mesin adalah modulator, yang sangat umum di synthesizer analog dan digital. Modulasi adalah pada dasarnya hanya gelombang standar, tetapi bukan yang digunakan untuk menghasilkan suara mereka umumnya digunakan untuk memodulasi satu atau lebih sifat gelombang terdengar (misalnya amplitudo atau frekuensi).

Ambil vibrato, misalnya. Vibrato adalah perubahan berdenyut reguler dari pitch. Untuk menghasilkan efek yang menggunakan modulator Anda bisa mengatur modulasi gelombang gelombang sinus, dan mengatur frekuensi modulasi ke suatu tempat sekitar 8 hertz. Jika Anda kemudian ketagihan modulator itu sampai dengan frekuensi gelombang terdengar hasilnya akan menjadi efek vibrato - yang modulator lancar akan menaikkan dan menurunkan frekuensi (pitch) gelombang terdengar delapan kali per detik.

Mesin audio yang kita akan menciptakan akan memungkinkan Anda untuk melampirkan Modulator suara Anda untuk memungkinkan Anda menghasilkan sejumlah besar efek yang berbeda.


Datang...

Dalam tutorial berikutnya kami akan membuat kode inti untuk mesin audio dan mendapatkan semuanya dan berjalan. Ikuti kami di Twitter, Facebook, atau Google + untuk tetap up to date dengan posting terbaru.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.