JES ima osnovnu podršku za uređivanje zvuka, ali ga možete koristiti za obavljanje nekih korisnih zadataka.
JES je program koji vam omogućuje programsku izmjenu slika, zvukova i videa. JES ima mnogo ugrađenih funkcija i alata za ispravljanje pogrešaka koji vam pomažu u učenju jezika Jython.
Kada uvozite datoteku pomoću JES-a, možete vizualno pregledati njezine zvučne valove pomoću zasebnog prozora. Također možete manipulirati vrijednostima amplitude ovih zvučnih valova na određenim točkama. To vam može pomoći da uredite zvučnu datoteku kako biste postigli različite efekte.
Kako promijeniti glasnoću zvučnog isječka
Kada ti renderirati sliku u JES-u, možete pristupiti pojedinačnim pikselima koje sadrži. Možete postići određene tehnike obrade slike uređivanjem vrijednosti crvene, zelene i plave boje za svaki piksel.
Slično tome, zvučna datoteka sadrži mnogo pojedinačnih "uzoraka" koji su mali dijelovi zvučnih podataka. Možete urediti uvezeni zvuk promjenom vrijednosti amplitude na svakom uzorku.
Kod korišten u ovom projektu dostupan je u ovom GitHub repo pod licencom MIT-a.
- Otvorite JES aplikaciju na svom računalu.
- Napravite novu funkciju pod nazivom changeVolume(), koja kao ulaz uzima glasnoću koju želite promijeniti:
defpromjena glasnoće(vol):
- Unutar funkcije, otvorite upit kako biste od korisnika zatražili da odabere valjanu zvučnu datoteku. Iako JES nije kompatibilan s mp3 datotekama, još uvijek možete uvesti WAV datoteke. Dodajte neku potvrdu kako biste bili sigurni da je datoteka kompatibilna:
datoteka = pickAFile()
ako datoteka != Nijedani file.endswith(".wav"):
# Kod za valjanu datoteku
drugo:
ispis("Odabrana je nevažeća datoteka. Odaberite valjanu WAV datoteku.") - Ako je odabrana datoteka važeća, stvorite zvučni objekt iz nje:
zvuk = makeSound (datoteka)
- Prođite kroz svaki uzorak zvuka:
za ja u raspon (0, getLength (zvuk)):
- Provjerite je li korisnik prošao gore u funkciju za pojačavanje zvuka. Ako je tako, uzmite vrijednost uzorka na tom indeksu pomoću ugrađene funkcije getSampleValueAt(). Povećajte glasnoću udvostručenjem amplitude i upotrijebite setSampleValueAt() za postavljanje nove vrijednosti:
ako volumen == 'gore':
sampleVal = getSampleValueAt (zvuk, i)
setSampleValueAt (zvuk, i, sampleVal * 2) - Provjerite je li korisnik prošao dolje u funkciju kako bi glasnoća bila tiša. Ako je tako, uzmite vrijednost uzorka na tom indeksu i umjesto toga ga podijelite s 2 kako biste smanjili amplitudu:
ako volumen == 'dolje':
sampleVal = getSampleValueAt (zvuk, i)
setSampleValueAt (zvuk, i, sampleVal / 2) - Upotrijebite funkciju explore() za otvaranje prozora istraživača za zvuk:
istražiti (zvuk)
- Klikni na Učitaj program gumb koji se nalazi između programskog područja i naredbenog retka. Spremite datoteku ako se to od vas zatraži:
- Pokrenite funkciju changeVolume() na naredbenom retku, prosljeđujući "up" kao argument funkciji:
promjena glasnoće ("gore")
- Pomoću prozora preglednika datoteka dođite do važeće zvučne datoteke:
- Klikni na Reproduciraj cijeli zvuk gumb pomoću novog prozora:
- U naredbenom retku ponovno pokrenite changeVolume() s vrijednošću "down" kao argumentom i odaberite datoteku:
changeVolume("down")
- U prozoru istraživača vidjet ćete da su zvučni valovi manji. Klikni na Reproduciraj cijeli zvuk gumb pomoću novog prozora:
Kako obrnuti zvučni isječak
Zvuk možete obrnuti stvaranjem novog praznog zvuka i kopiranjem svakog uzorka izvornog zvuka u novi zvuk obrnutim redoslijedom.
- U novoj funkciji zatražite od korisnika da odabere WAV datoteku i provjeri je li datoteka važeća:
defobrnuti zvuk():
datoteka = pickAFile()ako datoteka != Nijedani file.endswith(".wav"):
# Kod za valjanu datoteku
drugo:
ispis("Odabrana je nevažeća datoteka. Odaberite valjanu WAV datoteku.") - Stvorite novi zvučni objekt iz odabrane datoteke:
zvuk = makeSound (datoteka)
- Koristite ugrađenu funkciju makeEmptySound() za stvaranje novog praznog zvučnog objekta. Sastojat će se od istog broja uzoraka kao i izvorni zvuk. Vrijednost amplitude za svaki uzorak bit će 0:
newReversedSound = makeEmptySound (getLength (zvuk))
- Prođite kroz svaki uzorak novog praznog zvučnog objekta:
za ja u raspon (0, getLength (newReversedSound)):
- Za svaki uzorak u toj točki, uzmite uzorak na suprotnom kraju zvuka. Na primjer, ako je duljina uzorka 100, a trenutni indeks 0, dobit će se vrijednost uzorka na indeksu 99. Slično, ako je trenutni indeks 3, ovo će dobiti vrijednost uzorka na indeksu 96:
sampleVal = getSampleValueAt (zvuk, getLength (zvuk) - 1 - i)
- Kopirajte vrijednost uzorka s drugog kraja zvuka na trenutni indeks novog zvuka:
setSampleValueAt (newReversedSound, i, sampleVal)
- Istražite novi obrnuti zvuk. Također možete istražiti izvorni zvuk radi usporedbe:
istražiti (zvuk)
istraži (newReversedSound) - Klikni na Učitaj program gumb koji se nalazi između programskog područja i naredbenog retka. Spremite datoteku ako se to od vas zatraži.
- Pokrenite funkciju pomoću naredbenog retka:
obrnuti zvuk()
- Pogledajte izvorni zvuk i obrnuti zvuk pomoću prozora istraživača. Klikni na Reproduciraj cijeli zvuk gumb da čujete razlike:
Kako spojiti dva zvučna isječka
Za spajanje dvaju zvučnih isječaka možete zatražiti od korisnika da odabere dvije zasebne WAV datoteke. Kopirajte svaki uzorak oba zvuka na novi zvučni objekt.
- Napravite novu funkciju pod nazivom joinSounds():
defjoinSounds():
- Upotrijebite funkciju pickAFile() da potaknete korisnika da odabere prvu datoteku. Ako nije važeća, ispišite poruku o pogrešci:
file1 = pickAFite()
ako datoteka1 == Nijedaniline file1.endswith(".wav"):
ispis("Odabrana je nevažeća datoteka. Odaberite valjanu WAV datoteku.") - Ponovno upotrijebite funkciju pickAFile() da od korisnika zatražite drugu valjanu zvučnu datoteku:
file2 = pickAFite()
ako datoteka2 == Nijedaniline file2.endswith(".wav"):
ispis("Odabrana je nevažeća datoteka. Odaberite valjanu WAV datoteku.") - Stvorite dva zvučna objekta iz dvije odabrane zvučne datoteke:
zvuk1 = makeSound (datoteka1)
zvuk2 = makeSound (datoteka2) - Zbrojite duljine dvaju zvukova kako biste izračunali duljinu novog spojenog zvuka. Stvorite novi prazan zvučni objekt koristeći duljinu:
newSoundLength = getLength (zvuk1) + getLength (zvuk2)
joinedSound = makeEmptySound (newSoundLength) - Prođite kroz svaki uzorak prvog zvuka. Kopirajte vrijednost uzorka na svakom indeksu na novi zvuk:
za ja u raspon (0, getLength (zvuk1)):
sampleVal = getSampleValueAt (zvuk1, i)
setSampleValueAt (joinedSound, i, sampleVal) - Prođite kroz svaki uzorak drugog zvuka. Kopirajte vrijednost uzorka na svakom indeksu na novi zvuk, nakon prvog zvuka:
za ja u raspon (0, getLength (zvuk2)):
sampleVal = getSampleValueAt (zvuk2, i)
endOfFirstSound = getLength (zvuk1) - 1
setSampleValueAt (joinedSound, endOfFirstSound + i, sampleVal) - Istražite zvuk pomoću funkcije explore():
istraži (joinedSound)
- Klikni na Učitaj program gumb koji se nalazi između programskog područja i naredbenog retka. Spremite datoteku ako se to od vas zatraži.
- Pokrenite funkciju pomoću naredbenog retka:
pridruži se zvukovima()
- Pogledajte spojeni zvuk u novom prozoru i kliknite na Reproduciraj cijeli zvuk gumb da čujete zvuk:
Uvoz i uređivanje zvučnih datoteka pomoću JES-a
Sada razumijete kako uvesti zvučne datoteke i urediti ih pomoću JES-a. Postoji toliko mnogo drugih ugrađenih funkcija koje JES nudi, a koje će vam omogućiti još naprednije uređivanje zvuka.
Možete saznati više o ostalim dostupnim funkcijama koristeći JES prozor za pomoć.