Hackordion,看到这个名字你大概能猜出来:这是把“hack”和“accordion”硬凑在一起的玩意儿。说白了,就是把一台报废的手风琴改装成适合街头演出(busking)的电子管风琴。街头管风琴其实不少见,但大多是纯数字采样或者笨重的机械装置;Hackordion想做的是另一条路——保留手风琴最迷人的风箱,却让它发出管风琴的声音。标题里的“another”也是在说,我不是想造第一台,而是想换一种思路,做“另一台”。
这玩意儿适合谁看?如果你玩合成器、喜欢乐器改装、或者正准备做一件街头演出用的电子乐器,这篇应该能给你不少可以落地的参考。我不会只给你一张成品图,而是把从选琴、拆解、传感器安装、软件映射到现场调试的完整链条都摊开讲,包括那些只有动手做才会碰到的破事。
1. 为什么做“Hackordion”:当手风琴遇见管风琴
传统手风琴的魅力在于风箱。推拉之间,压力变化直接决定了音量、音色和乐句的呼吸感。但传统手风琴的问题也很明显:调音麻烦,簧片受潮就跑音;音量再大也有限,街头嘈杂一点就压不住;音色更是固定成那一种,想换个管风琴味儿完全没有办法。
电子手风琴倒是能解决音色和音量问题,但市面上大多数电子手风琴还是把风箱当作一个简单的音量开关在用,没有把风箱压力的细微变化当作核心表现参数。Hackordion的目标不是“复刻手风琴”,而是把手风琴的“呼吸感”变成合成器的一个控制源,用它去驱动管风琴音色。
1.1 街头表演对乐器的真实需求
街头演出和舞台演出最大的区别是没有隔音,没有调音师,也没有稳定的供电。乐器必须满足几个条件:便携、皮实、能接自带功放、续航够一场两小时的演出,最好还能在恶劣天气下不心疼。
传统手风琴的声压级天然有限。我在开阔街区试过,只要旁边有辆卡车经过,旋律基本就被吞掉了。而电子管风琴接上功放之后,音量完全不是问题,还能加混响、延迟这些街头很加分的效果。
但普通电子琴/合成器的键盘演奏方式又和手风琴不一样:电子琴的强弱靠按键力度,手风琴的强弱靠风箱气压,一种是一次性冲击,一种是持续控制。管风琴恰恰也是“持续供气”的乐器,所以风箱控制管风琴音色,逻辑上比控制钢琴音色顺畅太多。
1.2 从“复刻”到“混血”:这台机器的设计目标
Hackordion的结构很简单:保留手风琴的外壳、键盘、贝斯按钮和风箱;拆掉所有发声簧片;在风箱内部装压力传感器;再用单片机和微型电脑来读取操作、合成音色。
设计目标从一开始就很明确:
- 风箱推拉时,压力稳定地映射到音量和音色亮度;
- 右手键盘演奏旋律,左手贝斯按钮触发和弦或低音;
- 音色不锁死,可以随时切换成不同管风琴音栓组合;
- 内置功放、喇叭和电池,不依赖外部设备;
- 保留机械手感和物理反馈,而不是用弹簧按钮代替风箱。
换句话说,这是一台“混血”乐器:物理上是手风琴,声音上是管风琴,内部又是合成器。这个混搭逻辑也是Hackordion区别于普通数字采样手风琴的关键。
2. 硬件改造:旧手风琴废壳的重生
整个改造项目里,硬件部分占了大约七成工作量。选对琴、拆干净、把传感器和按键装得可靠,后面软件调的再花哨才有意义。
2.1 选琴与拆解
我用的是一台已经报废的120贝斯手风琴。贝斯数量多意味着左手按钮多,并不代表演奏时要全部用上,但物理空间和键盘布局更接近真实手风琴。如果预算有限,60贝斯甚至48贝斯也够,只是左手区会窄一些。
拆解时,先把两侧外壳拆开,把簧片盖板、气门、皮革垫全部拆掉。簧片可以直接完整取下来留作纪念,也可以卖废品。要保留的是四块东西:
- 左右两侧木质外壳;
- 右手键盘和它们的杠杆结构;
- 左手贝斯按钮阵列;
- 中间的风箱。
风箱是改造成败的关键。传统手风琴风箱由十几层纸板加皮革折角组成,用久了会有裂缝。试想一下,如果风箱漏气,你在琴体内部测到的压力就永远是微弱波动的,演奏的呼吸感全没了。所以第一步就是把风箱的折角、边缝都检查一遍,用皮革胶补漏,再用密封胶把原簧片盖板的孔洞封住。有些改装教程会直接换新风箱,但旧风箱只要气密性好,完全不用换。
2.2 风箱压力传感器:如何捕捉“呼吸感”
风箱压力传感器是整个Hackordion的灵魂。市面上的方案主要有两种:一种是绝对压力传感器,放在风箱内部,再在外部放一只参考传感器,用两者差值判断压差;另一种是差分压力传感器,直接测量两个腔体的压差。
我用的是MEMS绝对压力传感器。这类传感器体积小、便宜、功耗低,但输出通常是数字总线。要在单片机上移植驱动,读出来的原始值需要校准。手推风箱的压强变化大约在±5kPa左右,而传感器的量程往往是10kPa以上,所以要把零点偏移和满量程都标定好。
传感器安装位置也要注意:不能直接裸露在风箱里,因为推拉风箱时气流会直接冲击芯片,导致读数乱跳。我在琴体侧板内部开了一个小孔,用一段硅胶软管把风箱内腔和传感器连接,软管口加了一层薄海绵,起到缓冲和防尘作用。
采样率至少要到100Hz。街头演奏时风箱压力变化是连续且快速的,采样率低了,音符强弱会变得一顿一顿。如果用单片机读传感器,每次读完后换算成气压值,再通过USB串口发送给音源。
2.3 键盘与贝斯按钮的信号采集
旧手风琴键盘在按下时是通过杠杆抬起气门盖的,本来没有电触点。要让单片机知道琴键什么时候按下,最常见的方法是加微动开关。
但120贝斯按钮阵列空间很小,微动开关装不了那么多。而且机械开关有寿命和抖动问题,快速连击时容易误触。我最后选的是霍尔开关方案:在每一个琴键杠杆末端粘一颗小磁铁,在固定底板上贴霍尔传感器。琴键按下时,磁铁靠近霍尔开关,输出电平翻转。
霍尔开关的好处很明显:非接触、寿命长、几乎没有弹跳,也不需要机械调整。缺点是磁铁和传感器要一一对准,装配时比较费眼。右手键盘有几十个琴键,加上左手贝斯按钮,一共需要五十到七十个霍尔开关。如果不想花时间做磁铁对准,退而求其次用微动开关也可以,但后期维护会比较麻烦。
信号采集用矩阵扫描方式,把所有霍尔传感器按行列排布,单片机轮流给每一行通电,读取每一列的电平。这样六十多个按键只需要不到二十根IO口,大大节省了引脚资源。扫描频率只要大于200Hz就不会感觉延迟。
2.4 主控与音源选型
整个系统需要一个“手”来读传感器,还需要一个“大脑”来发声。我的分工是:
- 单片机采集板负责按键扫描、传感器读取、发送MIDI消息;
- 微型电脑负责加载音色库、合成音频、连接功放。
为什么不让单片机直接发声?因为管风琴音色采样和合成需要大量内存和处理器性能,单片机做起来很吃力,就算能跑,音色库也扩展不了。用微型电脑做音源,优点是可以随便换SoundFont音色库,甚至可以跑更复杂的合成引擎。缺点是启动慢、耗电高。但对于街头乐器来说,启动慢不是问题,电池容量做够就行。
采集板和音源之间用USB连接。采集板被系统识别为MIDI设备,所有音符、控制变化都走标准MIDI协议。这样即便以后想换音源,也不用改硬件代码。
功放我用的是D类功放模块,功率在30W左右。喇叭内置在琴体侧面,开口朝前,避免朝后打在人身上。如果现场观众多,也可以从功放模块拉一个线路输出,接到更大的独立音箱。
3. 软件与信号链:让风箱变成合成器参数
硬件装好后,最难的部分不是接线,而是把“风箱压力”转换成“音乐表情”。这一节我会把信号链展开讲清楚,从传感器滤波到MIDI映射,再到延迟控制。
3.1 压力校准与滤波
传感器原始数据不可能直接用。首先,静置时风箱内外压差为零,但传感器有偏置,需要先做零点校准。其次,演奏时风箱快速推拉,会在信号上叠加一些高频噪声。我在采集板上做了一阶低通滤波:
pressure_raw = sensor_read(); pressure_filtered = 0.8 * pressure_raw + 0.2 * pressure_previous; pressure_previous = pressure_filtered;系数0.2/0.8可以根据手感调。系数调太大,压力变化会显得很“肉”;调太小,演奏强音时数值跳变又会导致音量抖动。我的经验是滤波后的数据能看清波形,但又不觉得迟钝。
然后做归一化:
pressure = (pressure_filtered - zero_offset) / (max_pressure - zero_offset);max_pressure是用力推满风箱时读到的最大值。不同人的手劲不同,这个值最好在软件里留一个自动校准入口,演出前快速按几下风箱就能自动确定。
推拉风箱时压力有正负方向。推风箱时内部压力高于外部,拉风箱时内部压力低于外部。对管风琴音色来说,正负压力对应的音色可以一样,但需要处理过零点的迟滞问题,否则在推拉切换瞬间音量会突然掉到零,听感上像被剪断。我的方案是:把绝对压力小于5%的区间视为“静默”,超过5%后才逐渐加到最小可听音量。
3.2 音色引擎为什么选择管风琴
管风琴是少数以持续气流发声的乐器。手风琴风箱提供的压力和管风琴的供气风箱在物理逻辑上高度一致:压力高,音量高,谐波更亮;压力低,音色变暗,音量变低。用钢琴音色模拟这种关联就很别扭。
Hackordion的音色库用的是管风琴采样音源,选择“Principal 8’”和“Flute 4’”这类基本音栓组合。街头环境下,太多混响效果会让声音发混,所以我关掉了大多数内置效果,让现场听感更接近真正的机械管风琴。
有一个细节值得提:管风琴音色的起音速度很快,几乎是瞬态到达,不像钢琴有摩擦力冲击感。这正好和霍尔开关按键匹配,按键按下后音符立刻出来,不需要额外包络处理。
3.3 MIDI映射与CC控制
采集板把按键和压力转换成MIDI消息:
- 右手键盘:每个琴键对应一个音符,按下发送Note On,松开发送Note Off;
- 左手贝斯按钮:每个按钮映射到预设和弦或低音音高;
- 风箱压力:转换为MIDI CC值。
管风琴音色最需要的是控制“总音量”和“滤波亮度”。我把压力映射到两个CC通道,一个用于音量,一个用于滤波器。音量控制放在最前端,直接影响主输出;滤波器CC控制音色的亮度,压力越大,高次谐波越明显,像管风琴在强大送气压力下的“激扬感”。
左手贝斯按钮的映射比较灵活。120个按钮如果每个都对应独立音高,会非常难演奏。更实用的做法是把常用按钮映射成几个和弦,例如C、G、Am、F、Dm、Em,再留几个按钮映射低音根音。街头即兴伴奏时,右手旋律加左手按几个和弦按钮就够了。
我把按压方向和和弦也做了关联:同一组按钮,向外推风箱时按下的和弦,和向内拉时按下的和弦可以分配成不同的转位。这样演奏者可以利用风箱的推拉自然切换和弦色彩,曲子的流动感会强很多。
3.4 延迟控制
街头演奏最怕“按键有反应但总觉得慢半拍”。人耳对按键到发声的延迟敏感度大约在20ms左右,超过30ms就会明显感到“肉”。整套Hackordion的延迟链路包括:
- 单片机扫描键盘和传感器,约5ms;
- USB MIDI传输,约1-2ms;
- 音源处理MIDI并合成音频,约10-20ms;
- 功放和喇叭的物理延迟,几乎可忽略。
为了把延迟压进舒适区,我在音源电脑上设置音频缓冲区为128采样点,采样率48kHz,音频系统往返延迟约5.3ms。整体实测下来,从按下琴键到听到声音大约在15ms到20ms左右,足够跟手。
有一个容易忽略的问题是音色库预加载。如果软合成器在每次音符触发时才从磁盘读取采样文件,就会出现不可控的卡顿。正确做法是启动时把常用音色全部加载进内存,演奏过程中就不许再碰磁盘。
4. 装机后的物理调校与街头实战
把琴装回去之后,我以为大功告成,实际上真正的测试才开始。街头环境是乐器最残酷的试验场,温度、湿度、噪声、供电,全都在挑战你的改造质量。
4.1 音量、压缩与动态范围
管风琴音色的动态范围很大,从最弱到最强能有二三十dB。但在街头演出,背景噪底大约是70到80dB,如果你完全保留这种动态,一旦风箱轻轻推,声音可能就被淹没。
我在音源软件里加了一个很轻的压缩:当压力小于20%时,音量曲线被抬高到最小可听电平;当压力超过80%时,输出被限幅。这样做的效果是,弱音能保证基本听清,强音不爆音。从演奏手感上说,风箱还是能控制强弱变化,只是变化曲线变“实用”了。
压缩参数不能太狠,否则风箱压力变化带来的呼吸感会被抹平。我只用了2:1的压缩比,阈值定在中高音量,再配合音量归一化曲线,听起来既有动态又压得住场面。
4.2 户外耐用性:灰尘、风与温度
街头扬尘很厉害。传感器软管的防尘海绵只是第一道防线,我还给整个采集板和霍尔传感器的底板涂了三防漆。风箱内部也尽量不裸露电路,所有线束都走琴体左右两侧的独立隔仓,避免拉扯。
夏天暴晒下,琴内温度可能升到五十度以上,锂电池在封闭琴体内很不安全。我一方面在琴壳底部开了几个散热孔,另一方面在电池管理电路上加过热保护,温度超过六十度就切断输出。演出间隙尽量把琴放在阴凉处,不能让阳光直射。
此外还要提防风吹导致的风箱压力干扰。大风天在风口演出时,外部气压变化会影响压差读数,导致没推风箱也出现音量波动。我后来给传感器软管口加了一个单向阀结构,只让风箱内部气流进入传感器,外部气压变化的影响就小很多了。
4.3 电池与便携设计
供电分成两组:采集板和微型电脑用5V移动电源;功放模块用独立的12V电池组。分开供电能避免功放大电流导致的数字电路复位,这个坑非常容易踩。
12V电池组选用动力锂电芯,容量相当于大约60Wh,配合30W的D类功放,实际输出功率平均不到10W,一场两小时街头演出下来,电量还能剩一半。5V移动电源则用那种自带快充协议的,容量一万毫安时足够电脑和采集板跑四五个小时。
这样整机重量大概在7到8公斤。手风琴本来就有一根背带,背着不算太累。电池放在左手贝斯箱体的底部,那里靠近人的重心,背起来不容易歪。
4.4 现场调试中的三个典型问题
第一是串音。某个琴键按下时,旁边相邻的音符偶尔也会响。我最初怀疑是扫描矩阵的行列没有二极管隔离,提高扫描速度后还是有问题。后来发现是磁铁磁场互相干涉,霍尔传感器在琴键行程偏的位置也会动作。解决办法是在磁铁外侧加了一层薄铁皮屏蔽罩,把磁场约束在传感器正前方。
第二是爆音。用力推风箱太快时,压力传感器读数瞬间跳变,音量突然冲到最大。我在采集板上加了变化率限制:如果两帧之间的压差变化超过阈值,就把当期变化量减半。这个平滑处理让强推风箱也能保持比较自然的气流爆发感,而不是尖锐的爆音。
第三是漏气。风箱折角有一处细微裂纹,日常演奏时听不太出来,但装完传感器后延迟很明显。慢推风箱时压力读数波动特别大,音量忽上忽下。排查了半天才发现是那一小条裂缝。用皮革胶从内外两侧各补了一层,彻底解决。
5. 成本清单与下一步改造
最后聊一下成本。很多朋友觉得手工乐器一定很贵,其实不一定。我把主要物料成本列出来:
| 物料 | 估算成本 |
|---|---|
| 报废手风琴(120贝斯) | 约300元 |
| 单片机采集板 | 约50元 |
| 微型电脑音源板 | 约350元 |
| MEMS压力传感器 | 约30元 |
| 霍尔开关及磁铁 ×60 | 约80元 |
| D类功放模块 + 喇叭 | 约100元 |
| 两组电池 | 约120元 |
| 线材、密封胶、五金、外壳辅料 | 约60元 |
总计约1100元。这个价格和一台入门级电子手风琴相比,连零头都不到,而且这台机器的音色和扩展性完全是自己说了算。如果家里已经有一台坏的旧手风琴,成本还能再降一大截。
下一步改造的方向不少,我个人认为优先级最高的是两个:一是加一个脚踩踏板,用来控制延音和混响,街头演出时可以腾出手来拧旋钮;二是给风箱压力加双传感器,分别检测左右手侧的气压,实现两边的独立控制。这样一来,右手旋律和左手和弦可以拥有各自的动态,音乐层次会丰富很多。
最后分享一个小技巧:在拆真琴之前,先用纸板按一比一做了一个键盘和贝斯按钮的布局模型,把霍尔传感器的对准位置和线槽走向全部模拟了一遍。这个纸板模型至少帮我省了一个星期的返工时间。做乐器改装就是这样,很多问题看起来是电子的,实际上都是机械结构没想清楚。多花一天在纸板模拟上,比多花一周在真机上返工划算得多。