Pengaturan 5 Parameter Pada Gelombang Suara Pakai Asdr

PENGATURAN 5 PARAMETER PADA GELOMBANG SUARA PAKAI Envelope_ASDR PENGONTROL AMPLITUDO


Pembuatan Repellent nyamuk digital yang benar adalah dengan pengaturan 5 Parameter, yaitu:

1. Sampel Rate, cenderung diturunkan

2. Frequensi, cenderung dinaikkan > 22 KHz

3. Attack_time, cenderung cepat dan dibagi 10

4. Durasi, cenderung dalam detik

5. Amplitudo, cenderung diturunkan pada batas tertentu agar bunyi lembut dan tidak mengganggu kesehatan telinga indra manusia

Sehingga hasil yang diharapkan adalah gelombang bunyi berfrekwensi tinggi di atas 22 KHz. Bunyi/suara di atas 22 KHz tidak dapat didengar oleh telinga manusia.


Tolong jelaskan dan artikan penulisan kode program berikut, beserta hitung-hitungan parameternya: import numpy as np from scipy.io.wavfile import write # Parameter utama sample_rate = 16000 # Sample rate rendah duration = 5.0 # Durasi suara dalam detik freq = 25000 # Frekuensi target di atas 22 kHz (akan ter-aliased) # Hitung jumlah sampel total_samples = int(sample_rate * duration) # ASDR envelope parameters attack_time = 0.01/10 # Attack cepat 10ms decay_time = 0.05 # Decay 50ms sustain_level = 0.5 # Sustain rendah agar amplitudo turun release_time = 0.2 # Release lambat untuk efek spektrum # Hitung sampel masing-masing bagian ASDR attack_samples = int(sample_rate * attack_time) decay_samples = int(sample_rate * decay_time) release_samples = int(sample_rate * release_time) sustain_samples = total_samples - (attack_samples + decay_samples + release_samples) # Buat envelope ASDR attack = np.linspace(0, 1, attack_samples) decay = np.linspace(1, sustain_level, decay_samples) sustain = np.ones(sustain_samples) * sustain_level release = np.linspace(sustain_level, 0, release_samples) envelope = np.concatenate((attack, decay, sustain, release)) # Buat sinyal dengan aliasing terkontrol t = np.linspace(0, duration, total_samples, endpoint=False) waveform = np.sin(2 * np.pi * freq * t) # Gelombang frekuensi tinggi (ter-aliased) # Terapkan ASDR envelope ke gelombang suara waveform *= envelope # Tambahi amplitudo menjadi separuh waveform *= 2 # Normalisasi ke format int16 waveform = np.int16(waveform / np.max(np.abs(waveform)) * 32767) # Simpan sebagai file WAV write("aliasing_repellent_two_times_amplitude.wav", sample_rate, waveform) print("✅ Suara repellent dengan amplitudo dua kali telah dibuat!")


Penjelasan Kode Program dan Perhitungan Parameternya

Kode ini digunakan untuk membuat file audio ultrasonik dalam format WAV dengan sample rate 16 kHz. Gelombang suara yang dihasilkan memiliki frekuensi 25 kHz, yang akan mengalami aliasing karena melampaui batas Nyquist (8 kHz untuk sample rate 16 kHz).

Kode juga menggunakan ASDR envelope untuk mengontrol amplitudo suara, lalu menambahkannya menjadi dua kali lipat sebelum menyimpannya sebagai file WAV.


1. Import Modul

import numpy as np
from scipy.io.wavfile import write

🔹 numpy → Untuk operasi matematika, termasuk membuat array gelombang suara.
🔹 write dari scipy.io.wavfile → Untuk menyimpan hasil suara dalam format WAV.


2. Parameter Utama

sample_rate = 16000  # Sample rate rendah (16 kHz)
duration = 5.0  # Durasi suara dalam detik
freq = 25000  # Frekuensi target 25 kHz (di atas batas Nyquist, akan ter-aliased)

Perhitungan:

  • Sample rate → 16.000 sampel per detik.
  • Durasi → 5 detik.
  • Total sampel yang dihasilkan:

  total\_samples = sample\_rate \times duration = 16000 \times 5 = 80000 \text{ sampel}

