Code Monkey home page Code Monkey logo

vpavlenko / rawl Goto Github PK

View Code? Open in Web Editor NEW
31.0 3.0 2.0 745.56 MB

Western tonal harmony and arrangement as seen in 12 colors. MIDI files in, piano rolls out. Abolition of standard notation's gatekeeping

Home Page: https://rawl.rocks

License: GNU General Public License v3.0

JavaScript 1.67% HTML 0.91% CSS 0.09% CMake 1.02% C++ 22.79% C 67.92% Makefile 0.36% Shell 0.14% Roff 0.01% M4 0.11% Assembly 0.51% Python 0.11% Perl 0.02% QMake 0.01% Batchfile 0.07% Dockerfile 0.02% TypeScript 4.24%
music-theory midi-player piano-roll chromesthesia synesthesia midi-parser music-visualizer book interactive-book

rawl's Introduction

Rawl

This is a fork of Chip Player JS that focuses on music theory analysis of MIDI and NES tracks. All credits for tremendous original work go to Matt Montag and all contributors to libraries that he managed to wire together. I'm just writing a tiny layer on top. The licensing is the same.

My stuff lives primarily in src/components/rawl, I also removed some features from the UI to maximize useful display area for analysis. Annotations live in src/corpus/analyses.json.

Your own annotations currently won't be saved, but I can fix that - please, contact me.

Setup instructions

Try yarn install and yarn start. If it doesn't work, try reading https://github.com/mmontag/chip-player-js/. Don't compile wasm, I pre-compiled it and added it to the repo. .

12 Colors

https://twitter.com/vitalypavlenko/status/1771820942680830417

Input formats

MIDI

MIDI files can be dropped into https://rawl.rocks/ for visualization. Saving for user files isn't supported yet (contact me). Additionally, there's a decent built-in MIDI library coming from Chip Player JS project: rock/pop, classical, jazz

TODO

This content should be transformed so that it's discoverable via search engines on queries like "yellow submarine analysis".

Also, the environment should make it super easy to record a YouTube video with the analysis, and even the one synchronized with real audio instead of a MIDI rendering.

Also, we should probably explore other MIDI datasets, eg. MetaMIDI, Los Angeles, 130k.

Also, this should probably be available on Ultimate Guitar.

Digital sheet music

There should be a tool to color noteheads of MusicXML and MuseScore files in 12 colors. It should be deployed as a drag-n-drop web app. It should have an instantly playable preview (eg. using https://opensheetmusicdisplay.org/)

We can upload some colored files to MuseScore for the discoverability of our system. I'm not sure how to balance and not to abuse this marketing channel.

Apparently, some system of coloring will be shipped with MuseScore very soon. We don't know yet how customizable that will be.

PDF sheet music

There should be an Optical Music Recognition (OMR) pipeline to color noteheads in place. We can probably do that by tweaking https://github.com/BreezeWhite/oemer

Audio

There should be a tool that colors spectrogram in 12 colors. See a prototype on Chromatone.

Also, there should be a splitter / recongition pipeline. See transcription notes

Video game music

The early VGM music is in unique position: it allows a precise extraction of a piano roll and it's transmitted in rips which sound almost exactly like composers designed them to.

Early consoles used simple oscillators (NES, Sega Game Gear, Sega Master System). Sega Genesis used FM synthesis. It's easy to extract pitches from those. Starting from SNES, I'm not so sure - it may require per-channel pitch recognition or a geeky digging into SNES DSP internals.

Live performance

Eg. a solo piano performance made from a digital piano should take MIDI notes and visualize them in real-time. Someone should take care of switching a tonic.

NES

Hypotheses

Languages on NES are clusters that are far away from each other. Some games that are unbound by external influences try to make tracks for levels so that all levels are as far from each other as possible. To achieve that, they employ the following languages:

Two things are interesting:

  • these languages most likely don't blend within a single track, but may well go together in different levels of the same game
  • other world language are absent: hemitonic pentatonics, gamelan, maqamat. all tunings are 12-edo

Another hypothesis is that Chinese developers largely used Chinese traditional pentatonic-based tonic-ambiguos language with guzheng imitations, disregarding the game content. (Or did they describe it in their own language, which I as a Westerner don't understand?)

What if every bootleg country has some unique musical language?

Also, it feels like there was a gradual development of cool timbral hacks and compositional form. Games from 1986 are simpler than games from 1993.

Composers

Certain composers for NES can have very recognizable style and musical toolchain. List of sound drivers may also help. This is also a good way to listen to "something similar to that cool track that I've found".

Levels of tailored education

Let's build education around asking a student to analyze pieces of music. Then the levels of pieces of increasing attractiveness:

  1. Genres that the student doesn't listen to much, in a form that's hard to navigate. Eg. common-practice classical music in sheet music
  2. 12-colored piano rolls of random pop pieces available in MIDI. It's for the brave who want to get into the unknown
  3. Same for favorite artists for which MIDIs are available.
  4. Same but music only is available, so the MIDI is crafted via automatic transcription.

rawl's People

Contributors

boukichi avatar chouquette avatar cmatsuoka avatar dependabot[bot] avatar derselbst avatar divideconcept avatar flamefire avatar hexwab avatar jpcima avatar jprjr avatar kode54 avatar loki666 avatar mistydemeo avatar mmontag avatar nosuck avatar nyanpasu64 avatar opna2608 avatar pmachapman avatar schellingb avatar sezero avatar shlomif avatar superctr avatar tatokis avatar terriblefire avatar valleybell avatar vitamin-caig avatar vpavlenko avatar wallneradam avatar wiliamsouza avatar wohlstand 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

Watchers

 avatar  avatar  avatar

rawl's Issues

Experiment with a 3D view

It can combine Merge octave collapse with Split readability by having different voices lifted up the plane on a different height. Also potentially velocity can be baked in

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.