function getNoteIntervalOnScale($scale, $originalNote, $intervalInScale=2) { ($intervalInScale > 0) ? ($intervalInScale--) : ($intervalInScale++); // this is a interval, so 2 is a 3rd, 4 is a 5th, and so on... therefore correcting for human readability ($intervalInScale > 0) ? ($way = 'UP') : ($way = 'DOWN'); $originalDegree = getDegreeWithOctaveFromNote($originalNote, $scale, $way); //$degree = $originalDegree['degree'] + $intervalInScale; //$octave = $originalDegree['octave']; $newDegree = getDegreeAndOctave($scale, $originalDegree['degree'] + $intervalInScale, $originalDegree['octave']); /* while ($degree < 0) { $degree += count($scale['notes']); $octave--; } while ($degree >= count($scale['notes'])) { $degree -= count($scale['notes']); $octave++; } */ return getNoteFromDegree($scale, $newDegree['octave'], $newDegree['degree']); }
<?php require_once (__DIR__.'/functions.php'); //$genome = array(createGenome($scales['major'], 2, 16, 8), createGenome($scales['major'])); //getNoteInProximityOnScale($scales['major'], 20, 3) //var_dump (getDegreeWithOctaveFromNote(getNoteFromTriad($scales['major'], 1),$scales['major'])); var_dump (getDegreeWithOctaveFromNote(getNoteOnNativeChord($scales['major'], 1, 0, TRUE), $scales['major'])); //var_dump (getNoteIntervalOnScale($scales['major'], 2, -3)); ?>