JES má základní podporu pro úpravu zvuku, ale můžete ji použít k provádění některých užitečných úkolů.
JES je program, který umožňuje programově upravovat obrázky, zvuky a videa. JES má mnoho vestavěných funkcí a nástrojů pro ladění, které vám pomohou naučit se jazyk Jython.
Při importu souboru pomocí JES můžete vizuálně prozkoumat jeho zvukové vlny pomocí samostatného okna. Můžete také manipulovat s hodnotami amplitudy těchto zvukových vln v určitých bodech. To vám může pomoci upravit zvukový soubor, abyste dosáhli různých efektů.
Jak změnit hlasitost zvukového klipu
Když vás vykreslit obrázek v JES, můžete přistupovat k jednotlivým pixelům, které obsahuje. Můžete dosáhnout jistých techniky zpracování obrazu úpravou hodnot červené, zelené a modré barvy pro každý pixel.
Podobně zvukový soubor obsahuje mnoho jednotlivých „vzorků“, což jsou malé kousky zvukových dat. Importovaný zvuk můžete upravit změnou hodnoty amplitudy u každého vzorku.
Kód použitý v tomto projektu je k dispozici zde úložiště GitHub pod licencí MIT.
- Otevřete aplikaci JES v počítači.
- Vytvořte novou funkci nazvanou changeVolume(), která jako vstup převezme objem, na který chcete změnit:
defchangeVolume(objem):
- Uvnitř funkce otevřete výzvu a požádejte uživatele, aby vybral platný zvukový soubor. Přestože JES není kompatibilní se soubory mp3, stále můžete importovat soubory WAV. Přidejte nějaké ověření, abyste se ujistili, že je soubor kompatibilní:
soubor = pickAFile()
-li soubor != Žádnýa soubor.endswith(".wav"):
# Kód pro platný soubor
jiný:
tisk("Vybrán neplatný soubor. Vyberte prosím platný soubor WAV.") - Pokud je vybraný soubor platný, vytvořte z něj zvukový objekt:
zvuk = makeSound (soubor)
- Projděte každý vzorek zvuku:
pro i v rozsah(0, getLength (zvuk)):
- Zkontrolujte, zda uživatel prošel nahoru do funkce pro zvýšení hlasitosti. Pokud ano, získejte ukázkovou hodnotu tohoto indexu pomocí vestavěné funkce getSampleValueAt(). Zvyšte hlasitost zdvojnásobením amplitudy a pomocí setSampleValueAt() nastavte novou hodnotu:
-li objem == 'nahoru':
sampleVal = getSampleValueAt (zvuk, i)
setSampleValueAt (zvuk, i, sampleVal * 2) - Zkontrolujte, zda uživatel prošel dolů do funkce pro zmírnění hlasitosti. Pokud ano, získejte hodnotu vzorku na tomto indexu a místo toho ji vydělte 2, abyste snížili amplitudu:
-li objem == 'dolů':
sampleVal = getSampleValueAt (zvuk, i)
setSampleValueAt (zvuk, i, sampleVal / 2) - Pomocí funkce explore() otevřete okno průzkumníka pro zvuk:
prozkoumat (zvuk)
- Klikněte na Načíst program tlačítko, umístěné mezi programovací oblastí a příkazovým řádkem. Pokud budete vyzváni, uložte soubor:
- Spusťte funkci changeVolume() na příkazovém řádku a předejte funkci „nahoru“ jako argument:
changeVolume("nahoru")
- Pomocí okna Průzkumník souborů přejděte na platný zvukový soubor:
- Klikněte na Přehrát celý zvuk pomocí nového okna:
- V příkazovém řádku spusťte znovu changeVolume() s hodnotou "down" jako argument a vyberte soubor:
changeVolume("dolů")
- V okně průzkumníka uvidíte, že zvukové vlny jsou menší. Klikněte na Přehrát celý zvuk pomocí nového okna:
Jak převrátit zvukový klip
Zvuk můžete obrátit vytvořením nového prázdného zvuku a zkopírováním každého vzorku původního zvuku do nového zvuku v opačném pořadí.
- V nové funkci vyzve uživatele, aby vybral soubor WAV a zkontroloval, zda je soubor platný:
defreverzní zvuk():
soubor = pickAFile()-li soubor != Žádnýa soubor.endswith(".wav"):
# Kód pro platný soubor
jiný:
tisk("Vybrán neplatný soubor. Vyberte prosím platný soubor WAV.") - Vytvořte nový zvukový objekt z vybraného souboru:
zvuk = makeSound (soubor)
- Pomocí vestavěné funkce makeEmptySound() vytvořte nový prázdný zvukový objekt. Ten se bude skládat ze stejného počtu vzorků jako původní zvuk. Hodnota amplitudy pro každý vzorek bude 0:
newReversedSound = makeEmptySound (getLength (zvuk))
- Projděte každý vzorek nového prázdného zvukového objektu:
pro i v rozsah(0, getLength (newReversedSound)):
- Pro každý vzorek v tomto bodě získáte vzorek na opačném konci zvuku. Pokud je například délka vzorku 100 a aktuální index je 0, získá se hodnota vzorku na indexu 99. Podobně, pokud je aktuální index 3, získá vzorová hodnota na indexu 96:
sampleVal = getSampleValueAt (zvuk, getLength (zvuk) - 1 - i)
- Zkopírujte hodnotu vzorku z druhého konce zvuku do aktuálního indexu nového zvuku:
setSampleValueAt (newReversedSound, i, sampleVal)
- Prozkoumejte nový obrácený zvuk. Můžete také prozkoumat původní zvuk pro účely srovnání:
prozkoumat (zvuk)
prozkoumat (newReversedSound) - Klikněte na Načíst program tlačítko, umístěné mezi programovací oblastí a příkazovým řádkem. Pokud budete vyzváni, uložte soubor.
- Spusťte funkci pomocí příkazového řádku:
reverzní zvuk()
- Prohlédněte si původní zvuk a obrácený zvuk pomocí oken průzkumníka. Klikněte na Přehrát celý zvuk tlačítko pro poslech rozdílů:
Jak spojit dva zvukové klipy dohromady
Chcete-li spojit dva zvukové klipy, můžete požádat uživatele, aby vybral dva samostatné soubory WAV. Zkopírujte každý vzorek obou zvuků do nového zvukového objektu.
- Vytvořte novou funkci s názvem joinSounds():
defjoinSounds():
- Pomocí funkce pickAFile() vyzvěte uživatele, aby vybral první soubor. Pokud je neplatný, vytiskněte chybovou zprávu:
soubor1 = pickAFile()
-li soubor1 == Žádnýnebone soubor1.endswith(".wav"):
tisk("Vybrán neplatný soubor. Vyberte prosím platný soubor WAV.") - Pomocí funkce pickAFile() znovu požádejte uživatele o druhý platný zvukový soubor:
soubor2 = pickAFile()
-li soubor2 == Žádnýnebone soubor2.endswith(".wav"):
tisk("Vybrán neplatný soubor. Vyberte prosím platný soubor WAV.") - Vytvořte dva zvukové objekty ze dvou vybraných zvukových souborů:
zvuk1 = makeSound (soubor1)
zvuk2 = makeSound (soubor2) - Sečtěte délky dvou zvuků a vypočítejte délku nového spojeného zvuku. Vytvořte nový prázdný zvukový objekt pomocí délky:
newSoundLength = getLength (zvuk1) + getLength (zvuk2)
joinSound = makeEmptySound (newSoundLength) - Projděte každý vzorek prvního zvuku. Zkopírujte hodnotu vzorku u každého indexu do nového zvuku:
pro i v rozsah(0, getLength (zvuk1)):
sampleVal = getSampleValueAt (zvuk1, i)
setSampleValueAt (joinedSound, i, sampleVal) - Projděte každý vzorek druhého zvuku. Zkopírujte hodnotu vzorku u každého indexu do nového zvuku po prvním zvuku:
pro i v rozsah(0, getLength (zvuk2)):
sampleVal = getSampleValueAt (zvuk2, i)
endOfFirstSound = getLength (zvuk1) - 1
setSampleValueAt (joinedSound, endOfFirstSound + i, sampleVal) - Prozkoumejte zvuk pomocí funkce explore():
prozkoumat (připojeno ke zvuku)
- Klikněte na Načíst program tlačítko, umístěné mezi programovací oblastí a příkazovým řádkem. Pokud budete vyzváni, uložte soubor.
- Spusťte funkci pomocí příkazového řádku:
joinSounds()
- Prohlédněte si spojený zvuk v novém okně a klikněte na Přehrát celý zvuk tlačítko pro poslech zvuku:
Import a úprava zvukových souborů pomocí JES
Nyní chápete, jak importovat zvukové soubory a upravovat je pomocí JES. JES nabízí mnoho dalších vestavěných funkcí, které vám umožní provádět ještě pokročilejší úpravy zvuku.
O dalších dostupných funkcích se můžete dozvědět více pomocí okna nápovědy JES.