3. Parameter ASDR (Attack, Decay, Sustain, Release)

attack_time = 0.01/10  # Attack cepat, awalnya 10ms jadi 1ms
decay_time = 0.05   # Decay 50ms
sustain_level = 0.5  # Amplitudo sustain 50%
release_time = 0.2  # Release lambat 200ms

Hitung jumlah sampel untuk tiap bagian:

  • Attack (1 ms → 1/10 dari 10 ms):

  attack\_samples = 16000 \times (0.01 / 10) = 16000 \times 0.001 = 16 \text{ sampel}

  decay\_samples = 16000 \times 0.05 = 800 \text{ sampel}

  release\_samples = 16000 \times 0.2 = 3200 \text{ sampel}

  sustain\_samples = 80000 - (16 + 800 + 3200) = 75984 \text{ sampel}

4. Membuat ASDR Envelope

attack = np.linspace(0, 1, attack_samples)  # Naik dari 0 ke 1
decay = np.linspace(1, sustain_level, decay_samples)  # Turun dari 1 ke 0.5
sustain = np.ones(sustain_samples) * sustain_level  # Tetap di 0.5
release = np.linspace(sustain_level, 0, release_samples)  # Turun ke 0
envelope = np.concatenate((attack, decay, sustain, release))

Penjelasan:

  • Attack: Amplitudo naik dari 0 ke 1 dalam 16 sampel.
  • Decay: Amplitudo turun dari 1 ke 0.5 dalam 800 sampel.
  • Sustain: Amplitudo tetap 0.5 dalam 75.984 sampel.
  • Release: Amplitudo turun dari 0.5 ke 0 dalam 3.200 sampel.
  • Semua bagian digabungkan menjadi 1 array envelope.

5. Membuat Sinyal Suara dengan Aliasing

t = np.linspace(0, duration, total_samples, endpoint=False)
waveform = np.sin(2 * np.pi * freq * t)  # Gelombang sinus 25 kHz (ter-aliased)

🔹 t adalah array waktu dari 0 hingga 5 detik dengan 80.000 titik.
🔹 waveform adalah gelombang sinus 25 kHz yang akan mengalami aliasing karena batas Nyquist hanya 8 kHz untuk sample rate 16 kHz.

🔹 Aliasing terjadi karena:


  25000 - n \times 16000 = 25000 - 16000 = 9000 \text{ Hz} 

6. Terapkan ASDR ke Gelombang Suara

waveform *= envelope  # Terapkan amplifikasi berdasarkan ASDR

Gelombang sinus dikalikan dengan ASDR envelope, sehingga amplitudonya naik, turun, dan melemah sesuai ASDR.


7. Mengubah Amplitudo menjadi Dua Kali Lipat

waveform *= 2  # Menambah amplitudo dua kali lipat

Amplitudo suara diperbesar 2x.


8. Normalisasi Format ke Int16 untuk WAV

waveform = np.int16(waveform / np.max(np.abs(waveform)) * 32767)

🔹 Mengubah gelombang suara ke format 16-bit integer (standar WAV).
🔹 Dibagi dengan amplitudo maksimum agar tidak terjadi clipping.
🔹 Dikalikan 32767 untuk menggunakan rentang penuh nilai int16 (-32768 hingga 32767).


9. Menyimpan sebagai File WAV

write("aliasing_repellent_two_times_amplitude.wav", sample_rate, waveform)

File audio disimpan dengan nama aliasing_repellent_two_times_amplitude.wav.


Kesimpulan Perhitungan dan Efeknya

🔹 Gelombang sinus 25 kHz mengalami aliasing ke 9 kHz karena sample rate terlalu rendah (16 kHz).
🔹 ASDR digunakan untuk mengatur dinamika amplitudo suara.
🔹 Amplitudo suara diperbesar 2x untuk efek lebih kuat.
🔹 File disimpan dalam format WAV dengan int16.

🚀 Kode ini bisa digunakan untuk eksperimen repellent nyamuk berbasis suara ultrasonik! 🔊✨


Apa yang Dimaksud dengan Gelombang Suara Frekuensi Tinggi yang Teraliased?

