All Projects → greyivy → learn-push2-with-svelte

greyivy / learn-push2-with-svelte

Licence: Unlicense license
Learn chords, scales, and music theory on the Push 2, right inside your web browser!

Programming Languages

typescript
32286 projects
Svelte
593 projects
python
139335 projects - #7 most used programming language
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to learn-push2-with-svelte

Scribbletune
Create music with JavaScript
Stars: ✭ 3,509 (+9383.78%)
Mutual labels:  midi, webmidi
pacer-editor
Web editor for the Nektar Pacer MIDI controler
Stars: ✭ 16 (-56.76%)
Mutual labels:  midi, webmidi
PicoAudio.js
A JavaScript library for playing MIDI (Standard MIDI File) on Web.
Stars: ✭ 28 (-24.32%)
Mutual labels:  midi, webmidi
wui
Collection of GUI widgets for the web
Stars: ✭ 44 (+18.92%)
Mutual labels:  midi, webmidi
microfreak-reader
An application to read and display the presets stored in the Arturia MicroFreak memory.
Stars: ✭ 32 (-13.51%)
Mutual labels:  midi, webmidi
OpenDeck
Software and hardware platform for simpler building of MIDI controllers with support for DMX.
Stars: ✭ 438 (+1083.78%)
Mutual labels:  midi, webmidi
midi
An Observable based library for the use of Web MIDI API with Angular
Stars: ✭ 35 (-5.41%)
Mutual labels:  midi, webmidi
BS2-Web
Novation Bass Station II Web interface
Stars: ✭ 34 (-8.11%)
Mutual labels:  midi, webmidi
svelte-cordova-boilerplate
📱 Create a mobile app with this friendly Svelte boilerplate for apache cordova. Made easy your android app and ios app
Stars: ✭ 23 (-37.84%)
Mutual labels:  svelte
facet
Facet is a live coding system for algorithmic music
Stars: ✭ 72 (+94.59%)
Mutual labels:  midi
drain-js
Makes smooth transitions between two numbers.
Stars: ✭ 45 (+21.62%)
Mutual labels:  svelte
svelte-simple-icons
📦 This package provides the Simple Icons packaged as a set of Svelte components.
Stars: ✭ 27 (-27.03%)
Mutual labels:  svelte
breakout
🕹 A Breakout game with levels, speed modes, lives, score count, and more.
Stars: ✭ 15 (-59.46%)
Mutual labels:  svelte
ableton-midi-sculptor
Ableton MIDI Sculptor: Tools for MIDI editing in Ableton Live
Stars: ✭ 56 (+51.35%)
Mutual labels:  midi
midi2cv
Use a simple Python script, a few wires, and a MCP4725 to convert any MIDI signal to a control voltage.
Stars: ✭ 26 (-29.73%)
Mutual labels:  midi
melrose
interactive programming of melodies, producing MIDI
Stars: ✭ 130 (+251.35%)
Mutual labels:  midi
qq
Houdini little tools and knowledge
Stars: ✭ 21 (-43.24%)
Mutual labels:  midi
color-color
Website to generate color palettes in HSLuv color space
Stars: ✭ 17 (-54.05%)
Mutual labels:  svelte
weatherify
A weather app built with Svelte
Stars: ✭ 17 (-54.05%)
Mutual labels:  svelte
portmidi
PortMidi is a cross platform (Windows, macOS, Linux, and BSDs which support alsalib) library for interfacing with operating systems' MIDI I/O APIs.
Stars: ✭ 16 (-56.76%)
Mutual labels:  midi

Learn Push 2 with Svelte (and WebMIDI)

🌸 Currently very early in development! Feel free to contribute <3 🌸

Learn chords, scales, and music theory on the Push 2, right inside your web browser! This started as a project to test out Svelte but it turns out it's really useful 🤷‍♀️

Demo

View in any Chromium-based browser

preview.mp4

Features

  • Experimental Push 2 display driver with WebUSB and Pyodide (via WebASM)
  • Works on Push 2 and Push 1 (without a working display driver at the moment)
  • Highlights chords and scales onscreen and on your controller display and pads
  • Overlays useful music theory information on top of your pads
  • Mirrors the physical controller onscreen in real time
  • Shows a traditional keyboard mapped to your controller's pads
  • Predicts the chord you're currently playing
  • Helps you practice chord progressions (think Guitar Hero)
  • A few sounds and a TON of chords, chord progressions, and scales to try out
  • Easy to add other controllers (e.g. Launchpad), layout generators, and sounds because TypeScript is awesome!
  • Super performant thanks in part to to Svelte's stores implementation and its easy nesting

Thanks to @stordahl for introducing me to Svelte!

Roadmap

  • UI improvements

Future ideas/improvements

  • Launchpad support
  • Push 1 display support
  • Song bank
  • Drumming practice
  • Fix chord equality (e.g. when advancing the chord bank)
  • Rewrite display driver in Rust (or another language) w/ WebASM
  • Configure a code formatter
  • Real-time remote jam sessions through WebRTC!?
  • ???
  • No profit (donate to mutual aid or a trans organization near you instead!)

This is a project template for Svelte apps. It lives at https://github.com/sveltejs/template.

To create a new project based on this template using degit:

npx degit sveltejs/template svelte-app
cd svelte-app

Note that you will need to have Node.js installed.

Get started

Install the dependencies...

cd svelte-app
npm install

...then start Rollup:

npm run dev

Navigate to localhost:5000. You should see your app running. Edit a component file in src, save it, and reload the page to see your changes.

By default, the server will only respond to requests from localhost. To allow connections from other computers, edit the sirv commands in package.json to include the option --host 0.0.0.0.

If you're using Visual Studio Code we recommend installing the official extension Svelte for VS Code. If you are using other editors you may need to install a plugin in order to get syntax highlighting and intellisense.

Building and running in production mode

To create an optimised version of the app:

npm run build

You can run the newly built app with npm run start. This uses sirv, which is included in your package.json's dependencies so that the app will work when you deploy to platforms like Heroku.

Single-page app mode

By default, sirv will only respond to requests that match files in public. This is to maximise compatibility with static fileservers, allowing you to deploy your app anywhere.

If you're building a single-page app (SPA) with multiple routes, sirv needs to be able to respond to requests for any path. You can make it so by editing the "start" command in package.json:

"start": "sirv public --single"

Using TypeScript

This template comes with a script to set up a TypeScript development environment, you can run it immediately after cloning the template with:

node scripts/setupTypeScript.js

Or remove the script via:

rm scripts/setupTypeScript.js

Deploying to the web

With Vercel

Install vercel if you haven't already:

npm install -g vercel

Then, from within your project folder:

cd public
vercel deploy --name my-project

With surge

Install surge if you haven't already:

npm install -g surge

Then, from within your project folder:

npm run build
surge public my-project.surge.sh
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].