]>
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 filename
in config
['music_properties']:
46 seen_files
[filename
] = MusicFile(
50 **config
['music_properties'][filename
])
52 seen_files
[filename
] = MusicFile(
56 channel_id
= channel_id
+ 1
58 action_args
['music'] = seen_files
[filename
]
61 action_args
[argument
] = action
[action_name
][argument
]
63 key
.add_action(action_name
, **action_args
)
65 for key_property
in config
['key_properties']:
66 key
= mapping
.find_by_unicode(key_property
)
70 if 'description' in config
['key_properties'][key_property
]:
71 key
.set_description(config
['key_properties'][key_property
]['description'])
72 if 'color' in config
['key_properties'][key_property
]:
73 key
.set_color(config
['key_properties'][key_property
]['color'])
75 # Return the number of channels reserved
76 return (channel_id
+ 1, seen_files
)