不适当的参数值(正确类型)。在JES(Python / Jython)

时间:2015-03-01 08:06:26

标签: python computer-science jython jes

嘿所以我正在使用JES为我的Python类编写一些编码作业。我们的任务是发出声音,在背景中添加一些白噪声并添加回声。还有一些更精确的但我相信我很好。我们正在进行四种不同的功能:主要的,基于用户定义的时间长度和回声量的回声方程,白噪声生成函数和合并噪声的函数。

这是我迄今为止所拥有的,还没有开始合并或主要的。

#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。

1 个答案:

答案 0 :(得分:1)

检查setSampleValueAt的参数;您的样本值必须超出范围(应在-32768 - 32767内)。您需要为算法执行某种输出钳位。

另一种可能性(确实是错误,根据进一步的输入)是你的回声将超出样本的范围 - 也就是说,如果你的样本是5秒长,并且回声长0.5秒;或posns1 + delay超出样本的长度;新声音的长度计算不正确。