Farih.co.id
Home Programming 3 Teknik Pemrosesan Suara yang Menarik Menggunakan JES

3 Teknik Pemrosesan Suara yang Menarik Menggunakan JES

person in headphones with sound waves on computer

JES memiliki dukungan dasar untuk pengeditan suara, tetapi Anda dapat menggunakannya untuk melakukan beberapa tugas berguna.


JES adalah program yang memungkinkan Anda memodifikasi gambar, suara, dan video secara terprogram. JES memiliki banyak fungsi bawaan dan alat debug untuk membantu Anda mempelajari bahasa Jython.


Saat mengimpor file menggunakan JES, Anda dapat memeriksa gelombang suaranya secara visual menggunakan jendela terpisah. Anda juga dapat memanipulasi nilai amplitudo gelombang suara ini pada titik-titik tertentu. Ini dapat membantu Anda mengedit file suara untuk mencapai efek yang berbeda.


Cara Mengubah Volume Klip Suara

Saat Anda merender gambar di JES, Anda dapat mengakses piksel individual yang dikandungnya. Anda dapat memperoleh teknik pemrosesan gambar tertentu dengan mengedit nilai warna merah, hijau, dan biru untuk setiap piksel.

Demikian pula, file suara berisi banyak “sampel” individu yang merupakan bagian kecil dari data suara. Anda dapat mengedit suara yang diimpor dengan mengubah nilai amplitudo pada setiap sampel.

Kode yang digunakan dalam proyek ini tersedia di sini repo GitHub di bawah lisensi MIT.

  1. Buka aplikasi JES di komputer Anda.
  2. Buat fungsi baru bernama changeVolume(), yang menggunakan volume yang ingin Anda ubah sebagai input:
     def changeVolume(vol):  
  3. Di dalam fungsi, buka prompt untuk meminta pengguna memilih file suara yang valid. Meskipun JES tidak kompatibel dengan file mp3, Anda tetap dapat mengimpor file WAV. Tambahkan beberapa validasi untuk memastikan file tersebut kompatibel:
     file = pickAFile() 

    if file != None and file.endswith(".wav"):
      
    else:
      print("Invalid file selected. Please choose a valid WAV file.")

  4. Jika file yang dipilih valid, buat objek suara darinya:
     sound = makeSound(file) 
  5. Ulangi setiap sampel suara:
     for i in range(0, getLength(sound)): 
  6. Periksa apakah pengguna lulus ke atas ke dalam fungsi untuk menaikkan volume lebih keras. Jika demikian, dapatkan nilai sampel pada indeks tersebut menggunakan fungsi getSampleValueAt() bawaan. Tingkatkan volume dengan menggandakan amplitudo, dan gunakan setSampleValueAt() untuk menyetel nilai baru:
     if vol == 'up':
      sampleVal = getSampleValueAt(sound, i)
      setSampleValueAt(sound, i, sampleVal * 2)
  7. Periksa apakah pengguna lulus turun ke dalam fungsi untuk membuat volume lebih lembut. Jika demikian, dapatkan nilai sampel pada indeks tersebut, dan bagi dengan 2 sebagai gantinya, untuk mengurangi amplitudo:
     if vol == 'down':
      sampleVal = getSampleValueAt(sound, i)
      setSampleValueAt(sound, i, sampleVal / 2)
  8. Gunakan fungsi explore() untuk membuka jendela explorer untuk suara:
     explore(sound) 
  9. Klik pada Muat Program tombol, terletak di antara area pemrograman dan baris perintah. Simpan file jika diminta:
    Perangkat lunak JES dengan save prompt terbuka
  10. Jalankan fungsi changeVolume() pada baris perintah, dengan meneruskan “naik” sebagai argumen ke fungsi:
     changeVolume("up") 
  11. Menggunakan jendela file explorer, navigasikan ke file suara yang valid:
    Perangkat lunak JES dengan file explorer
  12. Klik pada Mainkan Seluruh Suara tombol menggunakan jendela baru:
    Jendela JES Soundwaves dengan gelombang
  13. Di baris perintah, jalankan kembali changeVolume() dengan nilai “turun” sebagai argumen, dan pilih file:
     changeVolume("down") 
  14. Di jendela penjelajah, Anda akan melihat bahwa gelombang suara lebih kecil. Klik pada Mainkan Seluruh Suara tombol menggunakan jendela baru:
    JES Soundwaves yang volumenya lebih rendah

Cara Membalikkan Klip Suara

Anda dapat membalikkan suara dengan membuat suara kosong baru dan menyalin setiap sampel suara asli ke dalam suara baru dalam urutan terbalik.

  1. Dalam fungsi baru, minta pengguna untuk memilih file WAV, dan periksa apakah file tersebut valid:
     def reverseSound():
      file = pickAFile()

      if file != None and file.endswith(".wav"):
        
      else:
        print("Invalid file selected. Please choose a valid WAV file.")

  2. Buat objek suara baru dari file yang dipilih:
     sound = makeSound(file)  
  3. Gunakan fungsi makeEmptySound() bawaan untuk membuat objek suara kosong yang baru. Ini akan terdiri dari jumlah sampel yang sama dengan suara aslinya. Nilai amplitudo untuk setiap sampel adalah 0:
     newReversedSound = makeEmptySound(getLength(sound)) 
  4. Ulangi setiap sampel objek suara kosong yang baru:
     for i in range(0, getLength(newReversedSound)): 
  5. Untuk setiap sampel pada titik tersebut, dapatkan sampel di ujung suara yang berlawanan. Misalnya, jika panjang sampel adalah 100, dan indeks saat ini adalah 0, ini akan mendapatkan nilai sampel pada indeks 99. Demikian pula, jika indeks saat ini adalah 3, ini akan mendapatkan nilai sampel pada indeks 96:
     sampleVal = getSampleValueAt(sound, getLength(sound) - 1 - i) 
  6. Salin nilai sampel dari ujung lain suara ke indeks suara baru saat ini:
     setSampleValueAt(newReversedSound, i, sampleVal) 
  7. Jelajahi suara terbalik yang baru. Anda juga dapat menjelajahi suara asli untuk tujuan perbandingan:
     explore(sound)
    explore(newReversedSound)
  8. Klik pada Muat Program tombol, terletak di antara area pemrograman dan baris perintah. Simpan file jika diminta.
  9. Jalankan fungsi menggunakan baris perintah:
     reverseSound() 
  10. Lihat suara asli dan suara terbalik menggunakan jendela penjelajah. Klik pada Mainkan Seluruh Suara tombol untuk mendengarkan perbedaannya:
    Dua jendela dengan dua gelombang suara di JES

Cara Menggabungkan Dua Klip Suara Bersama

Untuk menggabungkan dua klip suara, Anda dapat meminta pengguna untuk memilih dua file WAV terpisah. Salin setiap sampel dari kedua suara ke objek suara baru.

  1. Buat fungsi baru bernama joinSounds():
     def joinSounds(): 
  2. Gunakan fungsi pickAFile() untuk meminta pengguna memilih file pertama. Jika tidak valid, cetak pesan kesalahan:
     file1 = pickAFile()

    if file1 == None or not file1.endswith(".wav"):
      print("Invalid file selected. Please choose a valid WAV file.")

  3. Gunakan fungsi pickAFile() lagi untuk meminta file suara kedua yang valid kepada pengguna:
     file2 = pickAFile() 

    if file2 == None or not file2.endswith(".wav"):
      print("Invalid file selected. Please choose a valid WAV file.")

  4. Buat dua objek suara dari dua file suara yang dipilih:
     sound1 = makeSound(file1) 
    sound2 = makeSound(file2)
  5. Jumlahkan panjang kedua bunyi untuk menghitung panjang bunyi gabungan yang baru. Buat objek suara kosong baru menggunakan panjang:
     newSoundLength = getLength(sound1) + getLength(sound2)
    joinedSound = makeEmptySound(newSoundLength)
  6. Ulangi setiap sampel suara pertama. Salin nilai sampel di setiap indeks ke suara baru:
     for i in range(0, getLength(sound1)):
      sampleVal = getSampleValueAt(sound1, i)
      setSampleValueAt(joinedSound, i, sampleVal)
  7. Ulangi setiap sampel suara kedua. Salin nilai sampel pada setiap indeks ke suara baru, setelah suara pertama:
     for i in range(0, getLength(sound2)):
      sampleVal = getSampleValueAt(sound2, i)
      endOfFirstSound = getLength(sound1) - 1
      setSampleValueAt(joinedSound, endOfFirstSound + i, sampleVal)
  8. Jelajahi suara menggunakan fungsi explore():
     explore(joinedSound) 
  9. Klik pada Muat Program tombol, terletak di antara area pemrograman dan baris perintah. Simpan file jika diminta.
  10. Jalankan fungsi menggunakan baris perintah:
     joinSounds() 
  11. Lihat suara gabungan menggunakan jendela baru, dan klik Mainkan Seluruh Suara tombol untuk mendengar suara:
    Gelombang suara yang lebih panjang dengan suara gabungan

Mengimpor dan Mengedit File Suara Menggunakan JES

Sekarang Anda mengerti cara mengimpor file suara dan mengeditnya menggunakan JES. Ada begitu banyak fungsi bawaan lain yang ditawarkan JES, yang memungkinkan Anda melakukan pengeditan suara yang lebih canggih.

Anda dapat mempelajari lebih lanjut tentang fungsi lain yang tersedia menggunakan jendela bantuan JES.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad