Skip to content

Tobias-Kohn/WebJEM-Prototype

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

WebJEM-Prototype

This is a case study/prototype for a web-based version of JEM.

Additional information might be found in the blog entry Creating an Online Python Environment.

Please note that the web application might not be supported by all browsers. We have successfully run it in Chrome and Firefox.

What is JEM

JEM stands for Jython Environment for Music and is part of the Making Music with Computers-project. The focus of this project is to teach programming through making music, unleashing the creativity, curiosity, and potential of the students. In order to do so, JEM provides a simple editor, bundled with Jython and a set of highly sophisticated libraries for composing, transforming, and playing MIDI music.

The present WebJEM-Prototype grew out of a case study if the JEM environment could be ported to a browser-based web application. Originally, it also had a backend that run on IBM's cloud, but the core features of WebJEM do not require a server beyond a simple http-server.

Frameworks

The WebJEM project is based on, and requires, the following frameworks:

  • Skulpt (@GitHub) is used to run Python code client-side (inside the browser).
  • MIDI.js is a JavaScript-library for playing, and interacting with MIDI. It cannot only play MIDI sounds, but also supports connecting to external MIDI-devices.
  • MIDI.js Soundfonts is a collection of sound-fonts, necessary for MIDI to play various instruments.
  • ACE (@GitHub) is used as the browser-based editor of choice.

In addition, we ware able to add and use libraries from Processing.js, which, however, are not stricly part of the project itself.

Structure

Since this is a prototype/case study, it is not a completely coherent project adhering to rigorous software engineering standards. Parts of the project were written in JavaScript and Python, other parts are written in Scala and compiled to JavaScript using scala.js.

The web application offers a set of examples of Python programs. In the original project, these examples were added to index.html dynamically by the server-backend. In order to run without such a backend, we have included all links to the examples statically, which, unfortunately, led to an unwieldy large file.

release
This folder contains the entire web application as it is currently run, except for the soundfonts. You will have to fetch them directly from MIDI.js Soundfonts.

src
The sources used for the project. This is mostly the libraries added to Skulpt, as well as some glue code written in Scala. The Skulpt libraries need to be put into Skulpt's Lib-folder, before Skulpt is compiled to a JavaScript-library.

Acknowledgement

The present WebJEM-project is part of a larger project, that was funded by IBM (US).

Contributors

About

This is a case study/prototype for a web-based version of JEM

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published