O JES tem suporte básico para edição de som, mas você pode usá-lo para realizar algumas tarefas úteis.

JES é um programa que permite modificar imagens, sons e vídeos programaticamente. O JES possui muitas funções integradas e ferramentas de depuração para ajudá-lo a aprender a linguagem Jython.

Ao importar um arquivo usando JES, você pode examinar suas ondas sonoras visualmente, usando uma janela separada. Você também pode manipular os valores de amplitude dessas ondas sonoras em pontos específicos. Isso pode ajudá-lo a editar o arquivo de som para obter diferentes efeitos.

Como alterar o volume de um clipe de som

Quando você renderizar uma imagem em JES, você pode acessar os pixels individuais que ele contém. Você pode alcançar certos técnicas de processamento de imagem editando os valores das cores vermelho, verde e azul para cada pixel.

Da mesma forma, um arquivo de som contém muitas "amostras" individuais que são pequenos pedaços de dados de som. Você pode editar um som importado alterando o valor de amplitude em cada amostra.

instagram viewer

O código utilizado neste projeto está disponível neste repositório GitHub sob a licença do MIT.

  1. Abra o aplicativo JES em seu computador.
  2. Crie uma nova função chamada changeVolume(), que recebe o volume para o qual você deseja alterar como entrada:
    defmudarVolume(vol):
  3. Dentro da função, abra um prompt para solicitar ao usuário que selecione um arquivo de som válido. Embora o JES não seja compatível com arquivos mp3, você ainda pode importar arquivos WAV. Adicione alguma validação para garantir que o arquivo seja compatível:
    arquivo = pickAFile() 

    se arquivo != Nenhume arquivo.terminacom(".wav"):
    # Código para arquivo válido
    outro:
    imprimir("Arquivo inválido selecionado. Escolha um arquivo WAV válido.")

  4. Se o arquivo selecionado for válido, crie um objeto de som a partir dele:
    som = makeSound (arquivo)
  5. Percorra cada amostra do som:
    para eu em faixa(0, getLength (som)):
  6. Verifique se o usuário passou acima na função para aumentar o volume. Nesse caso, obtenha o valor de amostra nesse índice usando a função integrada getSampleValueAt(). Aumente o volume dobrando a amplitude e use setSampleValueAt() para definir o novo valor:
    se volume == 'acima':
    sampleVal = getSampleValueAt (som, i)
    setSampleValueAt (som, i, sampleVal * 2)
  7. Verifique se o usuário passou abaixo na função para tornar o volume mais suave. Em caso afirmativo, obtenha o valor da amostra nesse índice e divida-o por 2, para reduzir a amplitude:
    se volume == 'abaixo':
    sampleVal = getSampleValueAt (som, i)
    setSampleValueAt (som, i, sampleVal / 2)
  8. Use a função explore() para abrir a janela do explorer para o som:
    explorar (som)
  9. Clique no Carregar programa botão, localizado entre a área de programação e a linha de comando. Salve o arquivo se solicitado:
  10. Execute a função changeVolume() na linha de comando, passando "up" como argumento para a função:
    alterarVolume("acima")
  11. Usando a janela do explorador de arquivos, navegue até um arquivo de som válido:
  12. Clique no Reproduzir som inteiro botão usando a nova janela:
  13. Na linha de comando, execute o changeVolume() novamente com o valor "down" como argumento e selecione um arquivo:
    alterarVolume("para baixo")
  14. Na janela do explorer, você verá que as ondas sonoras são menores. Clique no Reproduzir som inteiro botão usando a nova janela:

Como inverter um clipe de som

