R2Project. Plugins

VST3 & Audio Unit · macOS

ForTran

ForTran

Additive / formant synthesiser · Instrument

Ported from the 2003 Cakewalk DXi (Visual C++ 6 / MFC).

Download for macOS ForTran-1.3.1.0.pkg · 3.6 MB · Universal · signed & notarised

Version 1.3.1.0. Installs a VST3, an Audio Unit and 13 factory presets, each selectable separately. Quit your DAW first — a running host holds the old copy open.
Release notes and checksum · Source

The ForTran plug-in window
The black ForTran panel, 1200 × 640, shown here as the design the editor was built from (a render, with an illustrative patch and a note sounding), so a few labels differ slightly from the shipping plug-in. Across the top, the partial bank with every partial's level, phase, invert and envelope switch at once under a bar graph of the ten levels; the spectral filter with its four shape selectors and live response screen; and the amplitude envelope with Level, Pan, Glide and the Ladder switch. Below, the selected partial's formant envelope and harmonic LFO, and the modulation strip, where the ten rings are the harmonic LFOs.

ForTran is a genuine polyphonic instrument: no audio input, one stereo output, sixteen voices and 145 parameters. It was written in 2003 as a Cakewalk DXi in Visual C++ 6 and MFC; this is that plug-in on macOS, built from the original sources, reproducing the DSP sample for sample except where a deviation is deliberate and recorded.

You can report bugs or request features on the project’s GitHub issues page.

New in 1.3.1.0

High notes no longer alias. Like the 2003 DXi, ForTran summed all ten partials whatever the note, so on high notes the upper partials went past the Nyquist frequency and folded back as tones outside the harmonic series. At 48 kHz that started at D♯7; at C8 the fold was only 5.9 dB under the fundamental, and with the ladder in, at G8, it was louder than the fundamental. Each partial now fades out over the last 5 % below Nyquist and stops above it, judged on every sample, so a pitch bend across the line fades rather than clicks. The worst fold is now −150 dB or lower, and the live partial bars show the fade.

Parameters, presets and saved projects are exactly as in 1.3.0.0. Only notes high enough to have been folding sound different, and they now sound as they should.

New in 1.3.0.0

A new panel. The window is now a black instrument panel, 1200 × 640: knurled knobs with printed scales, rotary switches, red jewel lamps and small colour screens, lettered throughout in a 70s sci-fi face, with a light worn finish. Nothing in the sound or the parameters changed, so projects and presets from earlier versions open as they were.

New in 1.2.1.0

The maker is now “AE Cobley”, in both formats — it was “A. E. Cobley”. REAPER files an Audio Unit's presets under its name cut off at the first full stop, so every A. E. Cobley Audio Unit shared one REAPER preset list and showed the others' presets, which did nothing when chosen. The plug-in's identity codes are unchanged, so projects saved with earlier versions still open with ForTran in place. Hosts that list plug-ins by maker now show it under AE Cobley.

The factory presets now install to /Library/Audio/Presets/AE Cobley/ForTran, the folder both formats now look in.

The version is reported correctly. Earlier builds told hosts they were 1.0.0.1 (VST3) and 1.0.0 (Audio Unit) whatever the release; this one says 1.2.1.0. Nothing in the sound changed.

After upgrading, some things stay where earlier versions left them. The installer does not remove the old factory preset folder, /Library/Audio/Presets/A. E. Cobley/ForTran; nothing looks there now, and sudo rm -rf "/Library/Audio/Presets/A. E. Cobley/ForTran" removes it. Presets you saved in a host that files them by maker are in ~/Library/Audio/Presets/A. E. Cobley/ForTran — move them to ~/Library/Audio/Presets/AE Cobley/ForTran to see them again. In REAPER, Audio Unit presets you saved earlier stay in its old shared list; the VST3 is unaffected.

New in 1.2.0.0

Thirteen factory presets

The installer now offers a third component alongside the VST3 and the Audio Unit: thirteen patches, in /Library/Audio/Presets/AE Cobley/ForTran (in A. E. Cobley/ForTran until 1.2.1.0).

Alone inspace, Bonk, Fortran-Init, Fortran-band, bells phew, dronestar, filtered bass, growing, phew its a ghost, sitar, tesla coil, twang and weird piano.

One folder serves both formats. The VST3 and the Audio Unit each read that same path, and the .vstpreset and .aupreset pair for a patch carry identical state — so a preset sounds the same in Logic as it does in Cubase, rather than drifting into two versions of itself.