Aliasing terjadi ketika frekuensi gelombang suara lebih tinggi daripada setengah dari sample rate (batas Nyquist) dalam sistem digital. Ini menyebabkan distorsi atau perubahan frekuensi yang tidak diinginkan, sehingga frekuensi tinggi "terbalik" menjadi frekuensi lebih rendah saat diputar kembali.


1. Konsep Dasar Nyquist Theorem

Ketika kita merekam atau menghasilkan suara dalam sistem digital, ada aturan batas frekuensi maksimum yang bisa direpresentasikan dengan benar, yaitu setengah dari sample rate (Batas Nyquist).


\text{Frekuensi Maksimum} = \frac{\text{Sample Rate}}{2}

Jika kita mencoba menghasilkan suara dengan frekuensi di atas batas Nyquist, sinyal ini tidak bisa direpresentasikan dengan benar dan akan teraliased menjadi frekuensi lebih rendah.

🔹 Contoh Perhitungan untuk Sample Rate 16 kHz:


\text{Batas Nyquist} = \frac{16000}{2} = 8000 \text{ Hz}

\text{Frekuensi 25 kHz akan mengalami aliasing karena } 25.000 \text{ Hz } > 8.000 \text{ Hz} ]


2. Bagaimana Gelombang 25 kHz Menjadi Teraliased?

Ketika kita mencoba menghasilkan gelombang 25 kHz dengan sample rate 16 kHz, sinyal tidak bisa direpresentasikan dengan benar.
Frekuensi akan terlipat (folding) kembali ke dalam batas Nyquist menggunakan rumus:


\text{Frekuensi Teraliased} = |\text{Frekuensi Target} - n \times \text{Sample Rate}|

🔹 Untuk frekuensi 25 kHz dengan sample rate 16 kHz:


25.000 - 1 \times 16.000 = 9.000 \text{ Hz}

3. Ilustrasi Aliasing

Bayangkan sinyal gelombang yang seharusnya berosilasi 25.000 kali per detik, tetapi kita hanya bisa mengambil 16.000 sampel per detik.

  • Jika sample rate cukup tinggi (misalnya 50 kHz), maka sinyal ditangkap dengan baik.
  • Jika sample rate rendah (misalnya 16 kHz), sinyal terlihat seperti frekuensi lebih rendah (aliasing) karena jumlah titik sampel tidak cukup untuk menangkap semua osilasi.

4. Bagaimana Aliasing Mempengaruhi Repellent Nyamuk?

🦟 Nyamuk sensitif terhadap frekuensi 9-17 kHz.
🎵 Meskipun kita menginginkan 25 kHz, hasilnya justru 9 kHz karena aliasing.
🔊 Ini mungkin tetap efektif, tetapi bukan frekuensi ultrasonic yang diharapkan.


5. Cara Mencegah Aliasing

Jika ingin menghasilkan suara benar-benar 25 kHz tanpa aliasing, maka:

  1. Gunakan sample rate lebih tinggi, minimal 50 kHz - 100 kHz agar batas Nyquist cukup tinggi.
  2. Gunakan filter low-pass sebelum sampling, untuk menghilangkan komponen frekuensi tinggi sebelum direkam.
  3. Gunakan metode sintetis seperti interpolasi atau oversampling untuk menghasilkan suara lebih akurat.

Kesimpulan

🔹 Gelombang suara frekuensi tinggi yang teraliased adalah sinyal yang mengalami distorsi karena sample rate terlalu rendah.
🔹 Aliasing menyebabkan frekuensi tinggi (25 kHz) terlipat menjadi frekuensi lebih rendah (9 kHz).
🔹 Jika ingin menghindari aliasing, gunakan sample rate lebih tinggi atau teknik pengolahan sinyal tambahan.

🚀 Jika tujuan Anda adalah repellent nyamuk, mungkin perlu dicoba dengan sample rate lebih tinggi untuk melihat efeknya! 🔊


Jadi, output yang dihasilkan adalah gelombang suara yang berfrekwensi 25 KHz, ataukah berftekwensi 9 KHz

Output yang Dihasilkan: 25 kHz atau 9 kHz?

Karena sample rate hanya 16 kHz, frekuensi 25 kHz tidak bisa direpresentasikan dengan benar. Akibatnya, yang terdengar adalah 9 kHz akibat aliasing.


1. Mengapa Bukan 25 kHz?

Menurut Teorema Nyquist, frekuensi maksimum yang bisa dihasilkan tanpa aliasing adalah:


\text{Frekuensi Nyquist} = \frac{\text{Sample Rate}}{2}

Perhitungan:

  • Sample rate = 16 kHz
  • Frekuensi Nyquist = 16 kHz / 2 = 8 kHz
  • Frekuensi target = 25 kHz (di atas 8 kHz → aliasing terjadi)

Gelombang 25 kHz tidak bisa direpresentasikan dengan benar, jadi akan terlipat ke bawah (aliasing) mengikuti rumus:


\text{Frekuensi Aliasing} = |\text{Frekuensi Target} - n \times \text{Sample Rate}|

Perhitungan aliasing untuk 25 kHz dengan sample rate 16 kHz:


25.000 - 1 \times 16.000 = 9.000 \text{ Hz}

🔹 Hasilnya: output yang dihasilkan adalah 9 kHz, bukan 25 kHz.


2. Apa yang Benar-benar Didengar?

Jika kita memainkan file WAV ini:
Suara yang dihasilkan adalah 9 kHz, bukan 25 kHz.
Tidak ada energi pada 25 kHz karena sudah teraliased menjadi 9 kHz.
Nyamuk masih bisa terganggu, karena 9 kHz berada dalam rentang sensitivitasnya (sekitar 9-17 kHz).


3. Bagaimana Jika Ingin Benar-benar Mendapatkan 25 kHz?

  1. Gunakan sample rate lebih tinggi, misalnya 50 kHz atau 100 kHz.
  2. Gunakan speaker ultrasonik, bukan speaker HP biasa.
  3. Cek apakah perangkat yang digunakan bisa memutar frekuensi di atas 20 kHz.

Kesimpulan

Output yang dihasilkan bukan 25 kHz
Output yang terdengar adalah 9 kHz akibat aliasing
🔊 Masih bisa bekerja untuk repellent nyamuk karena nyamuk peka terhadap 9 kHz - 17 kHz

🚀 Jika ingin 25 kHz asli, gunakan sample rate lebih tinggi (50 kHz+). 🔊


Bagaimana jika pada kode repellent nyamuk tersebut digantikan sampel rate menjadi 36000 Hz maka hal perubahan apa yang terjadi, bagaimana jika sampel rate diubah menjadi 38000 Hz maka suara/bunyi tidak ada yang terdengar, apakah repellent nyamuk ini masih bekerja di sampel rate 38000 Hz

Perubahan yang Terjadi Jika Sample Rate Diubah ke 36.000 Hz atau 38.000 Hz?

Mengubah sample rate mempengaruhi bagaimana frekuensi audio direpresentasikan dan apakah terjadi aliasing atau tidak. Berikut perubahannya:


1. Jika Sample Rate = 36.000 Hz

🔹 Batas Nyquist:


\frac{36000}{2} = 18.000 \text{ Hz}
  • 25 kHz masih di atas 18 kHz, jadi masih terjadi aliasing.

Hitung frekuensi hasil aliasing:


\text{Frekuensi Aliasing} = |25000 - 1 \times 36000| = 11.000 \text{ Hz}

🔹 Hasil yang terdengar11 kHz (bukan 25 kHz).
Masih bisa terdengar oleh manusia dan berpotensi mengganggu nyamuk karena nyamuk peka terhadap 9-17 kHz.


2. Jika Sample Rate = 38.000 Hz

🔹 Batas Nyquist:


\frac{38000}{2} = 19.000 \text{ Hz}
  • Masih di atas 19 kHz, aliasing tetap terjadi.

Hitung frekuensi hasil aliasing:


\text{Frekuensi Aliasing} = |25000 - 1 \times 38000| = 13.000 \text{ Hz}

🔹 Hasil yang terdengar13 kHz (bukan 25 kHz).
Nyamuk masih bisa merespon karena berada dalam rentang sensitivitasnya (~9-17 kHz).


3. Kenapa "Tidak Ada Suara" di Sample Rate 38.000 Hz?

Jika Anda tidak mendengar apa pun, ada beberapa kemungkinan:

