asked May 20 '17 at 16:19 by pplcanfly (31)

Is there any advantage of one api over another? I've made Novation Impulse 49 controller script in JS but it's still missing a few features. I wonder if it's worth rewriting it in Java which I actually feel more comfortable with. Nice thing is that Bitwig quickly grabs new changes from JS script during development. Does it work the same way for Java or do I need to "install" script every time I want to test it in Bitwig?

@tomodache I gave it a try and it turned out that Bitwig also grabs new changes nicely with Java based API. The only difference is that you need build .bwextension file (it's just renamed .jar) every time you want to test script in Bitwig. Luckily this can be easily automated.

The reason behind only 5 Java projects on Github is most likely that Java API was realeased just a few weeks ago;)

I've found another advantage of Java API - controller script is distributed in a single file you need to put in Extensions directory. It's just easier to manage than bunch of .js files.

@rondixsyscom Bitwig is Java based which is the main reason it makes it multiplatform. I think JavaScript was in fact only a wrapper around its internal Java API which now became available to other devs too. I haven't checked it in practice but I believe it also opens way to use any JVM language like Scala, Clojure etc. Although I would keep it simple and stick to plain Java because it is more widely known language. I think you also won't need any other language features that Java already provides in rather simple controller script:)


answered May 25 '17 at 12:34 by pplcanfly (31)

The only advantage I can think of with the Java API is (maybe?) a very slight increase in performance. If you're more comfortable with Java and your script isn't too large, I'd say port it and go that route.

As to grabbing the new changes ... I can't answer that. The Bitwig guys on Github did use JS for their Impulse 25 script, though: If you want ease of use, I'd go with what the Bitwig devs are using (as I'd think they'd make it easier to go that route.) Only 5 projects in a Github search show they're programmed in Java vs 163 for JS.

PS: Thanks for programming stuff for Bitwig! xD


answered May 24 '17 at 00:54 by tomodache (41)

edited May 24 '17 at 00:55

I was under the impression without any research bitwig only works with Javascript. Now that I see its also possible to use Java I am curious what other languages can be used and where else can a language be used in other parts of bitwig. Is there documentation on this ?


answered May 25 '17 at 07:52 by rondixsyscom (11)

Java and Javascript are two completely separate things. The naming similarities came from a licensing agreement in 1995 between sun and netscape. Javascript had two prior names. (This was the days when sun, oracle, netscape others were formally colluding to take the rug out from underneath Microsoft by building a browser based sandbox that would become the OS, thus no need for MS anymore)

So that being the case, bitwig does support two different language. One is not a wrapper to the other...

So my my two primary questions remain: - Is there documentation to what languages can be used, the hooks and apis exposed etc ? ( I know there is documentation on using Javascript for creating controller scripts)

  • Is there documentation on other areas of bitwig being exposed to external languages ?

answered May 25 '17 at 15:08 by rondixsyscom (11)

@rondixsyscom The javascript controller API always felt to me like a direct wrapper around an obviously Java-style class model.

I would love to hear from the bitwig devs (or anywone who has played around with the Java API) about: (a) whether there is any functionality exposed by the Java API that's not available in the JS API (b) whether the JS API is going to keep up with changes to the Java API in the future.

This would help me decide whether to keep developing JS controller scripts or to learn all the tooling to build Java extensions.


answered May 25 '17 at 20:37 by tedward (11)

@rondixsyscom I didn't mean that JavaScript language is a wrapper for Java language (I know the story, I'm coding for living;)) but Bitwig's JavaScript API is surely wrapper for Java API. IMO JavaScript isn't executed directly by Bitwig but most likely using some Java-based JavaScript engine like Nashorn (it's embedded in JRE).

Regardning your questions I'm afraid there are no other documented areas at this moment besides control scripts where you could plug into with any code. But if you take a look at Library in Bitwig's installation directory, you'll find many .bwdevice and .bwmodulator files. Maybe some day there will be way to make our own devices like any other extensions:)


answered May 25 '17 at 22:49 by pplcanfly (31)

"Bitwig is Java based which is the main reason it makes it multiplatform." @yesterday, I am pretty sure that it's only the GUI that is Java-based. Under the hood, Bitwig is most likely written in C/C++.


answered May 26 '17 at 22:50 by mux (75)

@pplcanfly I found your Impulse 49 control script on GitHub, and you just made my three-day-old Impulse 49 and my two-day-old Bitwig Studio 2.1.1 way, way more awesome! Thank you!


answered May 29 '17 at 01:06 by dhemery (39)

@dhemery it was very brave to use such early version;) No problems with manual building and installation? Let me know on github if you find any issues.


answered May 29 '17 at 16:57 by pplcanfly (31)

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

Markdown Basics

  • *italic* or __italic__
  • **bold** or __bold__
  • link:[text]( "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported



Asked: May 20 '17 at 16:19

Seen: 3,356 times

Last updated: May 29 '17 at 16:57