在函数之间传递None变量



我创建了一个基于sounddevice playrec()的播放和记录函数

参见:python-sounddevice

它们使用如下方法inputparameters

def playrec(data, samplerate=None, channels=None, dtype=None,
            out=None, input_mapping=None, output_mapping=None, blocking=False,
            **kwargs):

所以我想做同样的事情,把一些变量传递给默认函数如:

import numpy as np
T = 10
fs = 44100
t =  np.arange(10*fs)
x = np.sin(2*np.pi* 440*t) + 0.5*np.sin(2*np.pi* 880*t) + 0.25 * np.sin(2*np.pi* 1320*t)
rec1 = customplayrec(x.T, fs, input_channels=2, output_channels=2, repeats=3)
def customplayrec(data, samplerate=None, input_channels=None, output_channels=None,
           repeats=None, l0=None, cascade=False, dtype=None, out=None,
           input_mapping=None, output_mapping=None, blocking=False, **kwargs):
    import sounddevice as sd  
    #... filter some variables
    record = sd.playrec(data, samplerate, input_channels, dtype, out,
                        input_mapping, output_mapping, blocking, kwargs)
    #... do something with data...
    return(record)

结果是该函数中断(它不播放和记录任何声音)。
我没有得到一个错误…所以我已经测试了我的断裂,我发现了。函数开始前一行,一切正常。
此外,spyder不会显示None的变量。
所以我认为它与通过。

传递输入值有关。

如果这些变量不是空的,我怎么传递它们呢?

    方法或模块

如果一个类似的问题已经存在,我搜索但不知道正确的关键字…

Thanks in advance

让我把我的评论作为一个答案(有保留,因为我不能测试你的代码):

  1. 确保你的数据实际上是一个波,而不仅仅是一个常量数组值。我怀疑你忘记把t包含在三角函数的参数中了

  2. sd.playrc调用的最后一个参数应该是**kwargs,而不仅仅是kwargs

在注释之后,它看起来在我的脚本中使用的方法是没有错的…可能是python-sounddevice相关的问题。在python-sounddevice的github页面上,我看到可能有一个关于同一主题的相关问题…
参见sounddevice第38期
所以现在我不能再深入了,但至少我有一个答案…

最新更新