亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino MIDI 琶音器:模块化固件 + 欧几里得节奏 + 硬件可扩展设计

项目演进

硬件架构

接口引脚/模块功能
7× 电位器A0~A6根音八度、和弦八度、BPM、根音、琶音步数、调式、琶音型
7× 按钮D2~D8 (INPUT_PULLUP)触发 7 种和弦进行(I~VII 级)
MIDI OUT (DIN-5)D1 (TX) + 220 Ω + 5V标准 31250 baud 电流环
2× LEDD9, D10运行指示 / 拍子闪烁
4× 220 ΩMIDI 电流限制 + LED 限流

音乐理论速查(固件内置)

模块化代码结构(arpeggio2 库核心类)


// 核心数据结构
struct Note { uint8_t pitch; uint8_t vel; uint16_t dur; }; // 音高、力度、时长(tick)
class Scale   { /* 根音+模式 → 音级数组 */ };
class Chord   { /* 级数+调式 → 音符集合 */ };
class Arpeggiator {
  Scale scale; Chord chord; EuclidRhythm rhythm;
  uint8_t style, steps, octaveRoot, octaveChord;
  void setParams(...);           // 映射电位器值
  void triggerChord(uint8_t deg); // 按钮回调
  Note nextNote();               // 每 tick 调用,返回下一音符或休止
};

// 硬件抽象层 (HAL) 示例
class Hal {
  virtual uint16_t readPot(uint8_t ch) = 0;
  virtual bool     readBtn(uint8_t ch) = 0;
  virtual void     midiSend(uint8_t status, uint8_t d1, uint8_t d2) = 0;
  virtual void     ledSet(uint8_t idx, bool on) = 0;
  virtual uint32_t millis() = 0;
};
// Arduino 实现见 hal_arduino.cpp

欧几里得节奏算法(Bjorklund 算法)

将 k 个 onset 尽可能均匀分布在 n 个步长中,生成传统非洲/巴尔干/电子音乐常用节奏型。


std::vector euclid(int n, int k) { // n=步长, k=onset数
  std::vector> seq;
  for (int i=0;i flat;
  for (auto &v: seq) flat.insert(flat.end(), v.begin(), v.end());
  return flat; // 长度 n, 含 k 个 true
}

固件移植指南

  1. 实现 Hal 纯虚类(读电位器、读按钮、发 MIDI、驱动 LED、取毫秒数)。
  2. 实例化 Arpeggiator,主循环以 1 ms tick 调用 nextNote(),非零则 midiSend(0x90, note.pitch, note.vel);note.dur 到期后发 0x80 Note Off。
  3. 电位器平滑:val = val*0.9 + analogRead()*0.1 防抖。
  4. 按钮边沿检测:上升沿触发 triggerChord()。

实战调试技巧

资源链接


一句话总结:从单片机单文件到跨平台 C++ 库,Arduino MIDI 琶音器 v2 以模块化架构支撑调式、和弦、欧几里得节奏、内外同步,是电子音乐控制器开发的优秀参考实现。

制造工艺

  1. Arduino 数字骰子:LCD 显示随机点数的电子骰子
  2. Unopad:基于 Arduino 的无缝 Ableton Live MIDI 控制器
  3. DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
  4. Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
  5. USB-BLE 无线 MIDI 适配器三种方案:让乐器无线连接 iOS 设备
  6. 打造功能完整的 Arduino 驱动 3D 打印机械臂:分步指南
  7. DIY Arduino 加湿器控制器:继电器安全控制高压电路
  8. 非接触体温筛查闸机:Arduino MKR1000 + 红外测温 + 舵机控制
  9. Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
  10. DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
  11. Arduino + TEA5767 打造 FM 收音机:Nokia 5110 显频谱/信号强度/立体声
  12. Arduino 101 计步器:集成 DHT11 温湿度 + LCD 显示步数/距离/卡路里