Beispiel #1
0
 def __init__(self, handle):
  
   activity.Activity.__init__(self, handle)

   red = (0xDDDD, 0, 0)
   brown = (0x6600, 0, 0)
   green = (0, 0x5500, 0)

   win = csndsugui.CsoundGUI(self)
   width = gtk.gdk.screen_width()
   height = gtk.gdk.screen_height()
   if os.path.exists("/etc/olpc-release"):
     adjust = 78
   else:
     adjust = 57
   screen = win.box()
   screen.set_size_request(width, height - adjust)
   scrolled = gtk.ScrolledWindow()
   scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
   screen.pack_start(scrolled)
   all = gtk.VBox()
   all.show()
   scrolled.add_with_viewport(all)
   scrolled.show()

   win.text("<big><big><b><u>BROTHER SUN &amp; SISTER MOON MUSIC</u> -\n\
 Sonic Environments for Children (2010)</b></big>\n\
\t    Art Hunkins (www.arthunkins.com)</big>", all)

   win.text("from <u>The Canticle of the Sun</u> by Francis of Assisi:\n\
<i>\tBe praised, my Lord, through all your creatures,\n\
\t\tespecially through my lord Brother Sun, who brings the day;\n\
\t\tand you give light through him. \
And he is beautiful and radiant in all his splendor!\n\
\t\tOf you, Most High, he bears the likeness.\n\
\tBe praised, my Lord, through Sister Moon and the stars;\n\
\t\tin the heavens you have made them, precious and beautiful.</i>", all, green)

   win.text("\
A MIDI controller with 8-9 knobs/sliders is required; \
the ninth control is only used to vary pan position.\n\
Plug in MIDI controller AFTER boot &amp; BEFORE selecting Sun/Moon; \
zero all controls before start.\n\
Move Pan into position AFTER start. \
Channel '0' = Continuous Controller 7 on channels 1-8(9).", all, brown)
   nbox = win.box(False, all)
   win.text("", nbox)
   but1 = win.cbbutton(nbox, self.version1, " BROTHER SUN Music ")
   but1.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
   but1.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
   but2 = win.cbbutton(nbox, self.version2, " SISTER MOON Music ")
   but2.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
   but2.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
   bbox = win.box(False, all)
   self.bb = bbox
   self.w = win
   self.r = red
   self.g = green
   self.br = brown
   self.ver = 0
