JES har grundläggande stöd för ljudredigering, men du kan använda det för att utföra några användbara uppgifter.

JES är ett program som låter dig modifiera bilder, ljud och videor programmatiskt. JES har många inbyggda funktioner och felsökningsverktyg som hjälper dig att lära dig Jython-språket.

När du importerar en fil med JES kan du granska dess ljudvågor visuellt med hjälp av ett separat fönster. Du kan också manipulera amplitudvärdena för dessa ljudvågor vid specifika punkter. Detta kan hjälpa dig att redigera ljudfilen för att uppnå olika effekter.

Hur man ändrar volymen på ett ljudklipp

När du rendera en bild i JES, kan du komma åt de individuella pixlarna som den innehåller. Du kan uppnå vissa bildbehandlingstekniker genom att redigera de röda, gröna och blå färgvärdena för varje pixel.

På samma sätt innehåller en ljudfil många individuella "samples" som är små bitar av ljuddata. Du kan redigera ett importerat ljud genom att ändra amplitudvärdet vid varje sampel.

Koden som används i detta projekt är tillgänglig i detta GitHub repo under MIT-licensen.

instagram viewer
  1. Öppna JES-applikationen på din dator.
  2. Skapa en ny funktion som heter changeVolume(), som tar in volymen du vill ändra till som en ingång:
    defändra volym(vol):
  3. Inuti funktionen öppnar du en uppmaning för att be användaren att välja en giltig ljudfil. Även om JES inte är kompatibel med mp3-filer, kan du fortfarande importera WAV-filer. Lägg till lite validering för att se till att filen är kompatibel:
    fil = pickAFile() 

    om fil != Ingenoch file.endswith(".wav"):
    # Kod för giltig fil
    annan:
    skriva ut("Ogiltig fil har valts. Välj en giltig WAV-fil.")

  4. Om den valda filen är giltig, skapa ett ljudobjekt från den:
    ljud = göraLjud (fil)
  5. Gå igenom varje sampel av ljudet:
    för i i räckvidd(0, getLength (ljud)):
  6. Kontrollera om användaren har godkänts upp in i funktionen för att höja volymen högre. Om så är fallet, hämta exempelvärdet vid det indexet med den inbyggda getSampleValueAt()-funktionen. Öka volymen genom att dubbla amplituden och använd setSampleValueAt() för att ställa in det nya värdet:
    om vol == 'upp':
    sampleVal = getSampleValueAt (ljud, i)
    setSampleValueAt (ljud, i, sampleVal * 2)
  7. Kontrollera om användaren har godkänts ner in i funktionen för att göra volymen mjukare. Om så är fallet, hämta sampelvärdet vid det indexet och dividera det med 2 istället för att minska amplituden:
    om vol == 'ner':
    sampleVal = getSampleValueAt (ljud, i)
    setSampleValueAt (ljud, i, sampleVal / 2)
  8. Använd funktionen explore() för att öppna utforskarfönstret för ljudet:
    utforska (ljud)
  9. Klicka på Ladda program knappen, placerad mellan programmeringsområdet och kommandoraden. Spara filen om du uppmanas:
  10. Kör funktionen changeVolume() på kommandoraden och skicka "upp" som ett argument till funktionen:
    changeVolume("upp")
  11. Använd filutforskaren och navigera till en giltig ljudfil:
  12. Klicka på Spela hela ljudet knappen med det nya fönstret:
  13. På kommandoraden, kör changeVolume() igen med värdet "down" som argument och välj en fil:
    changeVolume("ner")
  14. I utforskarfönstret ser du att ljudvågorna är mindre. Klicka på Spela hela ljudet knappen med det nya fönstret:

Hur man vänder ett ljudklipp

Du kan vända ett ljud genom att skapa ett nytt tomt ljud och kopiera varje sampel av originalljudet till det nya ljudet i omvänd ordning.

  1. I en ny funktion, be användaren att välja en WAV-fil och kontrollera att filen är giltig:
    defomvänt ljud():
    fil = pickAFile()

    om fil != Ingenoch file.endswith(".wav"):
    # Kod för giltig fil
    annan:
    skriva ut("Ogiltig fil har valts. Välj en giltig WAV-fil.")

  2. Skapa ett nytt ljudobjekt från den valda filen:
    ljud = göraLjud (fil) 
  3. Använd den inbyggda makeEmptySound()-funktionen för att skapa ett nytt tomt ljudobjekt. Detta kommer att bestå av samma antal samplingar som originalljudet. Amplitudvärdet för varje prov kommer att vara 0:
    newReversedSound = makeEmptySound (getLength (ljud))
  4. Gå igenom varje prov av det nya tomma ljudobjektet:
    för i i räckvidd(0, getLength (newReversedSound)):
  5. För varje sampel vid den punkten, få sampla i motsatt ände av ljudet. Till exempel, om samplingslängden är 100 och det aktuella indexet är 0, kommer detta att få samplingsvärdet vid index 99. På liknande sätt, om det aktuella indexet är 3, kommer detta att få provvärdet vid index 96:
    sampleVal = getSampleValueAt (ljud, getLength (ljud) - 1 - i)
  6. Kopiera samplingsvärdet från den andra änden av ljudet till det aktuella indexet för det nya ljudet:
    setSampleValueAt (newReversedSound, i, sampleVal)
  7. Utforska det nya omvända ljudet. Du kan också utforska originalljudet för jämförelsesyften:
    utforska (ljud)
    utforska (newReversedSound)
  8. Klicka på Ladda program knappen, placerad mellan programmeringsområdet och kommandoraden. Spara filen om du uppmanas.
  9. Kör funktionen med hjälp av kommandoraden:
    reverseSound()
  10. Se originalljudet och det omvända ljudet med hjälp av utforskarfönstren. Klicka på Spela hela ljudet knappen för att höra skillnaderna:

Hur man sammanfogar två ljudklipp

För att sammanfoga två ljudklipp kan du be användaren att välja två separata WAV-filer. Kopiera varje sampel av båda ljuden till det nya ljudobjektet.

  1. Skapa en ny funktion som heter joinSounds():
    defjoinSounds():
  2. Använd funktionen pickAFile() för att uppmana användaren att välja den första filen. Om det är ogiltigt, skriv ut ett felmeddelande:
    fil1 = pickAFile()

    om fil1 == Ingenellerinte fil1.slutar med(".wav"):
    skriva ut("Ogiltig fil har valts. Välj en giltig WAV-fil.")

  3. Använd pickAFile()-funktionen igen för att be användaren om en andra giltig ljudfil:
    fil2 = pickAFile() 

    om fil2 == Ingenellerinte fil2.slutar med(".wav"):
    skriva ut("Ogiltig fil har valts. Välj en giltig WAV-fil.")

  4. Skapa två ljudobjekt från de två valda ljudfilerna:
    ljud1 = görLjud (fil1) 
    ljud2 = görLjud (fil2)
  5. Lägg till längden på de två ljuden för att beräkna längden på det nya sammanfogade ljudet. Skapa ett nytt tomt ljudobjekt med längden:
    newSoundLength = getLength (sound1) + getLength (sound2)
    joinedSound = makeEmptySound (newSoundLength)
  6. Gå igenom varje sampel av det första ljudet. Kopiera samplingsvärdet vid varje index till det nya ljudet:
    för i i räckvidd(0, getLength (ljud1)):
    sampleVal = getSampleValueAt (ljud1, i)
    setSampleValueAt (joinedSound, i, sampleVal)
  7. Gå igenom varje sampel av det andra ljudet. Kopiera sampelvärdet vid varje index till det nya ljudet, efter det första ljudet:
    för i i räckvidd(0, getLength (ljud2)):
    sampleVal = getSampleValueAt (ljud2, i)
    endOfFirstSound = getLength (ljud1) - 1
    setSampleValueAt (joinedSound, endOfFirstSound + i, sampleVal)
  8. Utforska ljudet med funktionen explore():
    utforska (joinedSound)
  9. Klicka på Ladda program knappen, placerad mellan programmeringsområdet och kommandoraden. Spara filen om du uppmanas.
  10. Kör funktionen med hjälp av kommandoraden:
    joinSounds()
  11. Se det sammanfogade ljudet i det nya fönstret och klicka på Spela hela ljudet knappen för att höra ljudet:

Importera och redigera ljudfiler med JES

Nu förstår du hur du importerar ljudfiler och redigerar dem med JES. Det finns så många andra inbyggda funktioner som JES har att erbjuda, som gör att du kan göra ännu mer avancerad ljudredigering.

Du kan lära dig mer om de andra tillgängliga funktionerna med hjälp av JES-hjälpfönstret.