iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
🎹

M2DX: Public Beta Release of MIDI 2.0 Compatible DX7 FM Synthesizer on TestFlight

に公開

I have released M2DX, a MIDI 2.0 compatible DX7-compatible FM synthesizer for iOS, as a public beta on TestFlight.

https://testflight.apple.com/join/BAtGszPw

It features a 6-operator x 32-algorithm DX7-style FM synthesis engine, implemented entirely in Pure Swift 6. The synthesis engine uses the M2DX-Core library, which I have released separately.

For my previous articles on the DX7 engine and Property Exchange, please see below:

https://zenn.dev/hakaru/articles/m2dx-core-dx7-fm-synth-swift

https://zenn.dev/hakaru/articles/m2dx-midi2-korg-property-exchange

How to Join the TestFlight Beta

It can be tested on iOS / iPadOS 18 or later:

  1. Install Apple's TestFlight app from the App Store (first time only).
  2. Open testflight.apple.com/join/BAtGszPw on your iPhone or iPad.
  3. Tap "Accept" and then "Install."
  • Note: After the beta app review is approved, the initial installation may take 1 to 2 minutes (sometimes up to 24 hours) to be reflected.

Current Status — Reasons for the Public TestFlight Release

M2DX has not yet reached a practical level as a musical instrument. I am releasing it as a public beta on TestFlight to gather feedback and make improvements while addressing the following limitations and unverified items.

Limited Scope of MIDI 2.0 Validation

  • I have not been able to procure enough MIDI 2.0 compatible hardware, so UMP (Universal MIDI Packet) operation has only been verified with a limited combination of devices.
  • I have not fully grasped the differences in MIDI 2.0 support across macOS versions (e.g., differences in CoreMIDI behavior).
  • I have only partially analyzed the proprietary extensions and custom profiles that each manufacturer implements on top of the MIDI 2.0 specification (specifically for KORG). Proprietary implementations by other companies have not been addressed yet.

Preset Sound Design

  • While it includes 32 factory presets, validation of the sound design compared to vintage FM sound sources is still a work in progress.
  • The path for users to load their own .syx banks will be developed incrementally in future TestFlight builds.

Effects Chain

  • The 6-stage FX chain (EQ → Drive → Chorus → Reverb → Stereo → Maximizer) has been implemented in a functional form for now. Future updates will involve musical adjustments for parameter audible ranges and endpoint values, as well as optimizations for CPU efficiency and interactions.

To Those Who Find Bugs or Issues

Crashes are automatically collected via Firebase Crashlytics (see Privacy Policy for details). Identifying bugs with reproducible conditions is faster, so if possible, please report them to hirose@hakaru.net.

Main Features

Full MIDI 2.0 UMP Support

Native support for Universal MIDI Packet (UMP). Enables smooth and expressive performance with 16-bit velocity (65,536 levels), 32-bit CC, and 32-bit pitch bend. It also automatically falls back to MIDI 1.0.

DX7-Style 6-Operator FM Engine

A DX7-style FM synthesis engine with 6 operators and 32 algorithms, implemented in Pure Swift. Utilizing Int32 Q24 fixed-point arithmetic, the aim is to capture the character of vintage FM sound sources. It includes 32 factory presets.

16-Voice Polyphony

Supports 16-voice simultaneous playback, sustain pedal (CC64), and pitch bend (±2 semitones). Prevents digital distortion using soft-clipping via Padé approximation tanh.

6-Stage Effects Chain

High-quality effects configured in the signal path: EQ → Drive → Chorus → Reverb → Stereo → Maximizer. All parameters can be mapped to any CC via MIDI Learn.

MIDI-CI Property Exchange

Exposes over 155 parameters in a hierarchical structure. It is a self-descriptive instrument that allows compatible DAWs and controllers to automatically discover parameters and supports JSON-based preset management (no SysEx required).

Low Latency

Direct rendering using AVAudioSourceNode drives the FM engine on the CoreAudio render callback. By eliminating buffer queuing overhead, the effective latency is determined by the iOS IOBufferDuration (approximately 5ms).

System Requirements

  • iOS / iPadOS 18 or later (Available on TestFlight)
  • macOS version planned for future support

FAQ

"Install" is grayed out

Immediately after beta app review approval, it may take some time for TestFlight to reflect the changes. Please try again after approximately 24 hours.

What if it crashes?

Automatic crash reporting via Firebase Crashlytics is enabled from v1.3.1 (build 5). If you can reproduce a crash, it helps identify the cause from logs for a quicker fix. For details on collected data, please refer to the Privacy Policy.

Can I load DX7 SysEx presets?

It comes with 32 built-in factory presets. Information regarding SysEx compatibility will be provided in future TestFlight builds.

Do I need a MIDI 2.0 compatible DAW?

No. Since it supports fallback to MIDI 1.0, you can use it with traditional MIDI controllers and DAWs. High-resolution expression is possible in MIDI 2.0 compatible environments.

Can it be used as an AUv3 plug-in?

Currently, it is a standalone iOS / iPadOS app. AUv3 support is under consideration.

Contact

For questions, bug reports, or feature requests, feel free to email hirose@hakaru.net.

GitHubで編集を提案

Discussion