Giter Site home page Giter Site logo

midijack's Introduction

Note: MidiJack is superseded by a new MIDI plugin Minis. Although you can still use MidiJack with the latest Unity version, it's recommended to migrate to Minis for further updates.

MIDI Jack

MIDI Jack is a MIDI input plugin for Unity.

sample

System Requirements

  • Unity 5
  • Windows or Mac OS X

Installation

Download and import MidiJack.unitypackage into your project. That’s it!

See the troubleshooting topics if you encounter any problems.

API Reference

The basic functions of MIDI Jack are provided in the MidiMaster class.

The channel arguments in the following functions can be omitted. In that case, the functions return the values in the All-Channel slot, which stores mixed status of all active channels.

  • MidiMaster.GetKey (channel, noteNumber)

    Returns the velocity value while the key is pressed, or zero while the key is released. The value ranges from 0.0 (note-off) to 1.0 (maximum velocity).

  • MidiMaster.GetKeyDown (channel, noteNumber)

    Returns true during the frame the user starts pressing down the key.

  • MidiMaster.GetKeyUp (channel, noteNumber)

    Returns true during the frame the user releases the key.

  • MidiMaster.GetKnob (channel, knobNumber, defaultValue)

    Returns the controller value (CC). The value ranges from 0.0 to 1.0.

  • MidiMaster.GetKnobNumbers (channel)

    Returns the list of active controllers.

There are also delegates for the each type of MIDI event.

  • MidiMaster.noteOnDelegate (channel, noteNumber, velocity)
  • MidiMaster.noteOffDelegate (channel, noteNumber)
  • MidiMaster.knobDelegate (channel, knobNumber, konbValue)

MIDI Monitor Window

MIDI Jack provides the MIDI Monitor window, which shows the list of active devices and incoming MIDI messages.

monitor

The MIDI Monitor window is available from the menu Window -> MIDI Jack.

Current Limitations

  • Currently MIDI Jack only supports Windows and OS X. No iOS support yet.
  • Only supports note and CC messages. No support for program changes nor SysEx.
  • The MIDI Jack plugin always tries to capture all available MIDI devices. On Windows this behavior may conflict with other MIDI applications.

License

Copyright (C) 2013-2015 Keijiro Takahashi

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

midijack's People

Contributors

kant avatar keijiro avatar thriftysnail avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

midijack's Issues

Does it work with Hololens 1 ?

Hi

I am working on an application in which i want to get input from the yamaha keyboard and play it in Hololens. Do you think this plugin will work according to my requirements?

If not can you suggest me what to do to achieve it?

Thanks in advance

Any way to throttle/debounce MIDI Messages?

I've been doing some profiling for some CPU overload during performance and found that this plugin is causing a CPU spike and bottleneck whenever there is a steady MIDI CC, like an auto-knob fade.
image

The steady stream of CC messages comes from a DAW or Midi controller (pictured: Ableton) when there is a ramp used such as this:
image

A slower staircase ramp of Midi CC, like the following screenshot, removes the performance hit and MIDIJack CPU usage drops.
image

I've tried different workflows and approaches and refactoring my code, debouncing the CC messages going out, but I'm hitting a wall.

I'm wondering if you can recommend a way to debounce the incoming CC messages within MidiJack. I've tried a few hacks but I'm not having luck - there's still a heavy hit to the CPU during a knob fade. ( unless the Update() _callback is commented out of MidiStateUpdater.cs )

5 note limit

I created a Unity project with MidiJack, and it only seems to have a polyphony of 5. Could this possibly be raised?
If nobody else has this problem, it's just my code and I need to git gud :P

Is it possible to get a timestamp?

My drum kit calls note up almost instantly after a note down, which means that GetKey/GetKeyDown are never true in Update loops.
What I'd really like is the noteOnDelegate to also include the midi-time timestamp of the note so I can handle this stuff myself, but I'm not sure how to get it out from the message data. Can anyone shed some light?

Message loss on low frame rate

Hi Keijiro!
I'm launching several particle systems and objects in unity, and have programmed disable/enable toggles with midi notes.
In the Editor it runs almost right, but it forgives some notes ... but in build, there's no notes arround entering my scene.
in Editor I can see notes in your midiJack Window, but when they call some debug.log ... it appears only in some of the hits of my midi touch-osc controller.

So, There's some strategy to give more 'presence' to our notes? or rate?... I see the application too busy in launching particles than listening to midinotes...

Well, thanks for help!
Albert.

Android Support?

Hi, I'm working on a google cardboard music game. It would be perfect if it can support Android

macOS - MidiJackPlugin.bundle - "cannot be opened because the developer cannot be verified" error

Testing with Unity 2019.4.2f1, macOS Catalina 10.15.6.

I received a Unity Project with MIDIJack in it. When running a scene with MIDIJack components I got a macOS popup stating that MidiJackPlugin.bundle "cannot be opened because the developer cannot be verified"

The macOS pop-up didn't provide an option to 'Trust' this .bundle, and wanted me to move it to the bin :)

To fix this and get my scene running I had to go to macOS Terminal and run the following command:

xattr -r -d com.apple.quarantine /path/to/MidiJackPlugin.bundle

Inifinite midi device detected which freezes the editor

Hello @keijiro,

It's the first time I'm using your plugin to use my Korg MicroKontrol device. When checking the device in the MidiJack window, I get the following messages and they seem to be infinite. Finally, it freezes the editor which I have to kill in the task manager. Any idea about this? Thanks!

image

Using Unity 2019.2.0f1

Failing to load dll on windows

Getting the following error.

Windows 8.1
Unity 5.0.1f1

Failed to load 'Assets/MidiJack/Plugins/x64/MidiJackPlugin.dll' with error 'The specified module could not be found.
', GetDllDirectory returned ''. If GetDllDirectory returned non empty path, check that you're using SetDirectoryDll correctly.

I have tried in both x86 and x64 modes and still receive the same error.
Trying to trouble shoot now but no luck yet.

When loading a scene that uses MidiMaster.GetKeyDown(), the scene will no longer act appropriately.

I have a game that includes two scenes. The start menu, and the game that uses MidiJack. When playing the game for the first time everything works fine. If you then leave the game and load it back up none of the GetKeyDown()'s work as expected. I might be able to very rarely get an input if I mash all the keys as fast as I can.
The MidiJack window shows that it is getting the same inputs, and GetKey() seems to work as it should even if the scene has been reloaded. I just can't seem to use GetKey() as a work around because holding it down means the note gets played every frame.

midi device not released after being used by midijack ?

Hi Kejiro,
great package, thank you for sharing.
I have an issue, maybe it's just my system, in this case please disregard this message.
In my windows 7 64bit system, after I use midijack in Unity, the midi device is not available anymore to other applications, like midi-ox or cubase, even after closing Unity. Is this something related to the package and happens to somebody else too or it can be just a problem in my configuration? In this case, how to release the midi resource after using midijack without rebooting?

Thanks

Getting a lot of errors "String too long for TextMeshGenerator..." and crash soonafter

hi. i'm also using a korg nanokontrol 2. However i get tons of errors and then unity crashes. I've installed the Korg freshly with the newest what not from the manufacturer site, I freshly downloaded the MidiJack.unitypackage file and imported it into a fresh project. The Korg Nanokontrol 2 midi controller seems to be detected very weirdly as multiple different midi devices. Furthermore the console gets spammed with "String too long for TextMeshGenerator. Cutting off characters. UnityEngine.GUIUtility:ProcessEvent(int32, Intpr)". I will attach a picture:

capture

Detected MIDI devices: device unknown

Hi! This is my first time opening an issue here.

Im trying to work with a Kurzweil K2000 v3 (I know it is kinda old but the available drivers are until 2015). I currently connect it with a Yamaha USB UX16 adapter and everything seems to be working fine.

However, as I add MIDIJack to my existing piano game, I open MIDI Jack Window and it only shows

Detected MIDI devices:
AF53EB20: unknown

What I want to know is if there is a certain set of MIDI tools and adaptors that are supported by this MIDIJack. This way I know if I just need a new MIDI clavinova/keyboard or if there is a way for me to update the supported devices of MIDIJack.

I hope my issue made sense and to the mods feel free to redirect me to the proper venue if you believe that my issue is not appropriate. Thank you and have a nice day.

Upgrade to Unity 2020

Hello I have Unity 2020 and Unity 5:
There are no bugs in 2020 but the midi keyboard is not working,
since i don't have a midi keyboard i use android as input to my keyboard.
I try in unity 5 everything works there.
can i somehow upgrade to version 2020?

P.S: yes I know you have a new plugin "Minis" but I don't want to use the new inpput system.

Does this support UWP 10?

Hi!

Does this support UWP 10?

Can we solve this issue?
My UWP 10 device can't found dll.

error message.
DllNotFoundException: Unable to load DLL 'MidiJackPlugin': The specified procedure could not be found. (Exception from HRESULT: 0x8007007F)
at MidiJack.MidiDriver.DequeueIncomingData()
at MidiJack.MidiDriver.Update()
at MidiJack.MidiDriver.UpdateIfNeeded()
at MidiJack.MidiDriver.GetKey(MidiChannel channel, Int32 noteNumber)
at NoteIndicator.Update()
at NoteIndicator.$Invoke5Update(Int64 instance, Int64* args)
at UnityEngine.Internal.$MethodUtility.InvokeMethod(Int64 instance, Int64* args, IntPtr method)
(Filename: Line: 0)

MidiJack for Unity 2017

Hi Mr. Keijiro
I am a university student that wants to create a game with Unity for Mac OS where a piano keyboard acts as the control. I am new to Unity so I do not know whether this is a stupid question, but before I begin with development I want to know whether MidiJack can be used with Unity 2017.

Thank you very much for your hard work.

Unity not recognizing Midi Messages properly on MacOS Catalina with Alesis Nitro Mesh Kit

I'm sending a Unity 2019.4.29 MacOS Build to a colleague with MacOS Catalina 10.15. The Build should be controlled with an electronic drumset, the Alesis Nitro Mesh Mit. It is recognized as a Midi Device, but the Midi Messages that are detected look like this:

s(F8) d(00,00) from 6A39D778

and this message is received multiple times independent from any input on the drumset.

The input itself is not detected by the function MidiMaster.GetKeyDown(notenumber). I'm iterating through all notenumbervalues between 0 and 127, but the return is always false.
When I use a Windows 10 build and a AKAI LPD8 Midi Controller I get the following Midi Message when I play the Notenumber 36 for example:

s(90) d(24,21) from 341BFC90
s(80) d(24,7F) from 341BFC90

The MidiMaster.GetKeyDown(36) returns true.

Does anyone have any suggestions how to approach and solve this problem?
Any help is appreciated.

MIDI only triggering on second press

Hey, I'm trying to write a script in Unity that allows it to respond to any MIDI note, not just the specified one. In my program it creates an object each time you press a key. It works perfectly with the key numbers assigned, but not when I try it like this. Also the GUI number instantly changes with a key press, but the makeCube bit doesn't do anything until the second press of the same key.

using UnityEngine;
using MidiJack;

public class DelegateTester : MonoBehaviour
{
public GameObject cube;
int noteNumber;
public Vector3 ObjectSpawnPosition;
string noteGUI;

private void Start()
{
    MidiMaster.noteOnDelegate += NoteOn;
}

private void Update()
{
   
    ObjectSpawnPosition = new Vector3
                (Random.Range(-30f, 30f), Random.Range(-30f, 30f), Random.Range(5f, 120f));

    if (MidiMaster.GetKeyDown(noteNumber))
    {
        makeCube();
    }
}

void NoteOn(MidiChannel channel, int note, float velocity)
{
    noteNumber = note;
    noteGUI = note.ToString();
    Debug.Log("NoteOn: " + channel + "," + note + "," + velocity);
}

void makeCube()
{
    Instantiate(cube, ObjectSpawnPosition, Quaternion.identity);
}

private void OnGUI()
{
    GUI.Label(new Rect(10, 10, Screen.width, Screen.height), noteGUI);
}

}

Knob range larger than 0 to 127

Hi keijiro, I am using Fl studio as midi out device, Fl can be configured to output a midi value more than 127, like from 0 to 1000. When I tested this with this plugin it didn't work properly, I am also using "loopMIDI" to link it to unity, Is there any modification i can do to have a larger range in the plugin, or the problem is coming from the midi link between Fl and unity "loopMIDI"?, i need this cuz i am controlling transform of objects and 128 points makes the motion not so smooth.
Thanks in advance, and also for creating this really useful plugin 😄

Mac OSX problems

Hello!

I'm trying to set up MidiJack on Mac, but Unity doesn't detect any notes in the Example Note scene. When i click the Midi Jack tab under windows, i see my USB Midi Cable showing up.

Do you have any pointers?

Duplicate device detection not working on Win10

Hello -- I'm trying to use MidiJack with a nanoKONTROL2 on Windows 10, and when I open the MidiJack window I see an endless spew of duplicate devices appearing over time (each with a unique DeviceHandle). I'm using the MidiJackPlugin.dll in a C++ test project to debug the issue, and I can reproduce the problem there as well, so I don't think Unity is involved.

