Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap version 0.1 #3

Open
wants to merge 17 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 11 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
.DS_Store
stuff
*.class
build
deploy
plugins/**/*.java
dist
libs
plugins/**/*.jar
plugins/build
gui-labs
javafx
javafx
._redcar
build.xml
nbproject
manifest.mf
.rvmrc
.irbrc
insert-b4-grep.txt
16 changes: 16 additions & 0 deletions .gitignore~
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
.DS_Store
*.class
build
deploy
dist
plugins/**/*.jar
plugins/build
gui-labs
javafx
._redcar
build.xml
nbproject
manifest.mf
.rvmrc
.irbrc
insert-b4-grep.txt
8 changes: 8 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
source 'https://rubygems.org'

gem 'mirah'

group :test do
gem 'rspec'
gem 'rake'
end
207 changes: 175 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,70 +1,211 @@
WARNING
<<<<<<< HEAD
Notes by weirdpercent
-------
I love this project, it's a great idea that pulled me in the second I laid eyes on it. To all who have contributed to it, I thank you. This fork is all about revitalizing the concept and improving upon the technology. I fixed the Rakefile so that the default rake task (test) works with 'rspec' instead of 'spec.' In case you were wondering, I did some refactoring to change all 'Duby' references to the current language name 'Mirah.'

rake spec is broken (the Rakefile needs some fixing), instead run:

jruby -S spec -fs specs/opaz_plug_spec.rb
I have created a roadmap and committed version 0.1. The changes are summarized in the **roadmap** folder. I've also issued a pull request, and will do so again at version 0.2. My hope is that this super branch can eventually be merged with the master. Versions 0.1 and 0.2 will update Opaz-PlugDK for JDK 1.6/JRuby 1.6.7.2 and JDK 1.7/JRuby 1.7.0.preview2 respectively. The overall goal of these changes is to update Opaz for Ruby 1.9 and Java 7. Once this is done, I will likely add more to the roadmap.

WHAT'S THERE ?
What is Opaz-PlugDK?
--------------

Opaz-PlugDK makes it easier/faster to create portable (Mac OS X, Windows, Linux) VST 2 plugins.
Opaz-PlugDK makes it fast and easy to create portable VST2 plugins for Mac OS X, Windows, and Linux. The code can be written in JRuby, Java, Mirah, or any combination of the three.

You can mix and match JRuby, Duby and Java to implement the plugins.
Quick Course
------------