Você pode inverter um som criando um novo som vazio e copiando cada amostra do som original para o novo som na ordem inversa.

  1. Em uma nova função, solicite ao usuário que selecione um arquivo WAV e verifique se o arquivo é válido:
    defsom reverso():
    arquivo = pickAFile()

    se arquivo != Nenhume arquivo.terminacom(".wav"):
    # Código para arquivo válido
    outro:
    imprimir("Arquivo inválido selecionado. Escolha um arquivo WAV válido.")

  2. Crie um novo objeto de som a partir do arquivo selecionado:
    som = makeSound (arquivo) 
  3. Use a função integrada makeEmptySound() para criar um novo objeto de som vazio. Isso consistirá no mesmo número de amostras do som original. O valor de amplitude para cada amostra será 0:
    newReversedSound = makeEmptySound (getLength (som))
  4. Percorra cada amostra do novo objeto de som vazio:
    para eu em faixa(0, getLength (novoReversedSound)):
  5. Para cada amostra naquele ponto, pegue a amostra na extremidade oposta do som. Por exemplo, se o tamanho da amostra for 100 e o índice atual for 0, obterá o valor da amostra no índice 99. Da mesma forma, se o índice atual for 3, obterá o valor de amostra no índice 96:
    sampleVal = getSampleValueAt (som, getLength (som) - 1 - eu)
  6. Copie o valor da amostra da outra extremidade do som para o índice atual do novo som:
    setSampleValueAt (newReversedSound, i, sampleVal)
  7. Explore o novo som invertido. Você também pode explorar o som original para fins de comparação:
    explorar (som)
    explore (newReversedSound)
  8. Clique no Carregar programa botão, localizado entre a área de programação e a linha de comando. Salve o arquivo, se solicitado.
  9. Execute a função usando a linha de comando:
    reverseSound()
  10. Visualize o som original e o som invertido usando as janelas do explorer. Clique no Reproduzir som inteiro botão para ouvir as diferenças:

Como Juntar Dois Clipes de Som

Para unir dois clipes de som, você pode pedir ao usuário para selecionar dois arquivos WAV separados. Copie cada amostra de ambos os sons para o novo objeto de som.

  1. Crie uma nova função chamada joinSounds():
    defjoinSounds():
  2. Use a função pickAFile() para solicitar que o usuário selecione o primeiro arquivo. Se for inválido, imprima uma mensagem de erro:
    arquivo1 = pickAFile()

    se arquivo1 == Nenhumounão arquivo1.terminacom(".wav"):
    imprimir("Arquivo inválido selecionado. Escolha um arquivo WAV válido.")

  3. Use a função pickAFile() novamente para solicitar ao usuário um segundo arquivo de som válido:
    arquivo2 = pickAFile() 

    se arquivo2 == Nenhumounão arquivo2.terminacom(".wav"):
    imprimir("Arquivo inválido selecionado. Escolha um arquivo WAV válido.")

  4. Crie dois objetos de som a partir dos dois arquivos de som selecionados:
    som1 = makeSound (arquivo1) 
    sound2 = makeSound (arquivo2)
  5. Some as durações dos dois sons para calcular a duração do novo som unido. Crie um novo objeto de som vazio usando o comprimento:
    newSoundLength = getLength (som1) + getLength (som2)
    joinSound = makeEmptySound (newSoundLength)
  6. Percorra cada amostra do primeiro som. Copie o valor da amostra em cada índice para o novo som:
    para eu em faixa(0, getLength (som1)):
    sampleVal = getSampleValueAt (som1, i)
    setSampleValueAt (joinedSound, i, sampleVal)
  7. Percorra cada amostra do segundo som. Copie o valor da amostra em cada índice para o novo som, após o primeiro som:
    para eu em faixa(0, getLength (som2)):
    sampleVal = getSampleValueAt (som2, i)
    endOfFirstSound = getLength (som1) - 1
    setSampleValueAt (joinedSound, endOfFirstSound + i, sampleVal)
  8. Explore o som usando a função explore():
    explorar (joinedSound)
  9. Clique no Carregar programa botão, localizado entre a área de programação e a linha de comando. Salve o arquivo, se solicitado.
  10. Execute a função usando a linha de comando:
    joinSounds()
  11. Visualize o som reunido usando a nova janela e clique no botão Reproduzir som inteiro botão para ouvir o som:

Importando e editando arquivos de som usando JES

Agora você entende como importar arquivos de som e editá-los usando JES. Existem muitas outras funções integradas que o JES tem a oferecer, que permitirão que você faça uma edição de som ainda mais avançada.

Você pode aprender mais sobre as outras funções disponíveis usando a janela de ajuda do JES.