Skip to content
This repository
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 82 lines (68 sloc) 2.105 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
/*

LiCK Library for ChucK.
Copyright (c) 2007-2014 held jointly by the individual authors.

This file is part of LiCK.

LiCK is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

LiCK is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with LiCK. If not, see <http://www.gnu.org/licenses/>.

*/

public class Interval extends FloatFunction
{
    1.0 => float antecedent;
    1.0 => float consequent;
    "1:1" => string ratio;
    "Interval" => string name;
    "Interval" => string description;

    fun float evaluate(float value)
    {
        return (antecedent / consequent) * value;
    }

    fun Interval asc()
    {
        return ascending();
    }

    fun Interval ascending()
    {
        if (antecedent < consequent)
        {
            antecedent => float tmp;
            consequent => antecedent;
            tmp => consequent;
        }
        return this;
    }

    fun Interval desc()
    {
        return descending();
    }

    fun Interval descending()
    {
        if (antecedent > consequent)
        {
            antecedent => float tmp;
            consequent => antecedent;
            tmp => consequent;
        }
        return this;
    }

    fun Interval inversion()
    {
        /*
For intervals identified by their ratio, the inversion is determined by
reversing the ratio and multiplying by 2. For example, the inversion of a
5:4 ratio is an 8:5 ratio.

http://en.wikipedia.org/wiki/Interval_(music)#Inversion
*/
        antecedent => float tmp;
        consequent * 2.0 => antecedent;
        tmp => consequent;
        return this;
    }
}
Something went wrong with that request. Please try again.