2015-03-01 1 views
0

Эй, я просто работаю над некоторой домашней работой по кодированию для моего класса Python с помощью JES. Наше задание - сделать звук, добавить белый фон к фону и добавить эхо. Есть немного более точно, но я считаю, что я в порядке с этим. Существуют четыре различные функции, которые мы делаем: основное, уравнение эха, основанное на заданной пользователем длительности и количестве эхо-сигналов, функции генерации белого шума и функции для объединения шумов.Недопустимое значение аргумента (правильного типа). в JES (Python/Jython)

Вот что я до сих пор, еще не начал слияние или главное. .

#put the following line at the top of your file. This will let 
#you access the random module functions 
import random 

#White noise Generation functiton, requires a sound to match sound length 
def whiteNoiseGenerator(baseSound) : 
noise = makeEmptySound(getLength(baseSound)) 
index = 0 
for index in range(0, getLength(baseSound)) : 
    sample = random.randint(-500, 500) 
    setSampleValueAt(noise, index, sample) 
return noise 


def multipleEchoesGenerator(sound, delay, number) : 
    endSound = getLength(sound) 
    newEndSound = endSound +(delay * number) 

    len = 1 + int(newEndSound/getSamplingRate(sound)) 
    newSound = makeEmptySound(len) 

    echoAmplitude = 1.0 
    for echoCount in range (1, number) : 
    echoAmplitude = echoAmplitude * 0.60 
    for posns1 in range (0, endSound): 
    posns2 = posns1 + (delay * echoCount) 
    values1 = getSampleValueAt(sound, posns1) * echoAmplitude 
    values2 = getSampleValueAt(newSound, posns2) 
    setSampleValueAt (newSound, posns2, values1 + values2) 
return newSound 

Я получаю эту ошибку, когда я пытаюсь загрузить его в

Ошибка:

Inappropriate argument value (of correct type). 
An error occurred attempting to pass an argument to a function. 
Please check line 38 of C:\Users\insanity180\Desktop\Work\Winter Sophomore\CS 140\homework3\homework_3.py 

Эта строка кода:

setSampleValueAt (newSound, posns2, values1 + values2) 

Любой есть идея, что здесь может произойти? Любая помощь будет отличной, так как я надеюсь, что у меня хватит времени, чтобы закончить кодирование этого задания. Я получил аналогичную ошибку раньше, и это была обычно синтаксическая ошибка, но я не вижу таких ошибок здесь.

Звук создается до запуска этой программы, и я определил задержку и число как значения 1 и 3 соответственно.

+0

Прошу прощения, я смущен тем, что вы подразумеваете под этим Антти. Мое предположение setSampleValueAt заключается в том, что оно вообще объявляется, и больше похоже на первую связанную мной функцию, которая генерирует белый шум. Это удалось запустить без определения (поскольку оно изменяет значение выборки для каждой позиции в звуке). Я до сих пор довольно новичок в кодировании, но я не считаю, что его нужно определить. – insanity180

ответ

1

Проверьте аргументы setSampleValueAt; ваше значение выборки должно быть за пределами (должно быть в пределах -32768 - 32767). Вам нужно сделать какой-то выходной зажим для вашего алгоритма.

Другая возможность (которая действительно была ошибкой, в соответствии с дополнительным вводом) заключается в том, что ваше эхо будет вне диапазона выборки - то есть, если ваш образец был 5 секунд, а эхо составляло 0,5 секунды длинный; или posns1 + delay находится за пределами длины образца; длина нового звука рассчитывается неправильно.

+0

Я не уверен, что вы подразумеваете под выводом, хотя я не верю, что это ошибка. Через некоторые комментарии из частей, я считаю, ошибка связана с posn2 частью кода, хотя я не уверен, почему. Когда я определяю его, я даю ему значение posn1 (которое должно быть int), а затем добавляет задержку и echoCount. Они просто цифры, ничто не должно вызывать ошибок там. Я даже попытался определить echoCount и дал ему значение 1, но это не принесло пользы. – insanity180

+0

Также заметил, что это также появляется в сообщении об ошибке, которое я забыл опубликовать. «Вы пытаетесь получить доступ к образцу по индексу: 6, но последний действительный индекс равен 5» – insanity180

+0

Я не думаю, что это проблема, поскольку, когда я определяю newEndSound, я определяю его длину от исходного звука, затем добавляю к нему время задержки времени числа эхо-сигналов. Должно быть, как долго это не так? – insanity180

 Смежные вопросы

  • Нет связанных вопросов^_^