Tracing into the DLL code: every time I call MidiJackDequeueIncomingData(), it calls RefreshDevices(), which in turn calls OpenAllDevices(). This function correctly detects 1 connected device, and calls OpenDevice(0). This is where the problem seems to occur -- OpenDevice calls midiInOpen() with index=0, which gets a new DeviceHandle and returns MMSYSERR_NOERROR, even though the device at index 0 is already open. This handle is immediately passed to midiInStart(), which also returns MMSYSERR_NOERROR. The plugin now believes it's detected and started a brand new device, so it adds it to active_handles array. This array just continues to grow, filling up with new handles all referring to the same device.

I'm not sure what the actual error is; is either midiInOpen() or midiInStart() supposed to return an error code if the specified device has already been opened/started, or is the application's responsibility to query all handles after opening them and filtering out/closing those that have already been opened & started? If the latter, then MidiJack just seems to be broken as written -- yet I see plenty of successful reports of it working on Windows, so that seems unlikely. Could it instead be a driver issue on KORG's side? I'm using the latest WIn10 driver I can find (1.15 r25e).

Any help would be appreciated; thanks!

listen to all notes (or certain notes) in one script/empty object

Hi! is it possible that one empty object listen ALL notes, not just a specific one?
Currently, a script listen the note number you specified.. I need it to listen data coming from note 0, 1, 2, 3, etc.
is there a way? I am missing something (maybe is already possible and i dont get how)?
thanks in advance

Works in Editor, not in Build

Hi,
The controller works perfectly in the editor, but when I build the game, the controller no longer works with the executable. It still triggers (I can see the triggers in the output.log), but nothing happens in the game. Any suggestions?

unity standalone build

Hi. I am loving this tool and use it to move scene elements in Unity. One issue I'm having s that I am unable to build a standalone .exe and get my controller to work. The build is created, just no midi support.. any help would be much appreciated!

MidiJack not working after scene change

Whenever I try to use SceneManager.LoadScene(), and then in the new scene try using MidiMaster.GetKeyDown(), nothing happens. There are no errors of any kind, and no logs. Do I need to re-initialise it somehow?

Almost Stopped in U2020.3

Hi
Mr Keijiro,
We know you are full of work and so many projects..
But we need an update and enhancements of your midijack, so I've tried to use it in Unity 2020.3 and (even in editor) it comes soooo muuuuch slow, almost stopped ...
So, please, we need a solution, why not to ask Unity official developers to implement Midi definitively as a default package...¿?

So, thanks anyway...
A.C.

MidiJackGetEndpointName() can return "unknown" for valid handles on 64-bit Windows

On 64-bit Windows, the ID returned by MidiJackGetEndpointIDAtIndex(index) is the low 32 bits of the DeviceHandle. When this ID is passed into MidiJackGetEndpointName(), it "converts" it back to a handle by casting it back to a 64-bit int, but the high 32 bits of the handle can not be recovered. Passing the resulting handle to midiInGetDevCaps() results in an invalid handle error, so the function returns "unknown".

The issue can be solved by maintaining a std::map<DeviceID, DeviceHandle> to convert 32-bit device IDs back to the full 64-bit device handle. I can prepare a PR if you'd like.

Generating too many threads

Somehow it keeps on incessantly creating threads. When checked with the Task Manager, i could observe that the number of threads being generated went up from 110 to 2042 before the application crashed. Any help would be helpful in order to circumvent the problem.

Thanks in Advance. By the Way i am using Unity 5.6

NoteOn delegate triggers on actual Note Off

I've been using a loop over all keys in Update(), but there was some message loss, so I've tried the delegate. But now I have the problem that I get a trigger of NoteOn on an actual Note Off.

When I press a key I get the correct NoteOn event. But when I let go I get the same event, but with 0 velocity. So now I have to check for velocity > 0. Is this intended?

Keyboard Midi Controller

Hey i want to use my keboard as Midi Controller with MidiJack, but it doesnt recognize the keboard as Midi Controller in the Window -> Midi Jack, what am i suppose to do @keijiro ? Thank you !

MIDI output?

Any plans for MIDI output? It looks like your older Unity MIDI bridge project had MIDI out support.

I'd like to send CC messages to a Korg nanoKONTROL2 to control the button LEDs.

Great work on this, BTW. The input API is comfortably familiar and the MIDI message logging in the inspector is really helpful.

IAC Driver compatibility

I'm able to get Midi Jack to work about half of the time with IAC Driver on Mojave. Any suggestions? I want to send MIDI from Logic to Unity, so I'm sending MIDI from Logic to the IAC Driver, which should be picked up by MidiJack.. I confirmed that MIDI is successfully going from Logic to IAC Driver by checking it with both an external keyboard and Pure data. However, MidiJack only receives it sporadically. Any help would be appreciated!

Midi out

Hi Keijiro Takahashi,

