- Pour utiliser les sources directement, les modules suivants sont requis:
-| module | version minimale | commentaire |
-| ----------- | ---------------- | -------------------------------- |
-| Cython | 0.24 | pour compiler Kivy |
-| Kivy | 1.9.1 | |
-| Markdown | 2.6.6 | pour la documentation uniquement |
-| pydub | 0.16.4 | |
-| Pygame | 1.9.2.dev1 | utilisée par Kivy |
-| Pygments | 2.1.3 | pour la documentation uniquement |
-| sounddevice | 0.3.3 | |
-| transitions | 0.4.1 | |
-| PyYAML | 3.11 | |
+| module | version minimale | commentaire |
+| ----------- | ---------------- | --------------------------------------------------------------------------- |
+| Cython | 0.24 | pour compiler Kivy |
+| Kivy | 1.9.1 | certaines fonctionnalités nécessitent de compiler/installer avec USE_SDL2=1 |
+| Markdown | 2.6.6 | pour la documentation uniquement |
+| pydub | 0.16.4 | |
+| Pygame | 1.9.2.dev1 | utilisée par Kivy |
+| Pygments | 2.1.3 | pour la documentation uniquement |
+| sounddevice | 0.3.3 | |
+| transitions | 0.4.1 | |
+| PyYAML | 3.11 | |
Le projet est également disponible via pip:
sudo apt-get install ttf-ancient-fonts ttf-ubuntu-font-family portaudio
+Pour compiler kivy avec la librairie SDL2, il faut certains paquets installés:
+
+ sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
+
+cf [Installation Kivy](https://kivy.org/docs/installation/installation-linux.html)
+
## Version compilée
Une version compilée peut être créée avec pyinstaller:
* `-p MUSIC_PATH, --music-path MUSIC_PATH` : précise le chemin des musiques (par défaut, le dossier courant).
* `-d, --debug` : Affiche les informations de déboggage (désactivé par défaut)
* `-V, --version` : affiche la version courante et quitte (utilisable uniquement pour la version compilée).
+ * `--no-focus-warning`: Ne pas afficher d'avertissement lorsque l'application perd le focus.
Les options suivantes sont plutôt réservées à un usage avancé de music_sampler, ou en cas de problème avec la configuration standard :
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.relativelayout import RelativeLayout
+from kivy.uix.label import Label
from kivy.properties import ListProperty, StringProperty
from kivy.core.window import Window
from kivy.lang import Builder
register_fonts()
+from .helpers import Config
from .key import Key
from .mapping import Mapping
if len(self.keylist) > 2:
self.third_key = self.keylist[2]
-class Screen(FloatLayout):
+class UnfocusedOverlay(Label):
pass
+class Screen(FloatLayout):
+ def __init__(self, **kwargs):
+ super(Screen, self).__init__(**kwargs)
+ self.unfocused_widget = UnfocusedOverlay()
+ Window.bind(focus=self.focus_changed)
+
+ def focus_changed(self, instance, focus):
+ if Config.no_focus_warning:
+ return
+ if not focus:
+ self.add_widget(self.unfocused_widget)
+ else:
+ self.remove_widget(self.unfocused_widget)
+
class MusicSamplerApp(App):
def build(self):
Window.size = (913, 563)
action=ListDevicesAction,
help="List available sound devices"
)
+ parser.add_argument("--no-focus-warning",
+ action='store_true',
+ help="Don't show warning when focus is lost"
+ )
parser.add_argument('--',
dest="args",
help="Kivy arguments. All arguments after this are interpreted\
Config.channels = args.channels
Config.sample_width = args.sample_width
Config.builtin_mixing = args.builtin_mixing
+ Config.no_focus_warning = args.no_focus_warning
if args.music_path.endswith("/"):
Config.music_path = args.music_path
else:
size_hint: None, None
size: 2 * self.parent.width - 2 * self.parent.line_width, self.parent.height - key_label.font_size
+<UnfocusedOverlay>:
+ canvas.before:
+ Color:
+ rgba: 1, 0, 0, 0.9
+ Rectangle:
+ pos: 0, 0
+ size: self.width, self.height
+ size_hint: 1, 1
+ color: 1, 1, 1, 1
+ valign: "middle"
+ halign: "center"
+ font_name: "Ubuntu"
+ font_size: self.parent and 2 * self.parent.key_size or 42
+ text_size: self.size
+ text: "Focus lost!"
+
<Screen>:
canvas:
Color: