Beispiel #1
0
    def test_generate_notes(self):
        key_notes = Key('C# minor').scale.notes
        expected = (C_sharp, D_sharp, E, F_sharp, G_sharp, A, B)
        self.assertEqual(expected, key_notes)

        key_notes = Key('C#').scale.notes
        expected = (C_sharp, D_sharp, E_sharp, F_sharp, G_sharp, A_sharp, B_sharp)
        self.assertEqual(expected, key_notes)
Beispiel #2
0
    def test_note_names__sharps(self):
        names = Key('C♯').note_names
        expected = ('C♯', 'D♯', 'E♯', 'F♯', 'G♯', 'A♯', 'B♯')
        self.assertEqual(expected, names)

        names = Key('F♯').note_names
        expected = ('F♯', 'G♯', 'A♯', 'B', 'C♯', 'D♯', 'E♯')
        self.assertEqual(expected, names)
Beispiel #3
0
    def test_note_names__non_standard_sharps(self):
        names = Key('B♯ minor').note_names
        expected = ('B♯', 'C♯♯', 'D♯', 'E♯', 'F♯♯', 'G♯', 'A♯')
        self.assertEqual(expected, names)

        names = Key('E♯ minor').note_names
        expected = ('E♯', 'F♯♯', 'G♯', 'A♯', 'B♯', 'C♯', 'D♯')
        self.assertEqual(expected, names)
Beispiel #4
0
    def test_note_names__non_standard_flats(self):
        names = Key('C♭ minor').note_names
        expected = ('C♭', 'D♭', 'E♭♭', 'F♭', 'G♭', 'A♭♭', 'B♭♭')
        self.assertEqual(expected, names)

        names = Key('F♭ minor').note_names
        expected = ('F♭', 'G♭', 'A♭♭', 'B♭♭', 'C♭', 'D♭♭', 'E♭♭')
        self.assertEqual(expected, names)
Beispiel #5
0
    def test_init__invalid(self):
        with self.assertRaises(InvalidQualityError):
            Key('A foo')

        with self.assertRaises(InvalidQualityError):
            Key('A major quack a doodle')

        with self.assertRaises(InvalidQualityError):
            Key('A 4000')
Beispiel #6
0
    def test_key(self):
        # Divisible by 4: C major
        text = 'This is a sentence'
        key = Game(text).key
        self.assertEqual(Key('C'), key)

        # Divisible by 2: A minor
        text = 'It was a good sentence'
        key = Game(text).key
        self.assertEqual(Key('Am'), key)
Beispiel #7
0
    def test_init(self):
        a_major = Key('A')
        self.assertEqual(A, a_major.tonic)

        a_major = Key('A major')
        self.assertEqual(A, a_major.tonic)

        a_major = Key('A maj')
        self.assertEqual(A, a_major.tonic)

        a_major = Key('Amaj')
        self.assertEqual(A, a_major.tonic)
Beispiel #8
0
    def test_init(self):
        a_minor = Key('A minor')
        self.assertEqual(A, a_minor.tonic)

        a_minor = Key('Am')
        self.assertEqual(A, a_minor.tonic)

        a_minor = Key('A min')
        self.assertEqual(A, a_minor.tonic)

        a_minor = Key('Amin')
        self.assertEqual(A, a_minor.tonic)
Beispiel #9
0
    def __parse_key(self, buf, algo, created, usage, expiry):
        fingerprint_match = key_fingerprint_regex.match(buf.readline())

        if not fingerprint_match:
            return None

        fingerprint = fingerprint_match.group(1)

        uid_match = uid_regex.match(buf.readline())

        if not uid_match:
            return None

        name = uid_match.group(1)
        desc = uid_match.group(2)
        email = uid_match.group(3)

        key = Key(fingerprint=fingerprint,
                  algo=algo,
                  created=created,
                  usage=usage,
                  expiry=expiry,
                  email=email,
                  name=name,
                  description=desc)

        return key
Beispiel #10
0
    def test_types(self):
        key_c = Key('C')
        self.assertEqual(IonianScale, key_c.ionian_mode.base_scale)
        self.assertTrue(isinstance(key_c.ionian_mode, Mode))

        c_ionian_mode = Mode(C, IonianScale)
        self.assertEqual(IonianScale, c_ionian_mode.base_scale)
        self.assertTrue(isinstance(c_ionian_mode, Mode))
Beispiel #11
0
    def test_notes__natural__minors(self):
        names = Key('A minor').note_names
        expected = ('A', 'B', 'C', 'D', 'E', 'F', 'G')
        self.assertEqual(expected, names)

        names = Key('B minor').note_names
        expected = ('B', 'C♯', 'D', 'E', 'F♯', 'G', 'A')
        self.assertEqual(expected, names)

        names = Key('C minor').note_names
        expected = ('C', 'D', 'E♭', 'F', 'G', 'A♭', 'B♭')
        self.assertEqual(expected, names)

        names = Key('D minor').note_names
        expected = ('D', 'E', 'F', 'G', 'A', 'B♭', 'C')
        self.assertEqual(expected, names)

        names = Key('E minor').note_names
        expected = ('E', 'F♯', 'G', 'A', 'B', 'C', 'D')
        self.assertEqual(expected, names)

        names = Key('F minor').note_names
        expected = ('F', 'G', 'A♭', 'B♭', 'C', 'D♭', 'E♭')
        self.assertEqual(expected, names)

        names = Key('G minor').note_names
        expected = ('G', 'A', 'B♭', 'C', 'D', 'E♭', 'F')
        self.assertEqual(expected, names)
Beispiel #12
0
    def test_note_names__natural(self):
        names = Key('A').note_names
        expected = ('A', 'B', 'C♯', 'D', 'E', 'F♯', 'G♯')
        self.assertEqual(expected, names)

        names = Key('B').note_names
        expected = ('B', 'C♯', 'D♯', 'E', 'F♯', 'G♯', 'A♯')
        self.assertEqual(expected, names)

        names = Key('C').note_names
        expected = ('C', 'D', 'E', 'F', 'G', 'A', 'B')
        self.assertEqual(expected, names)

        names = Key('D').note_names
        expected = ('D', 'E', 'F♯', 'G', 'A', 'B', 'C♯')
        self.assertEqual(expected, names)

        names = Key('E').note_names
        expected = ('E', 'F♯', 'G♯', 'A', 'B', 'C♯', 'D♯')
        self.assertEqual(expected, names)

        names = Key('F').note_names
        expected = ('F', 'G', 'A', 'B♭', 'C', 'D', 'E')
        self.assertEqual(expected, names)

        names = Key('G').note_names
        expected = ('G', 'A', 'B', 'C', 'D', 'E', 'F♯')
        self.assertEqual(expected, names)
Beispiel #13
0
def create_user():
    db.create_all()
    db.session.add(
        User(id=0,
             name='myuser',
             password='******',
             roles=["authenticated"]))
    db.session.add(Key(id=0, key='azerty', roles=["admin"]))
    db.session.commit()
Beispiel #14
0
 def test_keys_with_natural_tonic(self):
     self.assert_key_modes_are_correct(Key('Cm'))
     self.assert_key_modes_are_correct(Key('Dm'))
     self.assert_key_modes_are_correct(Key('Em'))
     self.assert_key_modes_are_correct(Key('Fm'))
     self.assert_key_modes_are_correct(Key('Gm'))
     self.assert_key_modes_are_correct(Key('Am'))
     self.assert_key_modes_are_correct(Key('Bm'))
Beispiel #15
0
 def test_keys_with_sharp_tonic(self):
     self.assert_key_modes_are_correct(Key('C#m'))
     self.assert_key_modes_are_correct(Key('D#m'))
     self.assert_key_modes_are_correct(Key('E#m'))
     self.assert_key_modes_are_correct(Key('F#m'))
     self.assert_key_modes_are_correct(Key('G#m'))
     self.assert_key_modes_are_correct(Key('A#m'))
     self.assert_key_modes_are_correct(Key('B#m'))
Beispiel #16
0
 def test_keys_with_flat_tonic(self):
     self.assert_key_modes_are_correct(Key('Cbm'))
     self.assert_key_modes_are_correct(Key('Dbm'))
     self.assert_key_modes_are_correct(Key('Ebm'))
     self.assert_key_modes_are_correct(Key('Fbm'))
     self.assert_key_modes_are_correct(Key('Gbm'))
     self.assert_key_modes_are_correct(Key('Abm'))
     self.assert_key_modes_are_correct(Key('Bbm'))
Beispiel #17
0
 def test_keys_with_natural_tonic(self):
     self.assert_key_modes_are_correct(Key('C'))
     self.assert_key_modes_are_correct(Key('D'))
     self.assert_key_modes_are_correct(Key('E'))
     self.assert_key_modes_are_correct(Key('F'))
     self.assert_key_modes_are_correct(Key('G'))
     self.assert_key_modes_are_correct(Key('A'))
     self.assert_key_modes_are_correct(Key('B'))
def generate_rsa_keys():
    key = RSA.generate(2048)
    try:
        key_model = Key(device_id=request.get_json().get("device_id"),
                        p_key=key.publickey().export_key().decode("UTF-8"),
                        pr_key=key.exportKey().decode("UTF-8"))
        db.session.add(key_model)
        db.session.commit()
        return "Success", 200
    except Exception as ServerError:
        return {"error": str(ServerError).split("\n")[0]}, 500
Beispiel #19
0
    def test_note_names__flat(self):
        names = Key('A♭ minor').note_names
        expected = ('A♭', 'B♭', 'C♭', 'D♭', 'E♭', 'F♭', 'G♭')
        self.assertEqual(expected, names)

        names = Key('B♭ minor').note_names
        expected = ('B♭', 'C', 'D♭', 'E♭', 'F', 'G♭', 'A♭')
        self.assertEqual(expected, names)

        names = Key('D♭ minor').note_names
        expected = ('D♭', 'E♭', 'F♭', 'G♭', 'A♭', 'B♭♭', 'C♭')
        #             D♭, E♭, F♭, G♭, A♭, B♭♭, and C♭.
        self.assertEqual(expected, names)

        names = Key('E♭ minor').note_names
        expected = ('E♭', 'F', 'G♭', 'A♭', 'B♭', 'C♭', 'D♭')
        self.assertEqual(expected, names)

        names = Key('G♭ minor').note_names
        expected = ('G♭', 'A♭', 'B♭♭', 'C♭', 'D♭', 'E♭♭', 'F♭')
        self.assertEqual(expected, names)
Beispiel #20
0
def generate_and_store_random_key_pair(is_refresh_token_key=False):
    key_generator = KeyGenerator()
    key_file_writer = KeyFileWriter(key_generator)
    key = Key(is_refresh_token_key=is_refresh_token_key)

    try:
        db.session.add(key)
        db.session.commit()

        key_file_writer.write_keys_to_file(str(key.id))
    except:
        db.session.rollback()
Beispiel #21
0
    def test_chords(self):
        text = 'This is a sentence'
        game = Game(text)
        chord_this, chord_is, chord_a, chord_sentence = game.chords

        # First chord should be the key's tonic
        self.assertEqual(Key('C'), game.key)
        self.assertEqual((C, E, G), chord_this)

        # Remaining chords should be calculated from letters
        self.assertEqual((D, G), chord_is)
        self.assertEqual((C, ), chord_a)
        self.assertEqual((G, B, A, E), chord_sentence)
Beispiel #22
0
def add_url(url: str):
    """
    Populate url info to a database
    Represent long operation that can takes significant amount of time
    What's why it's moved to a celery task
    :param url: link to a XML file
    :return: {'id': <id of created Url in DB>}
    """
    xml_dict = parse_xml_file(url)
    url_object = Url(url=xml_dict['url'],
                     processed=bool(not xml_dict['error_text']),
                     error=xml_dict['error_text'])
    url_object.keys = [Key(value=key) for key in xml_dict['keys']]
    s.add(url_object)
    s.commit()
    # sleep(20) # uncomment this, if you want to test *real* async :)
    return {'id': url_object.id}
