[go: up one dir, main page]

File: mpd-test.py

package info (click to toggle)
solfege 2.0.4-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,200 kB
  • ctags: 1,844
  • sloc: python: 12,160; xml: 5,458; ansic: 1,486; makefile: 562; sh: 233
file content (91 lines) | stat: -rwxr-xr-x 3,433 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/python2.2

import pygtk
pygtk.require("2.0")
import sys, os
if os.path.isdir("soundcard"):
    sys.path.append(".")
else:
    sys.path.append("..")

import src
import gettext
gettext.install('solfege', 'share/locale', unicode=1)
import src.i18n


import gnome.ui
import mpd, mpd.musicdisplayer, soundcard
import gtk
from src import gu, cfg
cfg.initialise(None, None, 'mpd-test')
import src.utils

class DisplaytestWindow(gtk.Window):
    def on_quit(self, w):
        cfg.sync()
    def __init__(self):
        gtk.Window.__init__(self)
        self.connect('destroy', self.on_quit)
        self.vbox = vbox = gtk.VBox()
        vbox.show()
        self.add(vbox)
        self.g_text = gtk.TextView()
        self.g_text.set_size_request(-1, 100)
        self.g_text.show()
        self.g_text.set_editable(gtk.TRUE)
        s = cfg.get_string('config/score_displayer')
        if not s:
            s = r"\staff{c' d' e'}"
        self.m_buf = self.g_text.get_buffer()
        self.m_buf.insert(self.m_buf.get_end_iter(), s)
        vbox.pack_start(self.g_text)
        self.g_displayer = mpd.musicdisplayer.MusicDisplayer(src.utils.play_tone)
        self.g_displayer.set_size_request(200, 200)
        self.g_displayer.show()
        self.vbox.pack_start(self.g_displayer)
        gu.bButton(vbox, "Parse", self.on_parse)
        gu.bButton(vbox, "Display", self.on_display)
        gu.bButton(vbox, "Display first notes", self.on_display_first_notes)
        #gu.bButton(vbox, "Display last notes", self.on_display_last_notes)
        gu.bButton(vbox, "Play", self.on_play)
        gu.bButton(vbox, "Play first", self.on_play_first)
    def on_parse(self, _o):
        t = self.m_buf.get_text(self.m_buf.get_start_iter(),
                                self.m_buf.get_end_iter(), gtk.TRUE)
        score = mpd.parser.parse_to_score_object(t)
    def on_display(self, _o):
        t = self.m_buf.get_text(self.m_buf.get_start_iter(),
                                self.m_buf.get_end_iter(), gtk.TRUE)
        cfg.set_string('config/score_displayer', t)
        self.g_displayer.display(t, 20)
    def on_display_first_notes(self, _o):
        t = self.m_buf.get_text(self.m_buf.get_start_iter(),
                                self.m_buf.get_end_iter(), gtk.TRUE)
        cfg.set_string('config/score_displayer', t)
        self.g_displayer.display(t, 20, mpd.FIRST)
    def on_display_last_notes(self, _o):
        t = self.m_buf.get_text(self.m_buf.get_start_iter(),
                                self.m_buf.get_end_iter(), gtk.TRUE)
        cfg.set_string('config/score_displayer', t)
        self.g_displayer.display(t, 20, mpd.LAST)
    def on_play(self, _o):
        t = self.m_buf.get_text(self.m_buf.get_start_iter(),
                                self.m_buf.get_end_iter(), gtk.TRUE)
        cfg.set_string('config/score_displayer', t)
        mpd.play_music(t, (120, 4), 0, 100)
    def on_play_first(self, _o):
        t = self.m_buf.get_text(self.m_buf.get_start_iter(),
                                self.m_buf.get_end_iter(), gtk.TRUE)
        tr = mpd.music_to_track(t, 100, soundcard.rat.Rat(0, 1), soundcard.rat.Rat(1, 8))
        soundcard.synth.play_track(tr)


#soundcard.initialise_devicefile("/dev/sequencer", 0)
soundcard.initialise_devicefile("/dev/music", 0)
#soundcard.initialise_using_fake_synth()

w = DisplaytestWindow()
w.connect('destroy', gtk.mainquit)
w.show()
gtk.mainloop()