* Documentation for Opaz-PlugDK and jVSTwRapper can be found in the **docs** folder
* [Blog post by Thibaut](http://blog.logeek.fr/2009/11/17/how-to-prototype-vst-audio-plugins-with-jruby-and-java)
* [Screencast by Daniel309](http://www.vimeo.com/8654173)



Available Examples
------------------

About the examples in the plugin folder:

* MirahGain, MirahFilta and MirahFreeComp mix JRuby (for declarative stuff) and Mirah (for computation)
* HybridGain, HybridFilta and HybridSynth mix JRuby (for declarative stuff) and Java (for computation)
* RubyDelay, RubyFreeComp and RubyGain are pure JRuby plugins
* JavaDelay is a working pure Java plugin
* InlineGain is an example of using inline Java for computation and JRuby for everything else
* SuperSynth is [David Lowenfels'](http://github.com/dfl) pure JRuby contribution
* SimplePlugin is the starter plugin for developers, similar to RubyGain but with more features.
* The Stuff folder contains a mock VST host, a MIDI plugin skeleton, and an audio plugin skeleton, all written in Java.
* ToneMatrix is an experimental plugin using the JavaFX 1.2.3 SDK

NOTE: ToneMatrix is broken for now due to JavaFX deprecation issues. With the release of JavaFX 2.x, the creation of [GroovyFX](http://groovyfx.org/) and [ScalaFX](http://code.google.com/p/scalafx/), and the transition from JavaFX Script to [Visage](http://code.google.com/p/visage/), using FX to design plugin GUIs should **definitely** be explored some more. It's certainly on my list of ToDos. - weirdpercent

QUICK COURSE
Dependencies
------------

Required:

* [Java JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html) (tested with version 1.6) - the JRE is not sufficient
* [JRuby](http://www.jruby.org/download) (tested with version 1.6.7.2)
* [RSpec](http://rspec.info/): gem install rspec (or on Windows: jruby -S gem install rspec)
* [Mirah](http://www.mirah.org/): gem install mirah (or on Windows: jruby -S gem install mirah)

Optional:

* [JavaFX](http://www.oracle.com/technetwork/java/javafx/downloads/index.html): install the JavaFX SDK
* [jVSTwRapper](http://jvstwrapper.sourceforge.net/): used by this project in JAR form
* [JVSTHost](http://github.com/mhroth/jvsthost/) by Martin Roth: a VST host implemented in Java, a great way to load VST plugins running on the JVM!

How to Build a Plugin
---------------------

You can build a single plugin like this:

rake package plugin=SimplePlugin

The package system will create ready-to-use VST for Windows, Mac OS X and Linux under the build subfolder of the plugin. You can use SimplePlugin (or any other example) as a base to start developing your own. SimplePlugin includes an IRB interface and live reloading when source code changes.

Build Order
===========

Things are currently compiled in this order:

* src/* (Opaz stuff)
* your_plugin/*.mirah
* your_plugin/*.java
* your_plugin/*.fx

Plugins Status
==============

I'll post the results once I've tested and hacked on this project for a bit. - weirdpercent

GUI Support
-----------

Basic GUI support is included. Example:

class MyEditor
def initialize(frame)
frame.setTitle("Hello from DefaultEditor!")
frame.setSize(400, 300)
end
end

class MyPlugin < OpazPlug
plugin "MyPlugin", "Opaz", "LoGeek"
# ...

editor MyEditor
end

You'll be passed the main container frame so that you can add stuff in it.

Live Debugging
--------------

Thanks to Daniel309, it's possible to enable live plugin patching through an IRB session.

Tweak tasks/tools.rb around line 90 to enable the IRB debugging editor:

PluginUIClass=IRBPluginGUI

Logging
-------

It's often useful to log some information while creating plugins. You can achieve this by calling "log" from within the plugin:

class MyPlugin < OpazPlug
def some_stuff
log("message!")
end
end

The logs are written to a .txt file in the plugin folder.

Notes
-----

The libs and templates folders are generated using rake prepare:templates and rake prepare:libs. Have a look at the rake file to see more about available tasks (compile, package, deploy).

AUTHORS AND CONTRIBUTORS
------------------------

* [Thibaut Barrère](http://twitter.com/thibaut_barrere) and Daniel309 (author of [jVSTwRapper](http://jvstwrapper.sourceforge.net/)) for the whole thing
* [Robert Pitts](http://github.com/rbxbx) for his test clean-up patch
* Big thanks to [Charles Oliver Nutter](http://github.com/headius) for his help on JRuby/Mirah!
* Thanks as well to [JFXtras](http://jfxtras.org/) for their implementation of SceneToJComponent.
=======
Introduction
-------
I love this project, it's a great idea that pulled me in the second I laid eyes on it. To all who have contributed to it, I thank you. This fork is all about revitalizing the concept and improving upon the technology. I fixed the Rakefile so that the default rake task (test) works with **rspec** instead of "spec." In case you were wondering, I did some refactoring to change all references to 'Duby' to the current language name 'Mirah.' - weirdpercent

What is Opaz-PlugDK?
--------------

Opaz-PlugDK makes it fast and easy to create portable VST2 plugins for Mac OS X, Windows, and Linux. The code can be written in JRuby, Java, Mirah, or any combination of the three.

Quick Course
------------

* [Blog post by Thibaut](http://blog.logeek.fr/2009/11/17/how-to-prototype-vst-audio-plugins-with-jruby-and-java)
* [Screencast by Daniel309](http://www.vimeo.com/8654173)

AVAILABLE EXAMPLES
Available Examples
------------------

The examples are under the plugins folder:
About the examples in the plugin folder:

* DubyGain, DubyFilta and DubyFreeComp are reflecting our current work trend, ie: mix JRuby (for declarative stuff) and Duby (for computation)
* MirahGain, MirahFilta and MirahFreeComp mix JRuby (for declarative stuff) and Mirah (for computation)
* HybridGain, HybridFilta and HybridSynth mix JRuby (for declarative stuff) and Java (for computation)
* RubyDelay, RubyFreeComp and RubyGain are pure JRuby version
* RubyDelay, RubyFreeComp and RubyGain are pure JRuby plugins
* JavaDelay is a working pure Java plugin
* InlineGain is an example of using inline Java for computation and JRuby for everything else
* SuperSynth is [David Lowenfels'](http://github.com/dfl) pure JRuby contribution
* SimplePlugin is the starter plugin for developers, similar to RubyGain but with more features.
* The Stuff folder contains a mock VST host, a MIDI plugin skeleton, and an audio plugin skeleton, all written in Java.
* ToneMatrix is an experimental plugin using the JavaFX 1.2.3 SDK

NOTE: ToneMatrix is .gitignored for now due to JavaFX deprecation issues. With the release of JavaFX 2.x, the creation of [GroovyFX](http://groovyfx.org/) and [ScalaFX](http://code.google.com/p/scalafx/), and the transition from JavaFX Script to [Visage](http://code.google.com/p/visage/), using FX to design plugin GUIs should **definitely** be explored some more. - weirdpercent

DEPENDENCIES
Dependencies
------------

Required:

* Java JDK (tested with version 1.6+) - the JRE is not sufficient
* JRuby (tested with version 1.4.0)
* [Java JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html) (tested with version 1.6) - the JRE is not sufficient
* [JRuby](http://www.jruby.org/download) (tested with version 1.6.7.2)
* [RSpec](http://rspec.info/): gem install rspec (or on Windows: jruby -S gem install rspec)
* [Mirah](http://www.mirah.org/): gem install mirah (or on Windows: jruby -S gem install mirah)

Optional:

* Mirah: jgem install mirah (or on Windows: jruby -S gem install mirah)
* JavaFX: install the JavaFX SDK 1.2.3
* [JavaFX](http://www.oracle.com/technetwork/java/javafx/downloads/index.html): install the JavaFX SDK
* [jVSTwRapper](http://jvstwrapper.sourceforge.net/): used by this project in JAR form
* [JVSTHost](http://github.com/mhroth/jvsthost/) by Martin Roth: a VST host implemented in Java, a great way to load VST plugins running on the JVM!

HOW TO BUILD A PLUGIN
How to Build a Plugin
---------------------

See under plugins/ then use the available rake tasks to package one of them:
You can build a single plugin like this:

rake package plugin=DubyFreeComp
rake package plugin=SimplePlugin

The package system will create ready-to-use VST for Windows, Mac OS X and Linux under the build subfolder of the plugin.
The package system will create ready-to-use VST for Windows, Mac OS X and Linux under the build subfolder of the plugin. You can use SimplePlugin (or any other example) as a base to start developing your own. SimplePlugin includes an IRB interface and live reloading when source code changes.

BUILD ORDER
Build Order
===========

Things are currently compiled in this order:

* src/* (Opaz stuff)
* your_plugin/*.duby
* your_plugin/*.mirah
* your_plugin/*.java
* your_plugin/*.fx

PLUGINS STATUS
Plugins Status
==============

All the plugins compile and are able to be loaded in Ableton Live, except the Ruby based ones (temporary issue).
I'll post the results once I've tested and hacked on this project for a bit. - weirdpercent

GUI SUPPORT
GUI Support
-----------

Basic GUI support is included. Example:
Expand All @@ -85,7 +226,7 @@ Basic GUI support is included. Example:

You'll be passed the main container frame so that you can add stuff in it.

LIVE DEBUGGING
Live Debugging
--------------

Thanks to Daniel309, it's possible to enable live plugin patching through an IRB session.
Expand All @@ -94,20 +235,20 @@ Tweak tasks/tools.rb around line 90 to enable the IRB debugging editor:

PluginUIClass=IRBPluginGUI

LOGGING
Logging
-------

It's often useful to log some informations while creating plugins. You can achieve this by calling "log" from the plugin:
It's often useful to log some information while creating plugins. You can achieve this by calling "log" from within the plugin:

class MyPlugin < OpazPlug
def some_stuff
log("message!")
end
end

The logs end up inside some txt file in the plugin folder.
The logs are written to a .txt file in the plugin folder.

NOTES
Notes
-----

The libs and templates folders are generated using rake prepare:templates and rake prepare:libs. Have a look at the rake file to see more about available tasks (compile, package, deploy).
Expand All @@ -117,5 +258,7 @@ AUTHORS AND CONTRIBUTORS

* [Thibaut Barrère](http://twitter.com/thibaut_barrere) and Daniel309 (author of [jVSTwRapper](http://jvstwrapper.sourceforge.net/)) for the whole thing
* [Robert Pitts](http://github.com/rbxbx) for his test clean-up patch
* Big thanks to Charles Oliver Nutter for his help on JRuby/Duby!
* Thanks as well to JFXtras for their implementation of SceneToJComponent.
* Big thanks to [Charles Oliver Nutter](http://github.com/headius) for his help on JRuby/Mirah!
* Thanks as well to [JFXtras](http://jfxtras.org/) for their implementation of SceneToJComponent.
>>>>>>> origin/super
* Thanks to [David Lowenfels](http://github.com/dfl) for his **super** branch that inspired me to begin contributing to Opaz-PlugDK.
Loading