JES heeft basisondersteuning voor geluidsbewerking, maar u kunt het gebruiken om enkele nuttige taken uit te voeren.
JES is een programma waarmee je afbeeldingen, geluiden en video's programmatisch kunt aanpassen. JES heeft veel ingebouwde functies en hulpprogramma's voor foutopsporing om u te helpen de Jython-taal te leren.
Wanneer u een bestand importeert met JES, kunt u de geluidsgolven visueel bekijken met behulp van een apart venster. U kunt ook de amplitudewaarden van deze geluidsgolven op specifieke punten manipuleren. Dit kan u helpen bij het bewerken van het geluidsbestand om verschillende effecten te bereiken.
Hoe het volume van een geluidsfragment te wijzigen
Wanneer je maak een afbeelding in JES, hebt u toegang tot de afzonderlijke pixels die het bevat. Je kunt bepaalde dingen bereiken beeldverwerking technieken door de rode, groene en blauwe kleurwaarden voor elke pixel te bewerken.
Evenzo bevat een geluidsbestand veel individuele "samples" die kleine stukjes geluidsgegevens zijn. U kunt een geïmporteerd geluid bewerken door de amplitudewaarde bij elke sample te wijzigen.
De code die in dit project wordt gebruikt, is hierin beschikbaar GitHub-opslagplaats onder de MIT-licentie.
- Open de JES-toepassing op uw computer.
- Maak een nieuwe functie met de naam changeVolume(), die het volume waarnaar u wilt wijzigen als invoer opneemt:
defveranderVolume(vol):
- Open binnen de functie een prompt om de gebruiker te vragen een geldig geluidsbestand te selecteren. Hoewel JES niet compatibel is met mp3-bestanden, kunt u nog steeds WAV-bestanden importeren. Voeg wat validatie toe om te controleren of het bestand compatibel is:
bestand = pickAFile()
als bestand!= GeenEn bestand.eindigt(".wav"):
# Code voor geldig bestand
anders:
afdrukken("Ongeldig bestand geselecteerd. Kies een geldig WAV-bestand.") - Als het geselecteerde bestand geldig is, maak er dan een geluidsobject van:
geluid = maakGeluid (bestand)
- Loop door elke sample van het geluid:
voor i in bereik(0, getLength (geluid)):
- Controleer of de gebruiker geslaagd is omhoog in de functie om het volume harder te zetten. Als dat het geval is, haalt u de voorbeeldwaarde op bij die index met behulp van de ingebouwde functie getSampleValueAt(). Verhoog het volume door de amplitude te verdubbelen en gebruik setSampleValueAt() om de nieuwe waarde in te stellen:
als volume == 'omhoog':
sampleVal = getSampleValueAt (geluid, i)
setSampleValueAt (geluid, i, sampleVal * 2) - Controleer of de gebruiker geslaagd is omlaag in de functie om het volume zachter te maken. Als dat het geval is, neem dan de steekproefwaarde bij die index en deel deze in plaats daarvan door 2 om de amplitude te verkleinen:
als volume == 'omlaag':
sampleVal = getSampleValueAt (geluid, i)
setSampleValueAt (geluid, i, sampleVal / 2) - Gebruik de functie explore() om het verkennervenster voor het geluid te openen:
verkennen (geluid)
- Klik op de Programma laden knop, gelegen tussen het programmeergebied en de opdrachtregel. Sla het bestand op als daarom wordt gevraagd:
- Voer de functie changeVolume() uit op de opdrachtregel en geef "up" door als argument voor de functie:
changeVolume("omhoog")
- Navigeer met behulp van het bestandsverkennervenster naar een geldig geluidsbestand:
- Klik op de Speel het hele geluid af knop met behulp van het nieuwe venster:
- Voer in de opdrachtregel changeVolume() opnieuw uit met de waarde "down" als argument en selecteer een bestand:
changeVolume("naar beneden")
- In het verkennervenster ziet u dat de geluidsgolven kleiner zijn. Klik op de Speel het hele geluid af knop met behulp van het nieuwe venster:
Hoe een geluidsfragment om te keren
U kunt een geluid omkeren door een nieuw leeg geluid te creëren en elke sample van het originele geluid in omgekeerde volgorde naar het nieuwe geluid te kopiëren.
- Vraag de gebruiker in een nieuwe functie om een WAV-bestand te selecteren en controleer of het bestand geldig is:
defomgekeerd geluid():
bestand = pickAFile()als bestand!= GeenEn bestand.eindigt(".wav"):
# Code voor geldig bestand
anders:
afdrukken("Ongeldig bestand geselecteerd. Kies een geldig WAV-bestand.") - Maak een nieuw geluidsobject van het geselecteerde bestand:
geluid = maakGeluid (bestand)
- Gebruik de ingebouwde functie makeEmptySound() om een nieuw leeg geluidsobject te maken. Dit zal bestaan uit hetzelfde aantal samples als het originele geluid. De amplitudewaarde voor elk monster is 0:
newReversedSound = makeEmptySound (getLength (geluid))
- Doorloop elke sample van het nieuwe lege geluidsobject:
voor i in bereik(0, getLength (nieuwReversedSound)):
- Neem voor elke sample op dat punt de sample aan de andere kant van het geluid. Als de samplelengte bijvoorbeeld 100 is en de huidige index 0, krijgt dit de samplewaarde op index 99. Evenzo, als de huidige index 3 is, krijgt dit de samplewaarde bij index 96:
sampleVal = getSampleValueAt (geluid, getLength (geluid) - 1 - i)
- Kopieer de samplewaarde van het andere uiteinde van het geluid naar de huidige index van het nieuwe geluid:
setSampleValueAt (newReversedSound, i, sampleVal)
- Ontdek het nieuwe omgekeerde geluid. U kunt ook het originele geluid verkennen voor vergelijkingsdoeleinden:
verkennen (geluid)
verkennen (nieuwReversedSound) - Klik op de Programma laden knop, gelegen tussen het programmeergebied en de opdrachtregel. Sla het bestand op als daarom wordt gevraagd.
- Voer de functie uit met behulp van de opdrachtregel:
omgekeerdeGeluid()
- Bekijk het originele geluid en het omgekeerde geluid met behulp van de verkennervensters. Klik op de Speel het hele geluid af knop om de verschillen te horen:
Hoe twee geluidsfragmenten samen te voegen
Om twee geluidsfragmenten samen te voegen, kunt u de gebruiker vragen om twee afzonderlijke WAV-bestanden te selecteren. Kopieer elke sample van beide geluiden naar het nieuwe geluidsobject.
- Maak een nieuwe functie genaamd joinSounds():
defsluit je aan bij Sounds():
- Gebruik de functie pickAFile() om de gebruiker te vragen het eerste bestand te selecteren. Als het ongeldig is, drukt u een foutbericht af:
bestand1 = kiesbestand()
als bestand1 == Geenofniet bestand1.eindigt met(".wav"):
afdrukken("Ongeldig bestand geselecteerd. Kies een geldig WAV-bestand.") - Gebruik opnieuw de functie pickAFile() om de gebruiker om een tweede geldig geluidsbestand te vragen:
bestand2 = kiesbestand()
als bestand2 == Geenofniet bestand2.eindigt met(".wav"):
afdrukken("Ongeldig bestand geselecteerd. Kies een geldig WAV-bestand.") - Maak twee geluidsobjecten van de twee geselecteerde geluidsbestanden:
geluid1 = maakGeluid (bestand1)
geluid2 = maakGeluid (bestand2) - Tel de lengtes van de twee geluiden bij elkaar op om de lengte van het nieuwe samengevoegde geluid te berekenen. Maak een nieuw leeg geluidsobject met de lengte:
nieuwGeluidLengte = getLengte (geluid1) + getLengte (geluid2)
joinSound = makeEmptySound (nieuweSoundLength) - Loop door elke sample van het eerste geluid. Kopieer de samplewaarde bij elke index naar het nieuwe geluid:
voor i in bereik(0, getLength (geluid1)):
sampleVal = haalSampleValueAt (geluid1, i)
setSampleValueAt (joinedSound, i, sampleVal) - Loop door elke sample van het tweede geluid. Kopieer de samplewaarde bij elke index naar het nieuwe geluid, na het eerste geluid:
voor i in bereik(0, getLength (geluid2)):
sampleVal = haalSampleValueAt (geluid2, i)
endOfFirstSound = getLength (geluid1) - 1
setSampleValueAt (joinedSound, endOfFirstSound + i, sampleVal) - Verken het geluid met behulp van de explore() functie:
verkennen (joinedSound)
- Klik op de Programma laden knop, gelegen tussen het programmeergebied en de opdrachtregel. Sla het bestand op als daarom wordt gevraagd.
- Voer de functie uit met behulp van de opdrachtregel:
joinSounds()
- Bekijk het samengevoegde geluid in het nieuwe venster en klik op de Speel het hele geluid af knop om het geluid te horen:
Geluidsbestanden importeren en bewerken met JES
Nu begrijp je hoe je geluidsbestanden importeert en bewerkt met JES. Er zijn zoveel andere ingebouwde functies die JES te bieden heeft, waarmee je nog geavanceerdere geluidsbewerkingen kunt uitvoeren.
U kunt meer te weten komen over de andere beschikbare functies met behulp van het JES-helpvenster.