小编Btc*_*ces的帖子

不能和mingus一起玩

我来使用mingus试图在python中重现一些音符.根据这里的回答,我尝试过:

from mingus.midi import fluidsynth

fluidsynth.init('/home/btc/Escritorio/SinestesiaRCB/gfx/ViolinsLong.sf2',"alsa")

fluidsynth.play_Note(64,0,100)
#Also tried with Note("C-5") and so forth
Run Code Online (Sandbox Code Playgroud)

使用其中一个sf2文件.但后来我得到了错误:

fluidsynth:warning:无法将线程设置为高优先级

fluidsynth:警告:在通道9上找不到预设[bank = 128 prog = 0]

研究了一下,这个答案说:

对于通用MIDI兼容性,默认声音字体乐器分配为0至0道和10-15的0区,0级("Acoustic Grand Piano")和9频道的0级("默认鼓组")显然,你的声音字体没有后者.如果您的MIDI文件不采用通用MIDI兼容乐器并且不尝试在通道9上播放鼓声,则无关紧要.

但除此之外,这可能会让事情变得更加清晰,我仍然不知道如何解决它.

另外,如果我使用第一个链接的答案相同的文件,那么我得到的错误是这个(并且不知道如何解决它):

fluidsynth:warning:无法将线程设置为高优先级

fluidsynth:警告:无法将样本数据固定到RAM; 交换是可能的.

更新

使用sudo权限运行程序会删除此错误,但它不会发出声音.这样,我得到的错误是:

QStandardPaths:未设置XDG_RUNTIME_DIR,默认为'/ tmp/runtime-root'

我认为在fluidsynth驱动程序中选择的驱动程序模式可能存在问题,但我已尝试使用相同的结果(alsa,oss等).为了完整起见,我在VM中运行它,其中的其他声音在我的主机扬声器中正确再现.

但是根据这个答案,我想它应该通过传递给它正确的声音环境变量来解决.我不知道.我尝试过:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY python3 /home/btc/Escritorio/SinestesiaRCB/SinestesiaRCB.py
Run Code Online (Sandbox Code Playgroud)

在需要文件的完整路径的地方,因为这需要sudo权限并更改其工作目录,最后出现同样的错误:XDG_RUNTIME_DIR.

更新2

如果我使用sudo -E选项运行它,则错误将替换为新错误:

QStandardPaths:运行时目录/ run/user/1000上的错误所有权,1000而不是0

我正在读一些网页,1000用户应该是默认用户而不是root用户. …

python audio-player

5
推荐指数
1
解决办法
326
查看次数

了解PropertyChanged机制的工作原理(工作流程)

澄清:1.- 我不知道这是否有一个特定的名称或单词用英语或编程俚语引用它,所以也许这可能是一个重复的帖子,因为我无法看到它.

2.-我对这些东西完全是新手,我从未使用过处理程序,所以这是问题的一部分.

