
Foojay Podcast #54: Music and MIDI with Java and Kotlin
MIDI is a universal standard for communicating between musical instruments and computers.
Within OpenJDK, there is a whole Java package dedicated to MIDI communication and data handling. Is it up to date? Are there better approaches now? And what can we do with music, Java, and Kotlin?
Let’s find out…
Video
Podcast Apps
You can listen and subscribe to the Foojay Podcast on:
- Spotify
- Apple Podcasts
- And most others…
Guests
Atsushi Eno
Geert Bevin
- https://www.linkedin.com/in/gbevin/
- https://gbevin.com/cv/
- https://www.uwyn.com/
- https://www.gbevin.com/
Content
00:00 Introduction of the topic and guests
04:27 What is MIDI?
Learn more about MIDI and the javax.sound implementation in OpenJDK:
https://docs.oracle.com/javase/tutorial/sound/overview-MIDI.html
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/sound/midi/package-summary.html
https://github.com/openjdk/jdk/tree/master/src/java.desktop/share/classes/javax/sound/midi
https://www.baeldung.com/java-packages-vs-javax
09:53 MIDI Polyphonic Expression (MPE)
https://roli.com/mpe
https://midi.org/midi-polyphonic-expression-mpe-specification-adopted
https://midi.org/insights
11:23 Instruments require real-time systems
15:18 Why Atsushi used Kotlin for ktmidi
https://github.com/atsushieno/ktmidi
https://github.com/jazz-soft/JZZ
https://github.com/thestk/rtmidi
Applications created with ktmidi: https://github.com/atsushieno/ktmidi/discussions/14
https://play.google.com/store/apps/details?id=org.androidaudioplugin.resident_midi_keyboard&pli=1
23:31 Using ktmidi with JavaFX and the benefits of Kotlin
https://melodymatrix.rocks
25:00 Geert sticks to Java and loves the 6-month releases
27:24 Apps created by Geert for various Apple devices
https://uwyn.com/midiwrist-unleashed
31:11 Atsushi uses MIDI to develop audio plugins
32:34 Geert found back his love for Java and created Rife2 and BLD
https://rife2.com
https://rife2.com/bld
https://software.moogmusic.com/store
Erik Thauvin https://www.linkedin.com/in/ethauvin/
43:13 How things just happen and finding a good open-source approach
https://codewithrockstar.com
https://webtechie.be/post/2024-06-18-jfxinaction-christopher-schnick
https://www.jdeploy.com
50:46 Conclusions
Transcript
Automatically generated from the audio, so it can contain errors in names and technical terms. Suggest a correction.
[0:00] Let’s play some music with Java and cin welcome to the FJ podcast all your news about OpenJDK media is a universal standard to communicate between music instruments and computers within OpenJDK there’s a whole Java X package dedicated to Medi communication and data handling but is it up to date are there better approaches now and what can we do with music Java and cotland let’s find out with my two guests my name is here be I’ve been a Java programmer for a long for as long as I can remember it started actually I think with JDK 1.0 and then I’ve been sort of moving in and out of the Java Community as it like felt appropriate but also been a musician for most of my life and actually started using synthesizers and midi a little bit before I started using Java so I bought a few of the first synthesizers that were digital and that were able to connect with then midi cables to each other and then to the first midi interfaces and the first tools that are called now Daw to be able to record and sequence that media data that would be sent between the synthesizers and then my passion for
[1:35] Music and computers and programming has sort of led me to very interesting places including where I am now I’ve been in this worldle for 10 years I work at Moog music which is one of the first synthesizer companies that existed and we are still alive and kicking and doing really cool stuff and I’m leading the software development team there which comprises both iOS mic Osos Windows apps and audio on media plugins as well as firmware on the hardware devices and editors that allow the hardware devices to be better integrated with the actual digital ecosystem so that’s a very quick overview of how this relates to me I think hi I’m atashi from Japan I have been I used to be rather AET developer for many many years until like 2018 and then I kind of turned my S into an Android developer people in the community and my primary language is like C++ and cing for some audio and media applications for a while without any jobs for a while and then when I was a doet developer I created the first cross platform media library in net and then after I graduated the cop I wanted I kind of wanted to do the same in cotl
[3:16] And I’m mostly for Android I mean I have been using my cup library in Android and then wanted to do the same in cing nowadays and now cling have become has become multiplatform ready so it’s getting quite similar to what I had in cop and I’m Frank dor Java programmer technical writer at aul and producer of this podcast and as a producer I’m totally free to pick my topics and because I’m working on a pet project where I try to visualize music challenged by my son my 14-year-old son I dove into this whole thing of mey and what is it and what can you do with it and what can you do with Java and that’s how yeah I discovered both of you here I follow you already for quite some time as being a Belgian yava Champion the first one and I discovered your library atushi that you created with cotlin and midi so thanks both for your great work and what you will share online before we dive into what we can do with media in Java and cotland what is midi exactly so it’s a protocol between devices music instruments correct it is med got invented in the 80s when like synthesize the first
[4:45] Synthesizer sort of came about and there was a definite like need in order to be able to connect them together and it’s it’s pretty remarkable actually that usually when standards like that appear they’re they don’t appear as standards but you often have corporations that create their own thing and then everyone sort of does their own thing in their corner but what is pretty remarkable about midi is that like companies came together and like like Roland Yamaha Fork Moog also back in the day was looking at it and created this standard that’s very very simple as a means to basically encode what musical data is both real time and non-real time and the midi 1.0 spec has essentially not changed much since the 80s there’s been additional extensions written for it there’s been different ways of using it for instance for light control or for more expressive control and that is probably why you have not seen many changes in Java X package because there hasn’t been that many widely adopted changes now pretty recently there is the midi 2.0 standard it’s it’s been worked on for a
[6:11] Long time but pretty recently it’s it’s ramed up very quickly and there’s a lot of companies interested in it including operating system companies and so if it’s probably time for the Java X package to be updated and to use the midi 2.0 functionalities but media 1.0 is still the widely available the one that every musician uses the one that every Daw basically has access to and to dive into the data itself so I’ve been experimenting bits I also have my piano Next to Me piano of my son to do this actually when you hit a note you receive three bytes byes yeah three bytes yeah media message is either two bytes or three btes depending on what type of message it is that is enough for most of the instruments until now but that is where MD 2.0 come in comes in because we now have instruments and devices that have like sensors that are way more capable that allow you to be way more real time expressive in the digital domain and for these type of performances midi 1.0 is a little bit limited but for the majority it’s still perfectly fine mhm you mentioned the Java X package so
[7:34] Indeed if you go into the OpenJDK sources you can dive into these sources they are on GitHub what was it I was looking into it so they didn’t change in the last six seven years and I think most of the changes were because the repository moved from a hidden one to GitHub so I don’t think there were a lot of changes so it’s really that stable that’s the IDE behind it it’s just a standard yeah table specification yeah it’s extremely stable like there’s just not many changes necessary it’s pretty remarkable actually MH at the same time the platform API didn’t improve the medi support a lot like Windows still uses the wi from Windows 90 something and then we have actually more features that we wanted like say creating arbitrary virtual media ports so that we can dynamically create some virtual synthesizers or virtual inputs dynamically but it was not really doable until every o and platform supports the those new features and actually Med while Medi 2.0 is almost ready we still have to wait for every platforms to support it so this medidi 2 also means that devices music instruments
[9:06] Also will need to change or newer instruments will have this new mid2 specification built in the way midi 2.0 is structured is that it incorporates media 1.0 and whenever a connection is made there’s a negotiation that happens that indicates which level of the transport protocol is being used the one big difference difference between mid 1.0 and mid 2.0 is that midi 2.0 requires bidirectional communication so you have to be able to receive and send from any device that is connected with midi 2.0 with midi 1.0 that wasn’t necessary you could basically just daisy chain a whole bunch of media 1.0 devices and never have information come back did I see correctly here that you were even at a conference recently where the med specification was defined or discussed I’m I’m part of media Association I used to be for two years I was on the technical Standards Board of the media Association and i’ I’ve been participating in quite a few working groups I actually represent Moog music at the media Association and also some other interests and there is this one specification that I personally have been very interested and
[10:25] Passionate about and I actually started that effort which is called EMP PE midi polyphonic expression where you basically use midi 1.0 the old specification the 40y old specification and use it with more modern expressive devices so sort of creating a bridge to allow people to experience what is currently possible with realtime electronic music playing without necessarily having to go all the way to MIDI 2.0 so yes and we had a in Berlin we had a meeting three weeks ago I think right before the trade show that’s called super Booth where we met with representatives of Apple Microsoft Native Instruments Avid Ableton bitw Moog of course Yamaha to sort of make more concrete plans on how to accelerate the adoption of midi 2.0 so you work on these instruments I guess those are more cc++ development that you’re doing there is the Java involved in the things you doing there is no Java involved on the actual devices the problem is still garbage collection it’s still it’s still like the risk of having nonre time like threats happening and you could go into real time J but it’s like
[11:55] Pretty big or ordeal to get that to work right sometimes people think about like latency that the garbage collector would introduce latency is not that much of a problem in practice because humans really deal well with latency you can deal with up to 12 milliseconds of latency without even noticing it it’s basically the latency of the sound traveling across the room if you would have your amplifier on the other side of the room and you play it’s about the same type of latency so we can deal with that the biggest problem is Jitter and Jitter basically means that whenever an action happens like say someone plays a note and then whenever the code processes it that latency is not constant like it shifts around and that tolerance is very low in human beings it sort of academic Studies have have found it lays between depending on everyone’s sensitivity between one and five milliseconds which is it’s very low tolerance so in that sense like Java is a little bit problematic for real time like midi performances you mentioned also a bit that midi is not cannot contain enough data to
[13:09] Handle new instruments is that the big evolution we see in music now you have these instruments where it’s not just a note being played but you have this touchbased like interfaces and you can bend the note a bit and press it harder are those the challenges that midi1 cannot handle maybe one can handle it up to a certain level so that is that specification called MP that I worked on with the working group which is based on top of midi 1.0 one one of the approaches there it takes is just a very quick summary for people that have never used midi 1.0 midia 1.0 is basically broken down in channels you have 16 channels on a port and the original intent was that each Channel or ranges of channels are being used by different instruments or different devices right and then when these new instruments came about that were able to express in multiple dimensions for each touch that specification called MP basically reframes what a channel is instead of saying a channel is a device it’s basically a channel is a finger so now your finger can be as expressive as older devices used to be we have like 10
[14:34] Fingers so 16 channels are more than enough but it’s still like limited a little bit in the resolution most of the messages are still seven bit some of them are 14 bit now we released a new MP specification I think it was two two or three months ago which sort of goes halfway where we introduce new new parameters that can use 14bit data across all three axes but Med 2.0 goes way farther it’s basically 32bit for each value but yeah we evolved a lot we have more we can handle more data we have better communication channels so I think yeah it was time for an evolution atushi so you have this library that you created which is a cotland library to interact with midi what was the reason that you created a you said you wanted to Port your CP work to cotland why did you use Scotland why not Java it totally depended on my back technical background like it was originally written in j8 and I was also an Android developer I mean I had been working at a company called zarine well because before that it was novel and I was working in a project called mon mono which implemented open source
[16:01] Version of doet alternative instead of Microsoft and while Microsoft had been doing those stuff in only on Windows we had been crossplatform in the first place and we had been oh well we had be we started from Linux and then extended the support to Mac OS even windows then extended it to embedded the software as well and then when mobile OS is showed up like iPhone and Android it was natural for us to extend our support to those platforms and when I joined family as a which was a new company after novel I was part of Z Android team and then wanted to bring in my crossplatform doet library to Android as well I also supported iOS later the Android was the first place and then Android was totally a Java world but while I was working in that company I was mostly you tied to Java and couldn’t really use codling as a development language because you know when you’re working on that kind of project I mean nonnative language such as reactor native or flat those things you’re supposed to stick to Java and jni things to interoperate with those native platforms and I was also part of that stuff as well and then
[17:39] After I quit Microsoft I could totally I could totally switch to that cottoning language and cottoning was way closer to cop for me and it was Natural Choice for me to switch to cottoning and since I was Android first and the cottoning was the first chice by nature and then they started supporting C multiplatform later and then porting my library to cing was almost natural fit for that and propose too I didn’t really start Ting my cross platform media library itself in the beginning I had another project that supported the virtual medicine syzer for the F that is that was a virtual Medi synthesizer on Linux Linux desktop and it was actually made designed to be crossplatform so I wanted to bring it to Android as well and actually I’m the contributor to fluid s project itself to bring in the Android support as well and I had a doet bindings then and then later I had the abstraction layer for any midi device accesses in my code so usually when you create some obstruction layer and you your actual implementation for those obstruction layer would be platform API like vmm media access cor media access ala media access
[19:25] Of that kind of stuff then cing became cross platform I could bring in my library to what world from the abstraction layer and then I could use that library to on Java desktop as well and I can confirm I’m using your library in my pet project and I canly connect to any any piano that I connect with it or another media device how do you compare your library to the Java X midi package or didn’t you really go are you using Java xmi or is it completely your own implementation it’s it would be a fa answer of yes and no I do use Java X XML h no sorry Java X on media to implement media access to I mean access to Media devices on Windows but not on Mac OS and Linux because on those oses I use crossplatform media API Library called altim Medi and use jni to access to those libraries on cing JVM cot multiplatform actually supports various different background backends like cing Jess and cing Native and they need different access to those native platform for each langage like in coton Native they have foundation called C interrup and they need some native support I mean there specific support
[21:06] For Native backing and totaling J as well and it would need maybe node ffi kind of stuff and I do use some some Library called jzz j z z which offers access to those libraries and on JVM to the reason I didn’t use Java X sound Medi was that they don’t really offer the way to create virtual ports that I mentioned earlier and on Elsa and cor media we can with that and Med the cross platform Library also supports that I will add to the show notes the link to your repository because it’s open source everyone can visit it how is it used at this moment KT media is it already in a lot of application you have your own demo applications where you use it in are there many more already not many more it was created mostly for my own purpose I wanted to bring in my virtual Medi keyboard applications especially because it was crucial to my creative process like I launch ew and use use my virtual midi keyboard to play it I’m not a piano player I do have some physical midi keyboard but I don’t really use that it very much then I wanted to bring my application in the first place I also
[22:48] Had some virtual Medi player and I did use that to say I have to say debug whatever I created in standard mifile it visualizes everything in the manner that I used to play the medi song files back in 20th century like when I was using FM synthesiz and they had their own visualizers to make it possible so I wanted to bring it the same but it still haven’t happened in coton yet because I had to deal with the graphics layer in Coty multiplatform and it was not really ready at that moment I can tell you that your application or your library works perfectly with Java and Java vix which is then another one of my hobby projects building user interfaces with Java vix and I saw that yeah yeah and because of your library being in cotland I started using Java vix in cotland which I have to admit that I do love cotland there are some ways how you can Define objects and fill in the parameters which is different than than how you do it in Java C is closer to cing rather than Java because say I don’t really want to deal with something like solls explosions on the method declaration
[24:16] Than it was similar in cotl than C to C and then building using C multiplatform and maybe even in jbm is not really looking for Java users like when I publish my Cod Library it would be a simple JVM Library just a jar for Java developers so like you could simply use my cing library the cing would be just regarded as an implementation language and as long as I pay some attention to not generate awkward Java yeah it would mostly work and I don’t know for you here have you taken the part from java to cotland or do you stick to Java because yeah you’re mostly working in C and C++ so what direction do you take now I’ve stuck to Java I feel that you know back in the day it was like there were so many years between major Java releases and between like language updates and then was like sort of feels like the Dark Ages like there’s the Dark Ages where nothing changed right but then with the yearly releases now like there’s so much Innovation and great progress in adopting tasteful new language features and doing it in such a way that code still continues working and when I started programming I was very
[25:56] Much about like a polyl trying every language under the sun which creates problems for maintainability like I’ve been bitten by that so much in the past and it is one of the things that I really appreciate about Java is I can open a 20- year-old project up and it works I can compile it I can gradually like adopt new features work through it so even before like the days of java 1.4 and stuff like that I felt it was worth paying the extra overhead even in boilerplate code but even then like with all the changes now I think it’s become extremely comfortable it’s definitely not comfortable at a cotlin level and I’ve I’ve felt that I don’t use cotlin I use Swift a lot on the Apple platforms which has quite a few like overlaps and like syntactical overlaps with cot I do miss some of these language features but I also have been bitten by all the Swift versions like where all of a sudden Swift 4 comes out and like we’re now at Swift 6 but Swift 4 came out and sort of the world stopped like you’re like okay well I got to start over basically so yeah I’ve not I’ve
[27:22] Not really jumped on CN you mentioned Swift I’ve seen some of your work that you Shar recently so you’ve been working with this new what is the glasses thing called for Apple the vision Vision Pro The Vision Pro you created apps for that you created apps for your watch where you have interaction with media devices is this all part of your job or is or this some of it is some of it is so we as Mo Music we basically created the first spatial synthesizer on visual Pro it’s called animal Galaxy where you basically can play like there’s a very old electronic instrument called the thamin where you hold your hand next to an antenna and then there is a field where you can change the pitch and you can change the volume with your other hand so that is one of the instruments that started the founder of the company Bob Mog on its Journey so what we did was looking at division Pros gestures and division Pro gestures are basically you select with your eyes so your eyes are basically moving your mouse it’s like you move your mouse around and then you use your fingers as a pinch and drag
[28:44] To interact with whatever you’re looking at which actually makes per perfect sense for musical expression so we already had a synthesizer that we made for iPad we have quite a few but U we made the first like professional synthesizer on iPad about 12 13 years ago called anog and we sort of Revisited that and reimagined it for what it would be in a spatial Computing context which is a lot of fun it was really great project still working on that actually just I just went to WWDC I just came back late last night got some cool ideas to further improve it and then there’s a bunch of projects that I Do by myself I have my own company with which I do all the projects that I know will not make any money and because I’m very interested in the in the human computer relationship like how far can H can a computer or new sensors allow humans to reach different levels or higher levels of expressiveness to make audio and music actually way more emotional way more personal which is typically not what people would be thinking about when you say hey there’s a computer in
[30:03] The mix like it’ll become like stale and digital and like I actually think there is a really cool Avenue where that is the opposite and so that is where I’ve been creating like a lot of different products including like one of the latest one I did was a reimplementation of an app I did six years ago called Mist reimplemented called Mist unleash where it’s like a fully Standalone media controller on your watch that can talk over Bluetooth to any media device that supports Bluetooth and then you can use motion control with your hands and use Al accelerometer control to sort of trigger things with different velocity and it’s just fun fun fun projects and then I usually package these up create a prop proper product out of it with tutorials and manuals put it on the App Store and see what happens and then often people use it for a lot of really cool things that I’ve never imagined which is very gratifying so you’re actually inventing new ways to make music yeah through your watch for instance yeah as sui you mentioned you’re not really a piano player or you a music player I don’t I don’t really
[31:16] Use instruments I mean well I when I created that M play I was mostly using the FL SC and then I have changed myself a lot more like an audio developer and I my primary field is audio plugins instead of Medi devices and I still use I still support midi extensively especially midi 2.0 in my I build in my audio plugin stuff like I’m not building audio plugins by myself but I’m rather building audio plug-in format like vstd or audio unit or Club iOS has audio unit V3 and I built my own version of audio unit for Android and I have been using the media 2.0 as a event forat and so that’s one of the reason I wanted to extensively support Medi stuff in my own library in both C++ and auto and then those Medi player kind of features have kind of moved to into my own Android Android and audio project to so you’re about creating these open source libraries sharing your work here I heard in the podcast of Adam Bean you moved a bit away from java and then you totally came back and created Drive 2 and built and you’re now competing with Maven and R is that correct I’m not trying to compete I was it’s just it
[33:01] Happened I think it’s an interesting I don’t know if anyone thinks it’s interesting but I think it’s interesting so I’m going to tell the story so two years ago working on new products with my team at m music we had done a lot of iOS and Mac OS sort of Apple App Store limited software we were we’re going to create a whole new range of plugins and we wanted to incorporate Windows support and with that we wanted to allow customers to have a direct direct checkout and distribution process through an online site like typical stuff and so we started looking at what was available out there and I was very disappointed in the solutions that I could find where you would have a flow where a customer would come in and you would have like a digital distribution of any type of package but then be able to have automatic updates versioning also allow the same fulfillment flow to be used with retail stores like people would walk into a music store and say hey I want to buy this piece of software there was not couldn’t really find a solution where you would have a code to redeem that would then go
[34:30] Through the exact same fulfillment process and everyone would sort of be funneled into like the same user account the same like like maintenance process afterwards and we tried a few tried a few things out like we tried Shopify with a bunch of plugins and we tried another platform called sendal which was supposed to be like really good at that but then we hit some major roadblocks in that the other thing that we really value is we want to be able to fully be in charge of the entire process we want to be able to theme it all to make it really look like Mo feel like Mo every single email should look and feel like Moog every single step in the interaction should be completely like curated so that our customer experience feels like right at home with our like overall customer experience and couldn’t really find anything that worked right so I like you know this is not hard like the problem there by itself is fundamentally not a difficult problem the biggest problem is the financial transaction and luckily we have stri and PayPal which have like extremely wellth thought out apis and
[35:48] Fulfillment flows with various level of integration that you can have you can like be completely hands off and have just a JavaScript API or you can dig all the way in have like a rest API to tightly integrate these Solutions without without having to deal with these complexities of financial transactions and Global transactions and so let’s let’s do a little Spike and try to come like come up with a little application using whatever framework that was out there to build this flow out for our checkout and I like just pick chva because I know Java like let’s just go in and do this and strip had all these examples written with the spark framework it’s is a very lightweight Java framework I liked it a lot and so I had a little example going and it was like all not themed it was like very Bare Bones HTML and then I had to go to the next step and now I had to find a template engine and that is sort of where like the hit the fan because I had been working on the framework myself 20 years ago called R the first version of it where I basically the intent of that
[37:06] Framework at the time was I was coming from a PHP experience I was like why is Java not as easy as PS PHP to really quickly just get something out there right back in the day was into BR Java beans and it was like it was very very heavy weight it was even heavier more heavyweight than spring was a breath of fresh air at the time right and so I had that framework that was sort of my realm back in the day and I came up with a template engine back then my brain still worked that way like this is the way template should work which is completely different than any other template engine in the planet coming from an architecture and a design background I always felt like templates just had to be like dead pieces of content just stuff like scrapbooking that you can very freely cut up in pieces and then you have some other process that like assembles them like to me templates never had to be in charge of the flow there should never be any flow control at all ever in a template and that historically in the web in the web world is has sort of been the opposite and I wasn’t looking for a
[38:26] Template engine and just all felt wrong to me so it’s like you know what they I’ll go back to my old template engine and I Port it to like Java I think it was 17 back then and see how it goes it was like a little weekend project and I got it working and it’s like really cool hey we got the templates running in spark and then I was like ah but now I need to actually get more complicated path info handling and I need to have a little bit more control over my routing and why do I have to hardcode you else in my templates like it’s like why is there no solution for this and the were these were all things that I had solved in my old framework and so as time went on and this was like really rapid it’s just a matter of weeks like while we were prototyping this thing was like oh you know what let me pull in that other piece from rif one let me pull in like the authentication layer let me pull in the database support like and before I knew it I had basically pulled in 80% of my old framework except for the whole routing architecture so just do the whole thing right and then I look I looked at the
[39:38] Capabilities of java 17 and how I would reimagine what a site definition and a routing definition would look like without any declaration just pure Java allowing you to use lambdas allowing you to use like glast suppliers and all of that stuff ended up with RI 2 that we used to build out the whole e-commerce platform at Moog that is like very very powerful now with promotions and Affiliates and back in reporting and like everything we wanted and that then led into like me try getting my team who had never done any Java who was like they do c C++ Swift maybe go getting my team on the Java platform and the first thing that they struggled with obviously Gradle like oh my God what is this thing like it’s it’s doing all these weird operations that I really don’t have control over and any build process sort of like gets slowed down by dependency resolution and then there’s a new version that comes out and all of a sudden the syntax doesn’t work anymore and so I was like this feels way too complicated while again like the same premise well the problem is simple the problem basically
[41:02] Is I just need to compile a bunch of files and I need to say what my class path is like and you can do it on the Java command line it’s it’s it’s not that hard right and it’s like maybe I should just try to write this in Java see what happens and I was sort of joking around online with Eric tuvan who WR like the link blog and then Cameron who was at tangol and Oracle like oh maybe I should just like create a Java build tool and like sitting like in the couch at night like maybe I should create a pure Java build tool and then again just like did a spike for a week and came up with something that was actually really small and comfortable and worked and did everything I needed and my team like completely adopted it like felt it was very comfortable and then a few more people saw what I was doing and eventually turned out into this initially was integrated into RI 2 as like oh just an easy tool to get Ri 2 projects going and then there was more and more interest to have this very lightweight fast intuitive imperative built infrastructure and extracted it and worked a lot on it with
[42:16] Eric tvan who helped a lot like figuring out all the fine details of different types of projects like he has a massive catalog of Open Source projects like 70 or8 open source projects and so he started moving all of these over from Gradle to build and then giving feedback and that’s where we are now like we it’s it’s been pretty interesting because I had absolutely no desire to create a build tool happens and I had absolutely no desire to compete with gradal or Maven like this is just not my like I don’t want to do anything commercial with this I actually like just hope that it’s useful for people because I think open source and so I just publish it online and see what the feedback is and it’s been great I’m using it my team’s using it a lot of other people using it it’s got quite a few stars on GitHub like there’s been Integrations with various different tools and stuff like that so yeah I it just happened I find it these stories really inspiring of how things just happened so you thought we needed better way to make our website Sushi you want to Port your code to Android actually and then
[43:30] It happened to be cotland we had the closing talk at devox was the creator of the Rockstar programming language which also just happened and bit fits in this topic of Music so yeah things just happening because you want to solve a problem for yourself and then actually find out if you distribute it that you can help a lot of people here you make your money of making music applications and working working for Muk atushi is this also your job now is interacting with music instruments now part of your job not really I’m jobless I build my own stuff for just for fun and I think a lot of things I have been doing is like unique and no one else is actually doing that like say no one builds audio plug-in formats for Android no one builds the midi to implementation up to the highest almost highest level except for maybe juice Library which is written in C++ and the cot in cotaling I’m definitely the only one and it’s kind of fun to explore that kind of the most advanced stuff by myself and then I’m combining it you Library associate with Java vix which is also not a typical use case to make
[45:02] Music applications but yeah indeed it’s fun it’s it’s discovering new technologies and just trying out and see what you can learn out of it so I’m happy here that you also rediscovered Java and how it evolved there’s another side to publishing I’ve been open doing open source for I think my whole career in some form or fashion and I really like that public development process and sometimes I can’t do it because it’s a commercial product and just not possible but I always try to have a few things that happen in public where whoever is interested in that Niche you’re operating in can immediately give you feedback and you never get as many ideas or create as cool things as as when there’s multiple people sort of very spontaneously see how it impacts them and like what their thoughts about it are and maybe even contributes and that’s that’s also why I usually always write public documentation and sort of try try to make it as easy as possible for people to just give it a go see like oh maybe I like this maybe not and if you don’t that’s also totally fine that’s almost similar like the open
[46:20] Source is that default for me as well and then why not a lot of people actually to reach my projects unlike people like you there are certain people who want to explore and find some new software like I develop and then they give some very nice feedback and that’s always fun to deal with and if I want to work on quite big project like mono I used to work on I could always join some such company and then start working at any time I also understand both your story about open source I have one challenge with my music app that I’m developing so the ID is from my 14-year-old son and his ID is that he will become extremely rich because of it so yes of course yeah so I cannot make it open source but as an open source developer I will do part of it open source yeah yes there’s a big difference between dreams of teenagers and the actual world but not even teenagers like it’s really interesting I think that type of thinking I like if you interact with people that are not in our industry and i’ I’ve had it I suppose you guys have had it too like with your partner or your parents or where you’re like I’m
[47:48] Just doing this thing for free but I need to work on it the whole weekend because like it needs to be good they’re like what are you doing and you’re giving this thing away why are you spending all this time on it well I mean it has to be good like everyone’s going to see it and I want it to be as good as it can possibly be and it’s this cognitive dissonance it’s like but where’s the money and then if you just should keep your ID to yourself and then you’re going to make a lot of money I’ve never seen that work never ever I just recorded a video that I will put online in the series Java vix in action and that’s Christopher schnick and he’s a oneperson company building a Java vix tool to interact SSH and VNC with devices your Docker environment whatever and it’s the same story he’s creating it in the open and selling it with some extra features where again the idea is yeah we make tools because we use open source libraries so yeah we should also share what we are creating and how we are creating how we are using it the tool I’m making since yesterday St Hanah helped me to set up the J deploy build
[49:09] Process so that it just Builds on GitHub and if you installed it once you will always get the latest versions these tools which are just available which just work and are maintained by the Creator and other people using yeah that’s that’s why I love the whole Java environment and I don’t know maybei you can compare it with the windows.net c environment I would to say Java had been always open and they more like community community based development what happened like say in D World lots of people were expecting Microsoft to work on this and that and they always wanted some genuine kind of stuff and it was a remarkable difference but donator is also getting open source and they it became open source and then there are more people like our I mean mono was always like more like a Java and everyone in the community contributed the code as well and so I think doet became quite similar and the doet ENT the anti doet team was quite open on GitHub and to accept issues and PR requests and whatsoever so I think they were getting better mhm yeah it’s not Al only the tools I also
[50:38] Like the community and reaching out to people like both of you and just being able to have a chat and discuss all these these kind of things okay good is there something more you want to share if you want to check out like the Java stuff I did it’s R to or if 2.com and then that also leads to build and then leads into dozens and dozens of pages of examples and tutorials and documentation and whatnot I will add all these links to the show notes of this podcast so they will be both in your podcast app in YouTube and in a Foojay blog of course and the same of course the library of you atushi so that people can find it there and start experimenting with music and Java and medidi and cin and whatever they want to include in the mix all thanks a lot for your time and hope to see you soon yeah take care bye a of JDK
Found a mistake, or something to add? Edit this page on GitHub





