• Stars
    star
    210
  • Rank 187,585 (Top 4 %)
  • Language
    Rust
  • License
    Other
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Raw Bindings to the VST3 API

vst3-sys

A port of the VST3 API in pure Rust.

We do not distribute the SDK nor try and wrap it in clean abstractions, just port compatible bindings to the COM API. The full SDK can be found at sdk.steinberg.net or cloned from github here.

Building Examples

The examples can be built using cargo-make.

cargo install --force cargo-make

The two current examples are again and passthru.

cargo make again 
cargo make passthru 

Provided is a script to package a vst3 plugin as a MacOS bundle, which requires an Info.plist file and PkgInfo to be included in the vst3 plugin directory.

Completeness and Contributions

Currently this crate is missing definitions of some of the constants found in the SDK, and help covering them would be greatly appreciated. If you find something missing from the SDK please submit a PR to add it. You can also grep for todo to find gaps.

This crate intentionally omits anything not a part of the COM-compatible API.

Credits

The COM vtables/API are generated using com-rs from Microsoft, it has been altered to allow it to compile/generate code on MacOS and Linux targets. (Update 4/2020) MS has stripped winapi dependency from com-rs and it's closer to being suitable for cross platform development. Currently outstanding are some of the implementation details of the runtime and the calling convention of the generated vtables.

VST is a trademark held by Steinberg Media Technologies, GMBH.

License

vst3-sys is licensed under the terms of the GNU GPLv3 license. This port is a derivative work of the original SDK, and while we do not redistribute any of the original source code, it was not made in isolation.

More Repositories

1

cpal

Cross-platform audio I/O library in pure Rust
Rust
2,614
star
2

rodio

Rust audio playback library
Rust
1,690
star
3

vst-rs

VST 2.4 API implementation in rust. Create plugins or hosts. Previously rust-vst on the RustDSP group.
Rust
973
star
4

dasp

The fundamentals for Digital Audio Signal Processing. Formerly `sample`.
Rust
720
star
5

rust-portaudio

PortAudio bindings and wrappers for Rust.
Rust
373
star
6

deepspeech-rs

Rust bindings for the deepspeech library
Rust
295
star
7

dsp-chain

A library for chaining together multiple audio dsp processors/generators, written in Rust!
Rust
287
star
8

lewton

Rust vorbis decoder
Rust
250
star
9

rust-jack

Decent jack bindings for rust
Rust
204
star
10

baseview

low-level window system interface for audio plugin UIs
Rust
184
star
11

synth

A polyphonic Synth type whose multiple oscillators generate sound via amplitude and frequency envelopes, implemented in Rust. DEPRECATED: This is a very old crate with very old design patterns and is no longer maintained. You might be interested in checking out `dasp` for composing your own synth instead.
Rust
172
star
12

coreaudio-rs

A friendly rust interface to Apple's Core Audio API.
Rust
169
star
13

rust-lv2

A safe, fast, and modular framework to create LV2 plugins, written in Rust
Rust
150
star
14

audrey

A crate to simplify reading, writing and converting between a variety of audio formats.
Rust
114
star
15

ogg

Ogg container decoder and encoder written in pure Rust
Rust
97
star
16

rimd

Library for handling Midi and Standard Midi Files in Rust
Rust
77
star
17

wmidi

Rust midi encoding and decoding library.
Rust
63
star
18

pitch_calc

A library for musical pitch conversions! Provides functions and methods for converting between frequency (hz), midi-step, letter-octave and mels.
Rust
60
star
19

coreaudio-sys

Raw bindings to the OSX CoreAudio framework generated by bindgen (see coreaudio-rs for a more rust-esque wrapper).
Rust
59
star
20

sound_stream

A Rust audio IO stream in the style of an "Event Iterator" driven by PortAudio.
Rust
57
star
21

time_calc

A library for music/DSP time conversions! Provides functions and methods for converting between ticks, ms, samples, bars, beats and measures.
Rust
49
star
22

musical_keyboard

A small lib for converting keyboard input into musical notes.
Rust
26
star
23

mp3

Rust MP3 decoder project
Rust
23
star
24

sampler

A polyphonic sampler instrument that supports unique sample mappings across both frequency and velocity ranges. DEPRECATED: This is a very old crate with very old design patterns and is no longer maintained. You might be interested in checking out `dasp` for composing your own sampler instead.
Rust
23
star
25

areweaudioyet

Are We Audio Yet?
CSS
18
star
26

simplemad

A Rust interface for the MPEG audio (MP1, MP2, MP3) decoding library libmad
Shell
17
star
27

caf

Rust decoder for Apple's Core Audio Format (CAF)
Rust
14
star
28

envelope

An interpolatable Envelope type along with a generic 2D Point, useful for controlling parameters over time.
Rust
13
star
29

website

Website for all things audio in the Rust programming language
HTML
10
star
30

vst2-sys

Bindings for the VST 2.4 API.
Rust
9
star
31

instrument

Converts discrete note events to a continuous signal of amplitude and frequency frames over N number of voices.
Rust
8
star
32

rnnoise-c

Rust bindings to Xiph's rnnoise denoising library
Rust
7
star
33

rms

A simple type for calculating and storing the RMS given some buffer of interleaved audio samples.
Rust
7
star
34

volume

A simple dsp-chain node for multiplying the amplitude of the output buffer by some volume.
Rust
6
star
35

panning

A variety of utilities related to audio panning in Rust.
Rust
5
star
36

lyra

Feature extraction POC
Rust
4
star