]>
git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blob - helpers/__init__.py
1 # -*- coding: utf-8 -*-
2 from .music_file
import *
8 def parse_config(mapping
):
9 stream
= open("config.yml", "r")
10 config
= yaml
.load(stream
)
13 aliases
= config
['aliases']
16 file_lock
= Lock("file")
20 for mapped_key
in config
['keys']:
21 key
= mapping
.find_by_unicode(mapped_key
)
25 for action
in config
['keys'][mapped_key
]:
26 action_name
= list(action
)[0]
28 if action
[action_name
] is None:
29 action
[action_name
] = []
31 if 'include' in action
[action_name
]:
32 included
= action
[action_name
]['include']
33 del(action
[action_name
]['include'])
35 if isinstance(included
, str):
36 action
[action_name
].update(aliases
[included
], **action
[action_name
])
38 for included_
in included
:
39 action
[action_name
].update(aliases
[included_
], **action
[action_name
])
41 for argument
in action
[action_name
]:
42 if argument
== 'file':
43 filename
= action
[action_name
]['file']
44 if filename
not in seen_files
:
45 if 'name' in action
[action_name
]:
46 seen_files
[filename
] = MusicFile(filename
, file_lock
, channel_id
, name
= action
[action_name
]['name'])
48 seen_files
[filename
] = MusicFile(filename
, file_lock
, channel_id
)
49 channel_id
= channel_id
+ 1
51 action_args
['music'] = seen_files
[filename
]
54 action_args
[argument
] = action
[action_name
][argument
]
56 key
.add_action(action_name
, **action_args
)
58 for key_property
in config
['key_properties']:
59 key
= mapping
.find_by_unicode(key_property
)
63 if 'description' in config
['key_properties'][key_property
]:
64 key
.set_description(config
['key_properties'][key_property
]['description'])
65 if 'color' in config
['key_properties'][key_property
]:
66 key
.set_color(config
['key_properties'][key_property
]['color'])
68 # Return the number of channels reserved
69 return (channel_id
+ 1, seen_files
)