{ "metadata": { "name": "", "signature": "sha256:a63d55e87db48e49ee196a2401b6f8d0e8227495987ca353fa2c5934a581cbed" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "The goal of this notebook is to generate the altered scales. That is, for the C altered scale, you\n", "want to implement a function generate the notes (only for octave 3 and above, since only predicting for\n", "melody notes with octave > 3)\n", "\n", "[C3 D-3 E-3 F-3 (or E?) G-3 A-3 B-3 C4 D-4 E-4 ...]\n", "\n", "This notebook isn't meant to have input or output for other files -- here you just want to brainstorm the function so you can put it in Predictive Chord Modeling (to better train the classifier). Not for use with N-Gram Pipeline!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Generates the altered scale from octaves 3 to 6 for a pitch (e.g. G-)\n", "# for a given note (e.g. G-3) in music21 style.\n", "# Returns altered scale as list of music21 notes.\n", "def genAltered(note='C3'):\n", " # In case you have to convert a note (e.g. F#) into form below\n", " def convertSharps(note):\n", " pitch = ''.join([i for i in note if i.isdigit() is False])\n", " enharmonic = {\"C#\" : \"D-\", \"D#\" : \"E-\", \"E#\" : \"F\", \"F#\" : \"G-\", \"G#\" : \"A-\", \"A#\" : \"B-\", \"B#\" : \"C\"}\n", " if '#' in pitch: return enharmonic[pitch]\n", " return pitch\n", " \n", " # Get scale with dictionary. For example: allscales[note[:-1]]\n", " allscales = {\n", " \"C\" : [\"C3\", \"D-3\", \"E-3\", \"E3\", \"G-3\", \"A-3\", \"B-3\", \n", " \"C4\", \"D-4\", \"E-4\", \"E4\", \"G-4\", \"A-4\", \"B-4\", \n", " \"C5\", \"D-5\", \"E-5\", \"E5\", \"G-5\", \"A-5\", \"B-5\", \n", " \"C6\", \"D-6\", \"E-6\", \"E6\", \"G-6\", \"A-6\", \"B-6\"],\n", " \"D-\" : [\"D-3\", \"D3\", \"E3\", \"F3\", \"G3\", \"A3\", \"B3\", \n", " \"D-4\", \"D4\", \"E4\", \"F4\", \"G4\", \"A4\", \"B4\", \n", " \"D-5\", \"D5\", \"E5\", \"F5\", \"G5\", \"A5\", \"B5\", \n", " \"D-6\", \"D6\", \"E6\", \"F6\", \"G6\", \"A6\", \"B6\"],\n", " \"D\" : [\"D3\", \"E-3\", \"F3\", \"G-3\", \"A-3\", \"B-3\", \"C4\", \"D4\",\n", " \"E-4\", \"F4\", \"G-4\", \"A-4\", \"B-4\", \"C5\", \"D5\",\n", " \"E-5\", \"F5\", \"G-5\", \"A-5\", \"B-5\", \"C6\", \"D6\",\n", " \"E-6\", \"F6\", \"G-6\", \"A-6\", \"B-6\"],\n", " \"E-\" : [\"D-3\",\n", " \"E-3\", \"E3\", \"G-3\", \"G3\", \"A3\", \"B3\", \"D-4\",\n", " \"E-4\", \"E4\", \"G-4\", \"G4\", \"A4\", \"B4\", \"D-5\",\n", " \"E-5\", \"E5\", \"G-5\", \"G5\", \"A5\", \"B5\", \"D-6\",\n", " \"E-6\", \"E6\", \"G-6\", \"G6\", \"A6\", \"B6\"],\n", " \"F\" : [\"D-3\", \"E-3\",\n", " \"F3\", \"G-3\", \"A-3\", \"A3\", \"B3\", \"D-4\", \"E-4\",\n", " \"F4\", \"G-4\", \"A-4\", \"A4\", \"B4\", \"D-5\", \"E-5\",\n", " \"F5\", \"G-5\", \"A-5\", \"A5\", \"B5\", \"D-6\", \"E-6\",\n", " \"F6\", \"G-6\", \"A-6\", \"A6\", \"B6\"],\n", " \"G-\" : [\"C3\", \"D3\", \"E3\",\n", " \"G-3\", \"G3\", \"A3\", \"B-3\", \"C4\", \"D4\", \"E4\",\n", " \"G-4\", \"G4\", \"A4\", \"B-4\", \"C5\", \"D5\", \"E5\",\n", " \"G-5\", \"G5\", \"A5\", \"B-5\", \"C6\", \"D6\", \"E6\",\n", " \"G-6\", \"G6\", \"A6\", \"B-6\"],\n", " \"G\" : [\"D-3\", \"E-3\", \"F3\",\n", " \"G3\", \"A-3\", \"B-3\", \"B3\", \"D-4\", \"E-4\", \"F4\",\n", " \"G4\", \"A-4\", \"B-4\", \"B4\", \"D-5\", \"E-5\", \"F5\",\n", " \"G5\", \"A-5\", \"B-5\", \"B5\", \"D-6\", \"E-6\", \"F6\",\n", " \"G6\", \"A-6\", \"B-6\", \"B6\"],\n", " \"A-\" : [\"C3\", \"D3\", \"E3\", \"G-3\",\n", " \"A-3\", \"A3\", \"B3\", \"C4\", \"D4\", \"E4\", \"G-4\",\n", " \"A-4\", \"A4\", \"B4\", \"C5\", \"D5\", \"E5\", \"G-5\",\n", " \"A-5\", \"A5\", \"B5\", \"C6\", \"D6\", \"E6\", \"G-6\",\n", " \"A-6\", \"A6\", \"B6\"],\n", " \"A\" : [\"C3\", \"D-3\", \"E-3\", \"F3\", \"G3\",\n", " \"A3\", \"B-3\", \"C4\", \"D-4\", \"E-4\", \"F4\", \"G4\",\n", " \"A4\", \"B-4\", \"C5\", \"D-5\", \"E-5\", \"F5\", \"G5\",\n", " \"A5\", \"B-5\", \"C6\", \"D-6\", \"E-6\", \"F6\", \"G6\",\n", " \"A6\", \"B-6\", \"C7\"],\n", " \"B-\" : [\"D-3\", \"D3\", \"E3\", \"G-3\", \"A-3\",\n", " \"B-3\", \"B3\", \"D-4\", \"D4\", \"E4\", \"G-4\", \"A-4\",\n", " \"B-4\", \"B4\", \"D-5\", \"D5\", \"E5\", \"G-5\", \"A-5\",\n", " \"B-5\", \"B5\", \"D-6\", \"D6\", \"E6\", \"G-6\", \"A-6\",\n", " \"B-6\", \"B6\"],\n", " \"B\" : [\"C3\", \"D3\", \"E-3\", \"F3\", \"G3\", \"A3\",\n", " \"B3\", \"C4\", \"D4\", \"E-4\", \"F4\", \"G4\", \"A4\",\n", " \"B4\", \"C5\", \"D5\", \"E-5\", \"F5\", \"G5\", \"A5\",\n", " \"B5\", \"C6\", \"D6\", \"E-6\", \"F6\", \"G6\", \"A6\",\n", " \"B6\"]}\n", " pitch = ''.join([i for i in note if i.isdigit() is False])\n", " pitch = convertSharps(note) # Rm. octaveinfo, eg. G-5 --> G-, G5->G\n", " return allscales[pitch]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "G-\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "['C3',\n", " 'D3',\n", " 'E3',\n", " 'G-3',\n", " 'G3',\n", " 'A3',\n", " 'B-3',\n", " 'C4',\n", " 'D4',\n", " 'E4',\n", " 'G-4',\n", " 'G4',\n", " 'A4',\n", " 'B-4',\n", " 'C5',\n", " 'D5',\n", " 'E5',\n", " 'G-5',\n", " 'G5',\n", " 'A5',\n", " 'B-5',\n", " 'C6',\n", " 'D6',\n", " 'E6',\n", " 'G-6',\n", " 'G6',\n", " 'A6',\n", " 'B-6']" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }