bspaans / python-mingus

Mingus is a music package for Python
GNU General Public License v3.0
862 stars 167 forks source link

Getting scale results in a list or another data type #81

Open ChapelHeel66 opened 3 years ago

ChapelHeel66 commented 3 years ago

Is there a way to return scales as lists or tuples? In Python 3.7 only returns an object, like this:

scales.Ionian('C') <Scale object ('C ionian')>

You can print it, like so:

print(scales.Ionian('C')) Ascending: C D E F G A B C Descending: C B A G F E D C

Here are the scales object attributes, none of which produces the actual notes, except the str, which I guess I could perform some operations on to extract the individual notes.

dir(scales.Ionian('C')) ['class', 'delattr', 'dict', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'init', 'init_subclass', 'le', 'len', 'lt', 'module', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'setattr', 'sizeof', 'str', 'subclasshook', 'weakref', 'ascending', 'degree', 'descending', 'name', 'octaves', 'tonic', 'type']

edudobay commented 3 years ago

HI @ChapelHeel66! If you want the result as a list, then you can check the ascending() or descending() methods. They are also used in the __str__ implementation that you commented about some kind of reverse engineering.

Maybe we could change the __repr__ method so it returns more information — something like

<Scale object ('C ionian') [C, D, E, F, G, A, B, C]>

Do you feel like this could be useful?