我试图了解NotifyPropertyChanged机制的工作原理.基于:INotifyPropertyChanged,专注于示例.(我用西班牙语看,如果不改变自动,你可以把它改成原来的英文版.

现在我要提取让我惊讶的主要代码,并尝试分析它.希望你能告诉我哪里(如果存在)我错了,我无法理解.让我们专注于实现接口的类.

// This is a simple customer class that 
// implements the IPropertyChange interface.
public class DemoCustomer : INotifyPropertyChanged
{
    // These fields hold the values for the public properties.
    private Guid idValue = Guid.NewGuid();
    private string customerNameValue = String.Empty;
    private string phoneNumberValue = String.Empty;

    public event PropertyChangedEventHandler PropertyChanged;

    // This method is called by the Set accessor of each property.
    // The CallerMemberName attribute that is applied to …
Run Code Online (Sandbox Code Playgroud)

c# events

4
推荐指数
1
解决办法
4586
查看次数

DFT 和 FFT(幅度)结果之间的差异

我的目标DFT是在 OpenCV 中获取图像。

使用dft函数,我可以计算它,然后通过计算它的大小来绘制它(然后,应用对数并最终对其进行归一化以绘制 0 到 1 之间的值)。

我的结果是,对于下面的图像,我向您展示的结果(交换以在图像的中心具有较低的频率):

原图 DFT 幅度

但是,如果我将它与使用其他工具(如Halcon )获得的结果进行比较,这对我来说似乎不正确,因为它似乎具有非常“高”的值(我的意思是 OpenCV DFT 量级):

FFT哈尔康

我认为可能是以下原因:

  1. DFT(在OpenCV)和FFT(Halcon)的区别
  2. 我正在执行的操作是为了显示OpenCV 中的大小

一个有我很难分析的问题,OpenCV没有FFT功能,Halcon也没有DFT功能(当然如果我没有错的话),所以我可以不直接比较。

第二个是我工作时间最长的地方,但我仍然找不到原因。

img这是我用来绘制大小的代码(这是我的 DFT 图像):

// 1.- To split the image in Re | Im values
Mat planes[] = {Mat_<float>(img), Mat::zeros(img.size(), CV_32F)};

// 2.- To magnitude + phase
split(img, planes);

// Calculate magnitude. I overwrite it, I know, but this is inside a function so it …
Run Code Online (Sandbox Code Playgroud)

opencv dft

4
推荐指数
1
解决办法
2033
查看次数

如何在 tkinter 中禁用 Treeview 上的多选

我有一个Treeview小部件,一次只需要选择一行/一个项目。我一直在阅读doc,但我找不到任何属性或方法来这样做,也没有找到对 SO 有用的东西。

有可能吗?如何?

python tkinter ttk python-3.5

4
推荐指数
1
解决办法
1871
查看次数

Matlab重塑功能:元素数量不得更改

我想reshape()通过调用以下自定义函数在matlab中使用函数:

imgRgb = reshape(convertYuvToRgb(reshape(imgYuv, height*width, 3)), height, width, 3);
Run Code Online (Sandbox Code Playgroud)

这里:

width=352
height=288
Run Code Online (Sandbox Code Playgroud)

并且imgYuv是一个4D矩阵.

但是,系统给了我以下错误消息:

要重新安置,元素的数量不得改变.

任何专家都可以给我一些提示吗?

谢谢!

matlab function reshape

2
推荐指数
1
解决办法
5544
查看次数

如何在 python-telegram-api 的 ConversationHandler 中管理当前状态

我想在我的机器人中使用ConversationHandler。至少,它需要三个参数:

class telegram.ext.ConversationHandler(entry_points, states, fallbacks)
Run Code Online (Sandbox Code Playgroud)

AFAIK,入口点是对话处理程序的触发器,然后每个状态都可以执行自己的处理程序,并且基于回退定义,如果状态中的所有处理程序都返回false,则触发回退。

好的,因此,处理程序会返回一些内容。但处理程序是一个对象,一个类的实例。

基于这个例子,寻找例子来了new_alarm_handler

所以我的疑惑

  1. 处理程序如何返回值?(他们似乎返回了回调函数结果)。

  2. 对话的当前状态在哪里?它似乎无法访问,但却是最后执行的处理程序的最后结果。是吗?如果不是,那么我必须做什么才能改变对话中的当前状态?

  3. 因此,当达到某个状态时,states将执行它们的处理程序列表(作为 arg 传递的字典中的值)。但作为一个列表,它可能不止一个,因此可能有多个返回状态。它是如何管理的?

python python-telegram-bot

2
推荐指数
1
解决办法
7221
查看次数

侵蚀太慢 - Opencv

我正在对 a应用侵蚀操作Mat,但速度非常慢。

由于在 OpenCV 中,您可以通过两种不同的方式(使用morphologyEx和使用erode)来应用它。

我正在测量(大约)它运行的速度,但它们都非常慢!

这部分的代码是:

    int morph_size = 20;
    Mat element = getStructuringElement( MORPH_ELLIPSE, cv::Size( 2*morph_size + 1 , 2*morph_size +1), cv::Point( morph_size, morph_size ) );

    // morphologyEx(imgMascara, imgMascara, MORPH_ERODE, element );
finish_time5 = clock();

    erode( imgMascara, imgMascara, element );

finish_time6 = clock();
Run Code Online (Sandbox Code Playgroud)

哪里imgMascaraMat. 然后,当我测量从开始到finish_time5和的时间时finish_time6,我得到:

0.0198s
0.887s
Run Code Online (Sandbox Code Playgroud)

知道为什么需要太多时间吗?(它发生在两个函数,morphologyExerode)。

先感谢您

c++ performance opencv

1
推荐指数
1
解决办法
3127
查看次数

Sed似乎工作但文件不会改变

基于:sed:替换部分行

我想修改我的sysctl.conf文件.包含的行PermitTunnel something必须更改为PermitTunnel point-to-point.

因此,在之前的帖子中,我会使用:

sed -e 's/PermitTunnel.*$/PermitTunnel point-to-point/g'
Run Code Online (Sandbox Code Playgroud)

包括在我的文件行的末尾.

既然-n没有使用,我想我应该在标准输出中接收我操作的结果.然后我执行它并得到(注意我正在使用-2--to-不仅仅是为了看看我是否可以根据需要修改文件,因为在这种情况下文件已经有了所需的行):

root@debian:/home/dit# sed -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf 
PermitTunnel point-2-point
Run Code Online (Sandbox Code Playgroud)

但后来我做了:

root@debian:/home/dit# cat /etc/sysctl.conf | grep PermitTunnel
PermitTunnel point-to-point
Run Code Online (Sandbox Code Playgroud)

如您所见,文件没有改变.我究竟做错了什么?

谢谢阅读

bash sed

-1
推荐指数
1
解决办法
681
查看次数