Beispiel #2
0
 def __init__(self, handle):
  
   activity.Activity.__init__(self, handle)

   red = (0xDDDD, 0, 0)
   brown = (0x6600, 0, 0)
   green = (0, 0x5500, 0)
   self.paths = ["0"]*5
   self.jobjects = [None]*5
   self.buts = [None]*5

   win = csndsugui.CsoundGUI(self)
   width = gtk.gdk.screen_width()
   height = gtk.gdk.screen_height()
   if os.path.exists("/etc/olpc-release") or os.path.exists("/sys/power/olpc-pm"):
     adjust = 78
   else:
     adjust = 57
   screen = win.box()
   screen.set_size_request(width, height - adjust)
   scrolled = gtk.ScrolledWindow()
   scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
   screen.pack_start(scrolled)
   all = gtk.VBox()
   all.show()
   scrolled.add_with_viewport(all)
   scrolled.show()

   win.text("<big><b><big><u>FILEMIXAUTO</u> - Audio File Looper/Mixer/Processor \
for Children (2011)</big></b>\n\
\t\t\t\t    Art Hunkins (www.arthunkins.com)</big>", all)

   win.text("Loop and process 1 to 4 mono/stereo files; \
wav and ogg vorbis formats only (no ogg vorbis on Sugar 0.84).\n\
  User sound files must be placed in Journal (Record activity \
does this). <b>No user files on Sugar 0.82</b> (original XO-1).\n\
  The default files are abbreviated versions of those from the author's \
<b>DUSK AT ST. FRANCIS SPRINGS</b>.\n\
You are urged to create your own sound files suitable for looping, for example, \
with the Record activity - \n  especially nature soundscapes - to set a mood \
or accompany movement, drama, pantomime, etc.", all, brown)

   self.b2box = win.box(False, all)
   bbox = win.box(False, all)
   self.bb = bbox
   self.w = win
   self.r = red
   self.g = green
   self.br = brown
   self.p = False

   try:
     from jarabe import config
     version = [int(i) for i in config.version.split('.')][:2]
   except ImportError:
     version = [0, 82]
   if version >= [0, 84]:
     boxa = win.box(False, self.b2box)
     boxb = win.box(False, self.b2box)
     boxc = win.box(True, boxb)
     self.boxd = win.box(False, boxc)
     boxe = win.box(True, boxc)
     win.text("\t\tOptionally, select your own <b>audio</b> file(s) from the Journal.\n\
\t\tDeselect a file by choosing another, or by closing Journal.\n\
\t\tCreate your files with Record or Audacity (see ReadMe.txt).\t   ", boxa, green)
     win.text("Select File(s):", self.boxd, brown)
     for i in range(1, 5):
       self.buts[i] = win.cbbutton(self.boxd, self.choose, " %d " %i)
       self.buts[i].modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0x6600, 0, 0))
     but = win.cbbutton(boxe, self.auto, " CLICK when selections made ")
     but.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
     but.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
   else:
     self.auto(self)
    def __init__(self, handle):

        activity.Activity.__init__(self, handle)

        red = (0xDDDD, 0, 0)
        brown = (0x6600, 0, 0)
        green = (0, 0x5500, 0)
        self.paths = ["0"] * 26
        self.jobjects = [None] * 26
        self.buts = [None] * 26

        win = csndsugui.CsoundGUI(self)
        width = gtk.gdk.screen_width()
        height = gtk.gdk.screen_height()
        if os.path.exists("/etc/olpc-release") or os.path.exists(
                "/sys/power/olpc-pm"):
            adjust = 78
        else:
            adjust = 57
        screen = win.box()
        screen.set_size_request(width, height - adjust)
        scrolled = gtk.ScrolledWindow()
        scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        screen.pack_start(scrolled)
        all = gtk.VBox()
        all.show()
        scrolled.add_with_viewport(all)
        scrolled.show()

        win.text(
            "<big><b><big><u>SAMPLEPLAY</u> - Audio Sample Player \
Utilities for Children (2011)</big></b>\n\
\t\t\t    Art Hunkins (www.arthunkins.com)</big>", all)

        win.text(
            "\
<b>SamplePlay</b> and <b>SamplePlayASC</b> play up to 25 mono/stereo samples and \
0 - 1 audio loops at the same time;\n\
    wav and ogg vorbis formats only (no ogg vorbis on Sugar 0.84).\n\
  User samples must be placed in Journal (Record activity \
does this). <b>No user files on Sugar 0.82</b> (original XO-1).\n\
  The default samples are those from the author's \
<b>OISEAUX ORDINAIRES</b>. You are urged to create your own!\t      ", all,
            brown)
        win.text(
            "<b>SamplePlay</b> requires a MIDI controller, \
one key/button/pad per active sample (optionally velocity-sensitive);  \t\n  also \
(optionally) an additional key/button/pad and/or 1-3 MIDI knobs/sliders. \
All samples/MIDI notes are consecutive.", all, green)
        win.text(
            "\
<i><b>MIDI</b>: plug in controller after boot &amp; before selecting version. \
Zero controls before start; reset pan &amp; pitch \
to .5 after.</i>", all, green)
        win.text(
            "<b>SamplePlayASC</b> doesn't involve MIDI; \
control is via one or more ASCII keyboards.\n\
  <b>ASCII keys</b> used: (sample amplitude) 1-0(10); (pitch change, both + and -) \
SHIFTED 1-0(10);\n\
    (pan position, left/right) Z to / [all the above take effect with next keypress]; \
(samples 1-12 trigger) Q to ];\n\
    (samples 13-23) A to '; (sample 24) the - key, and \
(sample 25) the = key. The ` key starts/stops background loop.     ", all,
            brown)

        nbox = win.box(False, all)
        self.b2box = win.box(False, all)
        self.b3box = win.box(False, all)
        but1 = win.cbbutton(nbox, self.version1, "    1 SamplePlay     ")
        but1.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but1.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        but2 = win.cbbutton(nbox, self.version2, " 2 SamplePlayASC ")
        but2.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but2.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        win.text("<b>    MIDI DEVICE REQUIRED</b> for SamplePlay", nbox, green)

        try:
            from jarabe import config
            version = [int(i) for i in config.version.split('.')][:2]
        except ImportError:
            version = [0, 82]
        if version >= [0, 84]:
            win.text(
                "  Optionally, <b>before choosing version</b>, \
select your own <b>audio</b> sample(s) and/or loop from Journal  \n\
  Deselect by closing Journal. Create soundfiles with Record activity \
or Audacity (see ReadMe.txt).", self.b2box, brown)
            win.text("  Load Loop\n  &amp; Samples", self.b2box, brown)
            self.buts[0] = win.cbbutton(self.b2box, self.choose0, "Loop")
            self.buts[0].modify_bg(gtk.STATE_NORMAL,
                                   gtk.gdk.Color(0x6600, 0, 0))
            win.text("", self.b3box, brown)
            for i in range(1, 26):
                self.buts[i] = win.cbbutton(self.b3box, self.choose, "%2d" % i)
                self.buts[i].modify_bg(gtk.STATE_NORMAL,
                                       gtk.gdk.Color(0x6600, 0, 0))

        bbox = win.box(False, all)
        self.bb = bbox
        self.w = win
        self.r = red
        self.g = green
        self.br = brown
        self.ver = 0
        self.kp = []