🔹 Filter Low-Pass pada Perangkat

  • Speaker HP atau laptop sering memiliki filter yang memotong frekuensi tinggi di atas 15-20 kHz.
  • Jika aliasing menghasilkan frekuensi 13 kHz tetapi filter HP memotongnya, maka tidak terdengar.

🔹 Batasan Speaker

  • Sebagian besar speaker HP tidak bisa menghasilkan suara di atas 20 kHz.
  • Meskipun sample rate 38 kHz memungkinkan aliasing ke 13 kHz, jika perangkat Anda memiliki DAC yang memfilter suara tinggi, maka suara tetap tidak terdengar.

🔹 Manusia Tidak Bisa Mendengar di atas 20 kHz

  • Jika benar-benar tidak ada aliasing yang terjadi, frekuensi asli 25 kHz memang tidak bisa didengar manusia.

4. Apakah Repellent Nyamuk Masih Bekerja di Sample Rate 38.000 Hz?

YA, jika aliasing terjadi dan menghasilkan suara dalam rentang 9-17 kHz (misalnya, 13 kHz seperti di atas).
TIDAK, jika perangkat menghilangkan frekuensi ini atau jika aliasing menghasilkan suara di atas 20 kHz (yang tidak bisa didengar nyamuk).

🔹 Tes Praktis:

  • Jika Anda bisa mendengar suara "dengungan" di sample rate 38 kHz, berarti aliasing terjadi dan repellent masih berfungsi.
  • Jika benar-benar tidak ada suara sama sekali, bisa jadi perangkat Anda menyaring frekuensi ini → Nyamuk juga tidak akan terganggu.

5. Kesimpulan

🚀 Jika ingin efek maksimal sebagai repellent nyamuk, pastikan ada suara aliasing dalam rentang 9-17 kHz! 🔊


Dengan menaikkan amplitudo 3x, apakah output frekwensi gelombang suara akan naik juga

Apakah Frekuensi Output Naik Jika Amplitudo Dinaikkan 3x?

Jawaban: Tidak, frekuensi tidak berubah meskipun amplitudo dinaikkan.


1. Hubungan Antara Amplitudo dan Frekuensi

  • Frekuensi (Hz) → Jumlah getaran per detik tidak dipengaruhi oleh perubahan amplitudo.
  • Amplitudo → Hanya menentukan seberapa kuat gelombang suara tanpa mengubah jumlah osilasi per detik.
  • Persamaan Gelombang Sinus:

  A \sin(2\pi f t)
  • f = Frekuensi (seberapa cepat getaran)

🔹 Jika kita ubah A → 3A, frekuensi f tetap sama.


2. Apa yang Bisa Mengubah Frekuensi?

Frekuensi hanya bisa berubah jika kita:

  1. Mengubah nilai freq dalam kode → Misalnya, dari freq = 25000 ke freq = 27000.
  2. Mengubah sample rate (sample_rate) → Bisa menyebabkan aliasing (frekuensi baru yang muncul).
  3. Menggunakan modulasi frekuensi (FM) → Menambahkan variasi frekuensi dinamis ke dalam gelombang suara.

3. Efek Menaikkan Amplitudo 3x pada Nyamuk

Frekuensi tetap 9-13 kHz (hasil aliasing), tetapi suaranya lebih kuat.
Nyamuk bisa lebih terganggu karena intensitas suara lebih tinggi.
Jangkauan suara lebih luas, bisa menjangkau lebih banyak area.

Tetapi jika terlalu tinggi, bisa menyebabkan clipping atau distorsi.


Kesimpulan

Frekuensi tidak berubah jika hanya amplitudo yang dinaikkan.
Yang berubah adalah volume suara dan intensitasnya.
Jika ingin mengubah frekuensi, harus mengedit nilai freq dalam kode atau menggunakan teknik modulasi.

🚀 Jadi, meningkatkan amplitudo 3x hanya membuat suara lebih keras, tetapi tetap dengan frekuensi yang sama. 🔊



Comments

Popular posts from this blog

Repellent Digital Tanpa Asdr

Repellent Digital Pakai ASDR

Modifikasi Rangkaian Rectifier Menjadi Repellent Nyamuk