LMMS / LMMS/lmms

Add native VST support for Mac OS X (WIP)

Open
#3,975 40 comments 7 reactions 0 assignees View on GitHub
compatibility enhancement in progress macos vst
Dominant language
C++
Stars
10.4k
Forks
1.3k
Avg merge
2d 13h
Merged PRs (30d)
7

Description

### Background

I had originally assumed that the reason for LMMS using WINE for VST (non-)support on Mac was because there weren't sufficient native Mac VSTs to justify adding native support. After playing with [Helio Workstation](https://github.com/peterrudenko/helio-workstation/) I discovered that there's plenty of native Mac VSTs so I decided to investigate adding support for them to LMMS.

### Progress so far

I've reached a point[1] where I think I've made sufficient progress that I wanted to keep track of development here--meaning that if I don't get to finishing it hopefully someone else can build on it without having to re-learn all of my lessons. :) (I've discovered a lesson I just learned was already in an unmerged WIP PR from someone else. :) )

The two parts of progress so far are:

* Proof-of-concept for opening Mac native VST within Qt 5.5 application: https://github.com/follower/qt-vst-mac-native-poc (which might also be suitable for a Qt-based mostly cross-platform implementation).

* Compilation of sufficiently hacked up versions of `vst_base`, `vestige` and `RemoteVstPlugin` that LMMS will startup, show the Vestige plugin, allow it to be dragged onto a track, display a file open dialog box, allow selection of an actual binary of a VST renamed with a `.dll` extension and then display the following error messages (without actually crashing):
```
RemotePluginClient::shmget: No such file or directory
RemoteVstPlugin.cpp::shmget: No such file or directory
RemoteVstPlugin.cpp: Failed to initialize shared memory for VST synchronization.
```

The final lesson I needed I eventually discovered had already been mentioned here: https://github.com/LMMS/lmms/pull/2393/commits/d7a63c5adda5d3878f033569453fed44e699e7e9#diff-0cfe54b7b7513b8854b14b3fb8411b78R115 (but, hey, at least I learned something along the way :) )

[[1] *Context: I started writing up this issue maybe a couple of weeks ago and wanted to make it more "complete" before posting it but since that approach doesn't seem to be working I thought I'd just dump it in here now as is and then add to it as I get the opportunity.*]

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the linked qt-vst-mac-native-poc and the existing vst_base, vestige, and RemoteVstPlugin work, including the referenced PR commit. Reproduce the current startup, plugin selection, and shared-memory errors on Mac OS X. Done means a native Mac VST can be opened and placed on a track without the reported synchronization failures.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, macos
Domain
audio-video-rtc, desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.