Beispiel #4
0
    def __init__(self, handle):

        activity.Activity.__init__(self, handle)

        red = (0xDDDD, 0, 0)
        brown = (0x6600, 0, 0)
        green = (0, 0x5500, 0)

        win = csndsugui.CsoundGUI(self)
        width = gtk.gdk.screen_width()
        height = gtk.gdk.screen_height()
        if os.path.exists("/etc/olpc-release") or os.path.exists(
                "/sys/power/olpc-pm"):
            adjust = 78
        else:
            adjust = 57
        screen = win.box()
        screen.set_size_request(width, height - adjust)
        scrolled = gtk.ScrolledWindow()
        scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        screen.pack_start(scrolled)
        all = gtk.VBox()
        all.show()
        scrolled.add_with_viewport(all)
        scrolled.show()

        win.text(
            "<big><b><big><u>CHIMEPLAY</u> - Chime and Bell Player \
Utilities for Children (2012)</big></b>\n\
\t\t\t    Art Hunkins (www.arthunkins.com)</big>", all)

        win.text(
            "\
<b>ChimePlay</b> and <b>ChimePlayAuto</b> are custom versions of SAMPLEPLAY \
for sets of up to 8 windchimes or bells.\t\t\n\
Two sets of 6 chimes (plus ambient loop) are included. \
You are urged to create your own (see ChimePlayReadMe.txt).  ", all, brown)
        win.text(
            "<b>ChimePlay</b> requires MIDI controller, \
one key/button/pad per active chime and loop (optionally velocity-sensitive);\t\nalso \
(optionally) an additional key/button/pad and/or 1-2 MIDI knobs/sliders. \
All samples/MIDI notes are consecutive.\t", all, green)
        win.text(
            "\
<i><b>MIDI</b>: plug in controller after boot &amp; before selecting version. \
Zero controls before start; reset pan to .5 afterward.</i>\t", all, green)
        win.text(
            "<b>ChimePlayAuto</b> doesn't involve MIDI. \
You specify the random range in seconds between \
repeats of a given chime.\t", all, brown)

        nbox = win.box(False, all)
        self.b2box = win.box(False, all)
        self.b3box = win.box(False, all)
        but1 = win.cbbutton(nbox, self.version1, "     1 ChimePlay      ")
        but1.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but1.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        but2 = win.cbbutton(nbox, self.version2, " 2 ChimePlayAuto ")
        but2.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but2.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        win.text("<b>    MIDI DEVICE REQUIRED</b> for ChimePlay", nbox, green)

        bbox = win.box(False, all)
        self.bb = bbox
        bbox2 = win.box(False, all)
        self.bb2 = bbox2
        self.w = win
        self.r = red
        self.g = green
        self.br = brown
        self.ver = 0
    def __init__(self, handle):

        activity.Activity.__init__(self, handle)

        red = (0xDDDD, 0, 0)
        brown = (0x6600, 0, 0)
        green = (0, 0x5500, 0)

        win = csndsugui.CsoundGUI(self)
        width = gtk.gdk.screen_width()
        height = gtk.gdk.screen_height()
        if os.path.exists("/etc/olpc-release") or os.path.exists(
                "/sys/power/olpc-pm"):
            tall = 1
            adjust = 78
        else:
            adjust = 57
            if (height * 1.35) > width:
                tall = 1
            else:
                tall = 0
        screen = win.box()
        screen.set_size_request(width, height - adjust)
        scrolled = gtk.ScrolledWindow()
        scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        screen.pack_start(scrolled)
        all = gtk.VBox()
        all.show()
        scrolled.add_with_viewport(all)
        scrolled.show()

        win.text(
            "<big><b><big><u>OUR MUSIC</u> - Sonic Environments for Children \
(2009)</big></b>\n\
     Art Hunkins (www.arthunkins.com)  /  <b>M</b>ultiple <b>C</b>ontroller \
version</big>", all)

        if tall:
            win.text(
                "A Creation Story:\n\
<i>      On the sixth day I was created.\n\
         God said I was very good.\n\
      On the sixth day We were created - my friends and I.\n\
         God said We were very good.\n\
      On the sixth day my Family was created - my loved ones and I,\n\
            together with all the other creatures.\n\
         God said my Family was very good.\n\
      God saw that everything He made was very good.\n\
      He was so pleased He decided to take a holiday,\n\
            and joined us in play.</i>", all, green)
        else:
            win.text(
                "<small><b>A Creation Story:</b>  <i>On the sixth day I was created. \
God said I was very good.\n\
  On the sixth day We were created - my friends and I. \
God said We were very good.\n\
  On the sixth day my Family was created - my loved ones and I, \
together with all the other creatures. \
God said my Family was very good.\n\
  God saw that everything He made was very good. \
He was so pleased He decided to take a holiday, \
and joined us in play.</i></small>", all, green)

        win.text(
            "\
<b>1 - MyMusicMIDI</b>  Simple; 1 or more MIDI controllers with 8-9 \
knobs/sliders total\n\
<b>2 - MyMusicASCII</b>  Simple; 1 or more ASCII keyboards\n\
<b>3 - OurMusicMIDI</b>  \
Advanced; 1+ MIDI controllers with 8-11 knobs/sliders, or 8-10 \
knobs/sliders &amp; 10 MIDI notes\n\
<b>4 - OurMusicASCII</b>  Advanced; 1 or more ASCII keyboards\n\
<i><b>MIDI</b>: plug in controllers AFTER boot &amp; BEFORE selecting; \
zero controls before start.  \
<b>ASCII</b>: press keys AFTER start.</i>", all, brown)
        nbox = win.box(False, all)
        win.text("", nbox)
        but1 = win.cbbutton(nbox, self.version1, " 1 MyMusicMIDI ")
        but1.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but1.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        but2 = win.cbbutton(nbox, self.version2, " 2 MyMusicASCII")
        but2.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but2.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        but3 = win.cbbutton(nbox, self.version3, "3 OurMusicMIDI ")
        but3.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but3.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        but4 = win.cbbutton(nbox, self.version4, "4 OurMusicASCII")
        but4.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but4.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        win.text("  <b>MIDI DEVICE REQUIRED</b> for 1 &amp; 3", nbox, brown)
        bbox = win.box(False, all)
        self.bb = bbox
        self.w = win
        self.r = red
        self.g = green
        self.br = brown
        self.ver = 0
    def __init__(self, handle):

        activity.Activity.__init__(self, handle)

        red = (0xDDDD, 0, 0)
        brown = (0x6600, 0, 0)
        green = (0, 0x5500, 0)
        self.paths = ["0"] * 5
        self.jobjects = [None] * 5
        self.buts = [None] * 5

        win = csndsugui.CsoundGUI(self)
        width = gtk.gdk.screen_width()
        height = gtk.gdk.screen_height()
        if os.path.exists("/etc/olpc-release") or os.path.exists(
                "/sys/power/olpc-pm"):
            adjust = 78
        else:
            adjust = 57
        screen = win.box()
        screen.set_size_request(width, height - adjust)
        scrolled = gtk.ScrolledWindow()
        scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        screen.pack_start(scrolled)
        all = gtk.VBox()
        all.show()
        scrolled.add_with_viewport(all)
        scrolled.show()

        win.text(
            "<big><b><big><u>FILEMIX</u> - Audio File Player/Mixer/Processor \
Utilities for Children (2010)</big></b>\n\
\t\t\t\t    Art Hunkins (www.arthunkins.com)</big>", all)

        win.text(
            "\
<b>FileMix4</b> and <b>FileMix4ASC</b> play 4 mono/stereo files; wav and \
ogg vorbis formats only (no ogg vorbis on Sugar 0.84).\n\
<b>FileMix</b> and <b>FileMixASC</b> play 1-4 mono and/or stereo files; \
formats as above. These versions include more options.\n\
  User sound files must be placed in Journal (Record activity \
does this). <b>No user files on Sugar 0.82</b> (original XO-1).\n\
  The default files are abbreviated versions of those from the author's \
<b>DUSK AT ST. FRANCIS SPRINGS</b>.\n\
  You are urged to create your own sound files, for example, with the Record \
activity - especially nature soundscapes.", all, brown)
        win.text(
            "<b>FileMix4</b> and <b>FileMix</b> require MIDI controllers; \
the # of knobs/sliders depends on the # of files/parameters you control. \n\
  All knobs/sliders are adjoining, and like parameters are grouped: \
volume, then peak freq, peak gain, lastly speed/freq.\n\
  A Master volume control (all files are affected) is optional, and may \
be separated from the other controls.", all, green)
        win.text(
            "<b>FileMix4ASC</b> and <b>FileMIXASC</b> don't use MIDI; \
control is via 1 or more ASCII keyboards.\n\
  <b>ASCII keys</b> used: (glide time in seconds) 1-0(10); ` (to left of 1) \
= 0(.1) seconds (takes effect with next keypress) -       \n\
    (volume) A,S,D,F - (band-pass freq peak) Q,W,E,R - (peak gain) J,K,L,; - \
(speed/freq) U,I,O,P\n\
    Unshifted=up by .5 (1 max); shifted=down by .5 (0 min); \
<b>top alphabetic rows go <i>negative as well as positive</i></b>.\n\
    G,H = all files off; V,B,N = all files off and reset to \
defaults. Note: SPACE bar and ENTER only START and STOP.", all, brown)
        win.text(
            "<b>FileMix(ASC)</b> offers delayed start - for single play, sync/\
'play from head' options. Hit ASCII key/MIDI note to begin play. ", all, green)

        win.text(
            "\
\t<b>1 - FileMix4</b>  Simple; MIDI controller with 4-16(17) knobs/sliders \
(#17 = optional Master volume)\n\
\t<b>2 - FileMix4ASC</b>  Simple; 1 or more ASCII keyboards\n\
\t<b>3 - FileMix</b>  \
Advanced; MIDI controller with 1-16(17) knobs/sliders (#17 = optional \
Master volume)\n\
\t<b>4 - FileMixASC</b>  Advanced; 1 or more ASCII keyboards\n\
<i><b>MIDI</b>: plug in controller after boot &amp; before selecting. \
Zero controls before start; reset peak freq &amp; speed/freqs \
to .5 after.\n<b>ALL VERSIONS</b>: IMPORTANT! \
Key presses &amp; controller motion prior to 3-5 seconds after hitting START \
are ignored.</i> ", all, brown)
        nbox = win.box(False, all)
        self.b2box = win.box(False, all)
        but1 = win.cbbutton(nbox, self.version1, "   1 FileMix4    ")
        but1.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but1.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        but2 = win.cbbutton(nbox, self.version2, "2 FileMix4ASC")
        but2.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but2.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        but3 = win.cbbutton(nbox, self.version3, "    3 FileMix    ")
        but3.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but3.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        but4 = win.cbbutton(nbox, self.version4, " 4 FileMixASC ")
        but4.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0x7700, 0))
        but4.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(0, 0x7700, 0))
        win.text("<b> MIDI DEVICE REQUIRED</b> for 1 and 3", nbox, green)

        try:
            from jarabe import config
            version = [int(i) for i in config.version.split('.')][:2]
        except ImportError:
            version = [0, 82]
        if version >= [0, 84]:
            win.text(
                "  Optionally, <b>before choosing version</b>, \
select your own <b>audio</b> file(s) from Journal.\n\
  Deselect by closing Journal. Create files with Record \
or Audacity (see ReadMe.txt).", self.b2box, brown)
            win.text("   Load File(s):", self.b2box, brown)
            for i in range(1, 5):
                self.buts[i] = win.cbbutton(self.b2box, self.choose,
                                            " %d " % i)
                self.buts[i].modify_bg(gtk.STATE_NORMAL,
                                       gtk.gdk.Color(0x6600, 0, 0))

        bbox = win.box(False, all)
        self.bb = bbox
        self.w = win
        self.r = red
        self.g = green
        self.br = brown
        self.ver = 0