Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lsegal/easy_vst
A VST Instrument Plug-In that connects to a remote Ruby process via DRb to process audio samples and MIDI messages.
https://github.com/lsegal/easy_vst
Last synced: about 2 months ago
JSON representation
A VST Instrument Plug-In that connects to a remote Ruby process via DRb to process audio samples and MIDI messages.
- Host: GitHub
- URL: https://github.com/lsegal/easy_vst
- Owner: lsegal
- Created: 2014-11-17T20:10:05.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2014-11-17T20:11:03.000Z (about 10 years ago)
- Last Synced: 2024-10-31T06:51:31.765Z (2 months ago)
- Language: C++
- Size: 133 KB
- Stars: 11
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# EasyVST
A VST Instrument Plug-In that connects to a remote Ruby process via DRb to
process audio samples and MIDI messages.## Requirements
This project has only been tested on Mac OS X. The `vst/Makefile` will likely
need modifications to build on other systems.You will also need the [VST3 SDK][sdk] and a a compatible DAW that can use VSTs.
## Using
To build the VST and start the server, copy the VST SDK into `vst/vst3` and
type:```sh
$ rake
```This will launch you into a interactive Ruby console where you can control the
`$music` object that is exposed by DRb.To change the music function, set `$music.fn`. Some examples:
```ruby
# Play a square wave
$music.fn = SQUARE# Play a square + sine wave
$music.fn = -> { e(SINE) * 0.5 - e(SQUARE) * 0.5 }
```See the `music_server.rb` file for more functions and examples defined as
constants at the top of the file.## Remote Server Protocol
A sample server is provided in `music_server.rb`. To implement a custom server,
you must expose an object to the DRb service on port 9090 that supports the
following methods:### `#process(num_samples) -> Array`
Synthesizes `num_samples` samples for audio playback. This function should
return an array of `num_samples` floating point values.### `#midi_note(status, note, velocity) -> void`
Indicates that a MIDI note changed its status. The default server has logic
to handle a single MIDI note being pressed at a time.### `#midi_all_off -> void`
Indicates that all MIDI messages have been stopped.
## License
EasyVST is licensed under an MIT license and was created by Loren Segal
in 2014. The files under `vst/source` were created from templates provided
by the [teragonaudio/XcodeVstTemplates][teragon] project on GitHub.[sdk]: http://www.steinberg.net/en/company/3rd_party_developer.html
[teragon]: https://github.com/teragonaudio/XcodeVstTemplates