Beispiel #23
0
def load_keys():
    if Config.calibrating:
        keys.clear()

    if len(keys) > 0:
        return

    # Generate keys
    key_amount = Config.key_amount_to_calibrate
    for i in range(0, key_amount):
        color_diff = (i + 1) / key_amount * 6.3
        color_diff %= 1
        key_color = (255, 255 * color_diff, 255 - 255 * color_diff)

        note_name = Key.note_base_names[i % 12] + str(i // 12)

        keys.append(Key(note_name, color=key_color))
Beispiel #24
0
    def test_helper_assertion_function(self):
        """
        The helper function iterates through each mode, shifting the expected
        set of notes over 1 degree. For example, from Ionian to Dorian, the
        expected notes for C Minor shift from:
            ('C', 'D', 'E♭', 'F', 'G', 'A♭', 'B♭')
        to:
            ('D', 'E♭', 'F', 'G', 'A♭', 'B♭'. 'C')

        This test asserts that we are doing so correctly in the helper function.
        """
        modal_scales = self.assert_key_modes_are_correct(Key('Cm'))
        expected = [
            ('C', 'D', 'E♭', 'F', 'G', 'A♭', 'B♭'),
            ('D', 'E♭', 'F', 'G', 'A♭', 'B♭', 'C'),
            ('E♭', 'F', 'G', 'A♭', 'B♭', 'C', 'D'),
            ('F', 'G', 'A♭', 'B♭', 'C', 'D', 'E♭'),
            ('G', 'A♭', 'B♭', 'C', 'D', 'E♭', 'F'),
            ('A♭', 'B♭', 'C', 'D', 'E♭', 'F', 'G'),
            ('B♭', 'C', 'D', 'E♭', 'F', 'G', 'A♭'),
        ]
        self.assertEqual(expected, modal_scales)
Beispiel #25
0
    def test_notes__natural_majors(self):
        expected = ('A', 'B', 'C♯', 'D', 'E', 'F♯', 'G♯')
        self.assertEqual(expected, Key('A').scale.notes)

        expected = ('B', 'C♯', 'D♯', 'E', 'F♯', 'G♯', 'A♯')
        self.assertEqual(expected, Key('B').scale.notes)

        expected = ('C', 'D', 'E', 'F', 'G', 'A', 'B')
        self.assertEqual(expected, Key('C').scale.notes)

        expected = ('D', 'E', 'F♯', 'G', 'A', 'B', 'C♯')
        self.assertEqual(expected, Key('D').scale.notes)

        expected = ('E', 'F♯', 'G♯', 'A', 'B', 'C♯', 'D♯')
        self.assertEqual(expected, Key('E').scale.notes)

        expected = ('F', 'G', 'A', 'B♭', 'C', 'D', 'E')
        self.assertEqual(expected, Key('F').scale.notes)

        expected = ('G', 'A', 'B', 'C', 'D', 'E', 'F♯')
        self.assertEqual(expected, Key('G').scale.notes)
Beispiel #26
0
    def test_note_names__flats(self):
        names = Key('A♭').note_names
        expected = ('A♭', 'B♭', 'C', 'D♭', 'E♭', 'F', 'G')
        self.assertEqual(expected, names)

        names = Key('B♭').note_names
        expected = ('B♭', 'C', 'D', 'E♭', 'F', 'G', 'A')
        self.assertEqual(expected, names)

        names = Key('C♭').note_names
        expected = ('C♭', 'D♭', 'E♭', 'F♭', 'G♭', 'A♭', 'B♭')
        self.assertEqual(expected, names)

        names = Key('D♭').note_names
        expected = ('D♭', 'E♭', 'F', 'G♭', 'A♭', 'B♭', 'C')
        self.assertEqual(expected, names)

        names = Key('E♭').note_names
        expected = ('E♭', 'F', 'G', 'A♭', 'B♭', 'C', 'D')
        self.assertEqual(expected, names)

        names = Key('G♭').note_names
        expected = ('G♭', 'A♭', 'B♭', 'C♭', 'D♭', 'E♭', 'F')
        self.assertEqual(expected, names)
Beispiel #27
0
from typing import List, Optional

import numpy as np

from config import Config
from models import Key

fps: int = 0
frame_shape: tuple = (-1, -1)
is_image: bool = False
zone_bounds: Optional[np.ndarray] = Config.zone_bounds
mask_area: Optional[np.ndarray] = Config.mask_area

keys = [    # generated by profile 3
    # Key("C0", is_calibrated=True, color=(255, 54, 201), line=[(339, 397), (344, 410)]),
    Key("C#0", is_calibrated=True, color=(255, 54, 201), line=[(339, 397), (344, 410)]),
    Key("D0", is_calibrated=True, color=(255, 107, 148), line=[(352, 397), (357, 412)]),
    Key("D#0", is_calibrated=True, color=(255, 161, 94), line=[(364, 396), (369, 409)]),
    Key("E0", is_calibrated=True, color=(255, 214, 41), line=[(377, 395), (382, 411)]),
    Key("F0", is_calibrated=True, color=(255, 13, 242), line=[(388, 392), (394, 411)]),
    Key("F#0", is_calibrated=True, color=(255, 66, 189), line=[(399, 391), (405, 408)]),
    Key("G0", is_calibrated=True, color=(255, 120, 135), line=[(410, 392), (415, 406)]),
    Key("G#0", is_calibrated=True, color=(255, 173, 82), line=[(421, 393), (426, 407)]),
    Key("A0", is_calibrated=True, color=(255, 227, 28), line=[(432, 393), (438, 409)]),
    Key("A#0", is_calibrated=True, color=(255, 25, 230), line=[(444, 394), (450, 411)]),
    Key("B0", is_calibrated=True, color=(255, 79, 176), line=[(456, 394), (460, 407)]),
    Key("C1", is_calibrated=True, color=(255, 133, 122), line=[(467, 391), (473, 409)]),
    Key("C#1", is_calibrated=True, color=(255, 186, 69), line=[(479, 391), (486, 412)]),
    Key("D1", is_calibrated=True, color=(255, 240, 15), line=[(491, 391), (497, 408)]),
    Key("D#1", is_calibrated=True, color=(255, 38, 217), line=[(503, 390), (509, 407)]),
    Key("E1", is_calibrated=True, color=(255, 92, 163), line=[(515, 388), (523, 412)]),
Beispiel #28
0
 def test_notes__sharp(self):
     key_notes = Key('C#').scale.notes
     expected_notes = (C_sharp, D_sharp, E_sharp, F_sharp, G_sharp, A_sharp, B_sharp)
     self.assertEqual(expected_notes, key_notes)
Beispiel #29
0
                                                        splits=[0.7, 0.15, 0.15])
else:
    raise Exception('Incorrect model name')

train_loader = torch.utils.data.DataLoader(train_set, batch_size=args.batch_size, shuffle=True)
val_loader = torch.utils.data.DataLoader(val_set, batch_size=32)
test_loader = torch.utils.data.DataLoader(test_set, batch_size=32)
print('loader : ', train_loader)

# Initialize the model
if args.model == 'artist':
    model = Artist()
elif args.model == 'popularity':
    model = Popularity()
elif args.model == 'key':
    model = Key()
else:
    raise Exception('Incorrect model name')

if args.cuda:
    model.cuda()

# Loss function
if args.model == 'popularity':
    loss = torch.nn.MSELoss()
else:
    loss = torch.nn.CrossEntropyLoss()


# Optimizer
optimizer = optim.Adam(model.parameters(), lr=args.lr)
Beispiel #30
0
 def test_notes__natural(self):
     key_notes = Key('C').scale.notes
     expected = (C, D, E, F, G, A, B)
     self.assertEqual(expected, key_notes)