无法在 Midi 控制器中添加多个电位器

Posted

技术标签:

【中文标题】无法在 Midi 控制器中添加多个电位器【英文标题】:Unable to add multiple potentiometer in Midi controller 【发布时间】:2015-08-26 14:58:42 【问题描述】:

我正在构建一个简单的基于 arduino 的 midi 控制器来发送 cc midi 消息,但是我只能通过 A0(模拟输入)发送消息。

我们将不胜感激。

#include <MIDI.h>
int pot[] = A0,A1,A2;
int AnaPinsNum = 3;
int potIn[] = 0,0,0;
int analogValue = 0;

int lastAnalogValue[] = 0,0,0;


 void setup() 
 
  MIDI.begin(4);
  // 115200 hairless MIDI
  Serial.begin(115200);
  int i;
  for (i = 0; i < 3; i++);
 
 void loop() 

  int i;
  for (i = 0; i < AnaPinsNum; i++)

  potIn[i] = analogRead(pot[i])/8;

  // potentiometer could be too sensitive and
  // give different (+-1) values.
  // send CC only when the difference between last value
  // is more than 1
  if ((potIn[i]-lastAnalogValue[i]) > 1 || (potIn[i]-lastAnalogValue[i]) < -1) 
    // value changed?
    if (potIn[i] != lastAnalogValue[i]) 
      // send serial value (ControlNumber 1, ControlValue = analogValue, Channel 1)
      // more info: http://arduinomidilib.sourceforge.net/a00001.html
      MIDI.sendControlChange(1, potIn[i], 1);
      lastAnalogValue[i] = potIn[i];
    
  


 

【问题讨论】:

【参考方案1】:

此代码格式不正确。

如果您使用了自动缩进代码的编辑器,它将如下所示:

  for (i = 0; i < AnaPinsNum; i++)
      potIn[i] = analogRead(pot[i])/8;

  // potentiometer could be too sensitive and ...
  if ((potIn[i]-...) 

换句话说,for 循环只包含一行;以下所有行在循环结束后执行,i 的值为 3。

你忘记了循环体周围的大括号。

【讨论】:

我是编码新手..不明白你的意思..因为当我在 Arduino IDE 中编译代码时它没有抛出任何错误.. 我理解了大括号并做到了......现在我能够检测到来自其他罐的信号,但它发送相同的消息..我想从不同的罐发送不同的消息......增加值的 1 ... 如果1号锅发出1号控制器和1号通道,2号锅应该发送2号控制器和2号通道..- 这是一个不同的问题。 (可以用i回答。)

以上是关于无法在 Midi 控制器中添加多个电位器的主要内容,如果未能解决你的问题,请参考以下文章

WebMidi.js 无法识别我的 midi 控制器

微控制器线性电位器输出

用于 Arduino 的 Korg Nanokey MIDI 控制器?

Pygame 读取 MIDI 输入

如何访问服务定位器对象ZF3控制器里面?

如何在 MIDI 文件中嵌入控制更改命令