A truly wonderful piece of code, I followed the instructions and it just works, brilliant !!

But after installing it I found out it only has midi in functionalities, so I have to tryout your older piece of code 'Unity MIDI Bridge', which I hope will work just as simple as MidiJack.

Besides the lack of midi out, it works great, hope to see midi out someday in this version, :)

Warmest regards,

Michel Teggeler

MidiJack doesn't work after the build.

Hi,

Midijack is working perfectly in the editor but after a build it will not work at all.

I'm building it on Windows10 64bit with Unity version 2017.3.0p1 (64-bit).

I also tried it with a clean project, using your example CC scene, the result is the same.

My midi device is same as yours, nano kontrol.

Thank you

When in edit mode no input is detected, once stopped midi device is no longer accessible by any application.

i use the getKey & getKeyDown in my code like this:

(...)

        if (MidiJack.MidiMaster.GetKeyDown(MidiJack.MidiChannel.All, i) == true || MidiJack.MidiMaster.GetKey(MidiJack.MidiChannel.All, i) > 0)
        {
            IndexDisplay = i;
            NoteNumberD = i - _ShiftValue;
            tar.SetBlendShapeWeight(_Indexes[NoteNumberD], MidiJack.MidiMaster.GetKey(MidiJack.MidiChannel.All, i) * 75f);
        }

(...)

once i press play, no input is detected and when i stop, the device is no longer detected for other applications (Chrome, FLstudio, Ableton).

just a little help please

Hi guys, I'm using MidiJack with a touchOsc controller,
I'm sending cc to my scene to change a color in a material. it's all ok, but,
as I use a Random.Range to get some variety of colors, and I listen to cc in update function...
then the color randomizes constantly,
My solution consists in restrict the color calculation only when update receives some cc data from MidiJack.
But i don't know what to write in the If statement to check only if there is some data entering, not the data..
I tried: that... but no results... if( MidiDriver.Instance.GetKnob(0, knobNumber, 0) != 0) { colorize(): }
Well, there' s someone who has a solution for that?
thanks a lot..
A.C.

MIDI controller unity build issue

Hey, thanks for sharing this!

I'm having an issue though with my MIDI controller (Korg nanoKONTROL2) where within the Unity engine I can change values of a slider using a knob/encoder, but when I make a build it no longer works. This is the code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using MidiJack;

public class CityPower : MonoBehaviour {

public GameObject playerPowerBar;
public Image transferPower;

Slider cityPowerSlider;

// Use this for initialization
void Start () {
    cityPowerSlider = GetComponent<Slider>();
}

// Update is called once per frame
void Update () {

    var s = MidiMaster.GetKnob(16);
    var d = MidiMaster.GetKnob(32);
   
    cityPowerSlider.value = s;

    if (s == 0.0)
    {
        cityPowerSlider.maxValue = 0.0f;
        transferPower.GetComponent<Image>().enabled = true;
    }

    if (s == 0.0 & d == 1.0)
    {
        playerPowerBar.gameObject.GetComponent<PowerBar>().enabled = true;
        Destroy(gameObject);
    }

}

}

Anyone know why this would be happening? Please let me know if you need additional info.

Thanks.

Note up triggers twice

Tested on OSX with a drum kit and keyboard.
On hitting a drum I expect to see a note on and an note off. What I see is two note ons and an a note off.
The second note on has data2 of 0. Should the system avoid registering note on if note off is detected?

Beginner Stuff

Hey folks, I'm having trouble using the most basic functions of MidiJack. I have a knob that I want to return the value of when it has changed. The MidiMaster.GetKnob function returns a float value and I want to store this in a variable, so I use the function to assign value to this variable. In this case, I am using knob number 10, and I did not specify a channel. I've tried the following calls, but they're all returning incorrect stuff:

float temp = MidiMaster.GetKnob(0xB0, 10);
float temp = MidiMaster.GetKnob(10, 0);

Obviously they're not correct. But I am at a loss here. Any help is amazingly appreciated. Thank you.

Knob/Slider values always return 0.07874+ not 1

I'm not quite sure why, but when I turn up the knobs to max or sliders on my midi device the value that's returned is 0.07874+. I'm using a KORG midi device, and in the editor I can set what the lowest and highest possible values are.

The numbers are returning properly in hex in the MIDI Jack window but when debugging the knobValue to the console, it's always a really small number.

Thoughts?

Hololens2(ARM) usage

Hello,

I want to develop hololens2 application which has a function receiving/sending MIDI.
Does "MIDIjack" support for Hololens2(ARM)?

Please let me know, if you have good way(ex: sample project, library ).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.