GithubHelp home page GithubHelp logo

scribbletune / johann Goto Github PK

View Code? Open in Web Editor NEW
55.0 55.0 7.0 5.72 MB

Use scribbletune to generate guitar, piano and computer keyboard scales/chords/notes practice charts.

Home Page: http://johann.scribbletune.com

License: MIT License

JavaScript 3.16% TypeScript 72.23% HTML 2.24% Less 22.37%

johann's Introduction

SCRIBBLETUNE

Build Status Try scribbletune on RunKit

Use simple JavaScript Strings and Arrays to generate rhythms and musical patterns. Directly use the names of scales or chords in your code to get arrays which you can mash up using Array methods in ways you hadn't imagined before! Create clips of musical ideas and export MIDI files which you can import in Ableton Live, Reason, GarageBand or any music creation software that accepts MIDI files.

Install

npm install scribbletune

Use it to create a MIDI clip by running a JS file from your terminal using node.js

const scribble = require('scribbletune');
const clip = scribble.clip({
    notes: scribble.scale('C4 major'),
    pattern: 'x'.repeat(7) + '_'
});

scribble.midi(clip, 'c-major.mid');

You can use Scribbletune even in the browser with Tone.js!. There are a couple of ways to do this. A quick and dirty way is to make sure to pull in Tone.js followed by the latest browser version of Scribbletune.

<script src="https://cdnjs.cloudflare.com/ajax/libs/tone/<LATEST-VERSION-FROM-CDNJS>/Tone.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/scribbletune/<LATEST-VERSION-FROM-CDNJS>/scribbletune.js"></script>

This will expose a global object called scribble which you can directly use to run the methods from Scribbletune in conjunction with Tone.js

The recommended way for the browser, however, is to import it like this

const scribble = require('scribbletune/browser');

This will provide the same API but augment it a bit to support browser based functionality.

Similarly, you can use the Scribbletune API for Max for Live development by doing

const scribble = require('scribbletune/max');

Just like the browser version this too will enable the same API but with some added bells and whistles for Max for Live.

Visit scribbletune.com for documentation, tutorials and examples! Listen to music generated with Scribbletune on Soundcloud.

johann's People

Contributors

dependabot[bot] avatar dezzles avatar walmik avatar zuurw 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

johann's Issues

show octave on note (guitar & piano)

Description
better to show octave on note useful when play in choir
e.g. in standard choir usually use SATB (Sopran Alto Tenor Bass) which every vocal characteristic (male/female) has it's own range (base on octave)

Implementation
perhaps use button to show octave info for show or hidden the info (recommended because not every musicians care about octave can hide it, but for the detail musicians that must play within choir can show the octave)
or
simply put octave info without option to show or hide octave info

Examples
which fretboard must be press to play melody with tenor vocal on major third tuning

octave

ref on piano
https://en.wikipedia.org/wiki/Tenor

thanks

combined instruments

nice to have feature to combine instruments (guitar, bass, piano, etc)
useful when using with others musicians using smart tv (big screen)

screen_shot

thanks

add tuning fretboard add more fret on nut guitar

api.ts

export const getTuningsForGuitar = () => ([
	{label: 'Regular', 'display': 'EBGDAE', strings: ['E4', 'B3', 'G3', 'D3', 'A2', 'E2'], tuningIdx: 0, name: 0},
	{label: 'Dropped D', 'display': 'EBGDAD', strings: ['E4', 'B3', 'G3', 'D3', 'A2', 'D2'], tuningIdx: 1, name: 1},
	{label: 'Double dropped D', display: 'DADGBD', strings: ['D4', 'A3', 'D3', 'G3', 'B2', 'D2'], tuningIdx: 2, name: 2},
	{label: 'Drop C', 'display': 'DAFCGC', strings: ['D4', 'A3', 'F3', 'C3', 'G2', 'C2'], tuningIdx: 3, name: 3},
	{label: 'Open G', 'display': 'DGDGBD', strings: ['D4', 'G3', 'D3', 'G3', 'B2', 'D2'], tuningIdx: 4, name: 4},
	{label: 'All Fourths', 'display': 'FCGDAE', strings: ['F4', 'C4', 'G3', 'D3', 'A2', 'E2'], tuningIdx: 5, name: 5},
	{label: 'Major Third', 'display': 'ECAbECAb', strings: ['E4', 'C4', 'Ab3', 'E3', 'C3', 'Ab2'], tuningIdx: 6, name: 6}
]);

more fret on nut 0
more fret on nut 1

dev server port on README.md

dev server port on README.md should be 8080 not 8081
if want to provide detail steps for newbie (dev) :

git clone https://github.com/scribbletune/johann
cd johann
npm install
npm run dev
open http://localhost:8080

left handed fretboard

nice to have 'Left handed fretboard' feature
the idea same like flip fretboard vertically, but this one flip fretboard horizontally

thanks

Logo Design Proposal

Good day @walmik I am a graphics designer and open source contributor. I want to contribute to your good project by proposing a logo design for the project which i will be doing for free as a gift. If you will give me permission i will start as soon as possible. Thanks and best regards!

ZW

lost string when add tuning with # (sharp)

api.ts

export const getTuningsForGuitar = () => ([
	{label: 'Regular', 'display': 'EBGDAE', strings: ['E4', 'B3', 'G3', 'D3', 'A2', 'E2'], tuningIdx: 0, name: 0},
	{label: 'Dropped D', 'display': 'EBGDAD', strings: ['E4', 'B3', 'G3', 'D3', 'A2', 'D2'], tuningIdx: 1, name: 1},
	{label: 'Double dropped D', display: 'DADGBD', strings: ['D4', 'A3', 'D3', 'G3', 'B2', 'D2'], tuningIdx: 2, name: 2},
	{label: 'Drop C', 'display': 'DAFCGC', strings: ['D4', 'A3', 'F3', 'C3', 'G2', 'C2'], tuningIdx: 3, name: 3},
	{label: 'Open G', 'display': 'DGDGBD', strings: ['D4', 'G3', 'D3', 'G3', 'B2', 'D2'], tuningIdx: 4, name: 4},
	{label: 'Major Third', 'display': 'ECG#ECG#', strings: ['E4', 'C4', 'G#3', 'E3', 'C3', 'G#2'], tuningIdx: 5, name: 5}
]);

lost strings

no lowest note when add 7th strings guitar and fretboard marker is not on place

api.ts

export const getTuningsFor7thStringsGuitar = () => ([
	{label: 'Standard', 'display': 'EBGDAEB', strings: ['E4', 'B3', 'G3', 'D3', 'A2', 'E2', 'B1'], tuningIdx: 0, name: 0}
]);

export const getStringInstruments = () => ([
	{ label: 'Guitar', strings: 6, frets: 24, getTunings: getTuningsForGuitar, instrumentIdx: 0, name: 0 },
	{ label: 'Ukulele', strings: 4, frets: 15, getTunings: getTuningsForUkulele, instrumentIdx: 1, name: 1 },
	{ label: 'Guitar 7th Strings', strings: 7, frets: 24, getTunings: getTuningsFor7thStringsGuitar, instrumentIdx: 2, name: 2 }
])

add 7th strings

Add support for Reaktor's virtual keyboard

Reaktor's virtual keyboard has 2 octaves spanning all 3 rows of the computer keyboard (with no way to go down in octave - you can only go up by pressing 1). Add a support for the full range of the keyboard.

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.