Three of them were saved before pan and portamento existed, and load with those two at their defaults: centred, and no glide.

Removing them is manual. A .pkg installs but never uninstalls, so the factory folder stays until you delete it: sudo rm -rf "/Library/Audio/Presets/AE Cobley/ForTran", and for a version before 1.2.1.0 sudo rm -rf "/Library/Audio/Presets/A. E. Cobley/ForTran". Anything you saved yourself lives under your own ~/Library/Audio/Presets and is untouched by that.

New in 1.1.0.0

Portamento, and it is properly polyphonic

The Glide knob at the bottom right of the panel sets the time. Zero is off, and that is the default, so nothing saved before this sounds any different.

Each new note glides from the nearest pitch of the chord that was sounding when the current chord began, and each of those pitches is used once — so C–E–G to D–F–A is three glides of a tone moving in parallel, rather than three notes fanning out of whichever pitch happened to be last. Notes struck within 30 ms of each other count as one chord; further apart than that and each note glides from the one before it, which is what a played line wants.

The glide is constant time — every glide takes as long as the knob says, whatever the interval, so a chord change arrives together — and even in semitones, so an octave down sweeps at the same rate as an octave up. The knob is squared like the envelope times: its centre is 500 ms of a two-second maximum.

Universal binary. 1.0.0.1 was built for Apple Silicon only while its installer claimed both architectures, so on an Intel Mac — or in any host running under Rosetta — it installed cleanly and then loaded nothing. This build is arm64 + x86_64. If you tried 1.0.0.1 and ForTran never appeared, that was why.

Installing over an earlier version replaces it; your projects and their settings are untouched.

The sound

Per sounding note, per sample:

Then sixteen voices mix to one stereo bus through the output trim and pan.

Two things the measurements say and the name does not

The ladder is mostly a gain stage. Its cutoff and resonance are hardcoded: the corner sits at 0.198 × Nyquist and the resonance at +0.22 dB, so below about B4 it is a flat +10.6 dB gain stage and nothing else — and its corner moves with the sample rate.

The Level knob starts 20 dB down. The DXi's own gain staging is hot enough to clip a dense chord, so the Level trim defaults to its centre. The top of that knob's travel is exactly the 2003 level, so nothing is lost — it is one turn away.

Using it

Since 1.3.0.0 the panel is a black instrument panel in five boxes. (Up to 1.2.1.0 it was the DXi's own, at the true size of its 840 × 388 backdrop.)

MIDI

Note on and off (velocity zero is a note-off), pitch wheel — the DXi's law is a whole octave either way, not two semitones — CC7 channel volume on a square-root law, and CC10 pan. The Pan knob is new and offsets CC10 rather than replacing it: centred, CC10 behaves exactly as it did before the knob existed.

Not carried over

The DXi's multi-output pins, the dead Synth/Xform mode switch, the audio-input passthrough (an instrument has no input), and program change selecting the oscillator waveform — this port is sine partials only. In the DXi the MIDI patch number chose sine, square or saw.

Known gaps

One partial, opened up

A single partial with its level, phase, invert, formant ADSR and per-harmonic LFO, and how ten of these sum into the spectral filter. Open full size.

Signal routing

The full signal path for one voice, from the partial bank through the spectral filter, envelopes and LFOs to the ladder and the output trim. The drawing predates the glide, which feeds the phase step alongside the vibrato LFO, so that one path is not on it. — open the drawing full size.

Specification

Technical specification for ForTran
Formats VST3 (.vst3) and Audio Unit v2 (.component), built from one CMake project
KindInstrument
Audio Unit identity aumu / FTrn / AECo — check it with auval -v aumu FTrn AECo
ArchitectureUniversal 2 — Apple Silicon and Intel
RequiresmacOS 10.13 or later
SigningDeveloper ID, notarised by Apple
Version1.3.1.0 (v1.3.1.0)
Installer ForTran-1.3.1.0.pkg, 3.6 MB
Installs to /Library/Audio/Plug-Ins/VST3/, /Library/Audio/Plug-Ins/Components/ and /Library/Audio/Presets/AE Cobley/ForTran, each selectable separately in the installer
Factory presets 13, installed for both formats from the same saved state, so a patch sounds the same in either
Licence Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA-4.0)
Source github.com/acobley/Fortran
Download for macOS ForTran-1.3.1.0.pkg · 3.6 MB · Universal · signed & notarised

Version 1.3.1.0. Installs a VST3, an Audio Unit and 13 factory presets, each selectable separately. Quit your DAW first — a running host holds the old copy open.
Release notes and checksum · Source