rubySC 0.6.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6858da494fb27f379946590d24da5089a5f2b6fd
4
- data.tar.gz: 55a8944fa1c9612bc2a62a9abafbc22c1d194717
3
+ metadata.gz: 23e968f00981ba833168cdab398ff92ea91dcb45
4
+ data.tar.gz: 50197bf580397a184601aa1fffb08b46a8588633
5
5
  SHA512:
6
- metadata.gz: 0a8e9a6e085f7bfd3bcf687298a3b82b5489b0ca71c1f434446c6a0ab88bd1ede09589218fc252f24e68e850fbb47ab7b98dc426a9fb1a32e54b0d6ad20178db
7
- data.tar.gz: e6c1b76395081c586aabcdae5f026f7eb369e5c54d662f16d692d4287ba8b1cde1a99cda5d2d0ad421bf660b901826d742ac25fb076b393a0c37185e5a4488ef
6
+ metadata.gz: ccb00330ad47c9744d60979cfbffe4f0a67f3c2da57e93be2ff73d71637bbe8b6b42eb3881d47d78e63252d5896a41b8d5a8b6023df07cc53c59705bc3306bb3
7
+ data.tar.gz: a4ca6281ac80eb871382e63d1019dd9a9bea8c76257c82a0a61b354e132a3d6906b13b984db35b5f01ee554f0a2f1d9202611c22ddaf5c81b25399f9c61eec63
data/.gitignore CHANGED
@@ -1,4 +1,4 @@
1
- *.wav
1
+
2
2
  *.gem
3
3
  *.rbc
4
4
  .bundle
data/Gemfile CHANGED
@@ -7,7 +7,7 @@ source "http://rubygems.org"
7
7
  # Add dependencies required to use your gem here.
8
8
  # Example:
9
9
  # gem "activesupport", ">= 2.3.5"
10
- gem "colorize"
10
+ gem "qtbindings"
11
11
  # Add dependencies to develop your gem here.
12
12
  # Include everything needed to run rake, tests, features, etc.
13
13
  group :development do
data/README.md CHANGED
@@ -1,22 +1,60 @@
1
- rubySC est une petite biliothèque qui complète à sa manière
2
- [SCruby](https://github.com/maca/scruby) en offrant une interface avec
3
- la bibliothèque JTLib de SuperCollider, cette dernière étant tournée
4
- vers le live coding, et le scriptage de partition plus que la
5
- recherche acoustique _per se_.
1
+ #Coucou M.A.Oistes fous !
2
+
3
+ Vous avez carrément envie de faire de la grosse musique de bâtard ?
4
+
5
+ Vous voulez créer vous-même cette grosse musique de bâtard, mais en même
6
+ temps être un peu aidé par un logiciel non moins autant de bÂtard ?
7
+
8
+ Mais ouais ! Vous êtes au bon endroit !
9
+
10
+ ![](http://upload.wikimedia.org/wikipedia/commons/6/6f/Beethoven.jpg =100x100)
6
11
 
7
12
  ## Installation
8
13
 
9
- vous devez avoir installé supercollider. Pour l'instant, je n'ai testé
14
+ Vous devez avoir installé [SuperCollider](http://supercollider.github.io/).
15
+
16
+ ### Intégrité morale
17
+
18
+ ```gem install rubySC ```
19
+
20
+ Pour l'instant, je n'ai testé
10
21
  le programme que sur linux, et l'appel au programme est fait par une
11
22
  bonne grosse commande 'system'
12
23
 
24
+ Il y a un petit script "installation", qui __peut peut-être être__ utile (bim, port-salut).
25
+
13
26
  ## Utilisation
14
27
 
15
- * Un objet "SC" s'occupe de l'interface OSC avec superCollider.
28
+ RubySC est construit autour de deux idées
29
+
30
+ 1. rubySC complète à sa manière
31
+ [SCruby](https://github.com/maca/scruby) en offrant une interface avec
32
+ Super Collider à coup de gros d'appels OSC bien sales.
33
+
34
+ 2. rubySC implémente la bibliothèque JTLib de SuperCollider, cette dernière étant tournée
35
+ vers le 'scriptage de Patterns', aznoaz le _live coding_, agaga le scriptage de partition plus que la
36
+ recherche acoustique _per se_.
37
+
38
+
39
+ ## Je veux faire de la musique !
40
+
41
+ ```ruby
42
+ require SC
43
+ ```
44
+
45
+ qui créé sévéralz objets
46
+
47
+ *SC qui gère le bouzin de manière global, et qu'on va laisser tranquille la plupart du temps
48
+
49
+ ```ruby
50
+
51
+ SC.listeVoix ## raccourci "li"
52
+ SC.updateScore
53
+ SC.play
16
54
 
17
- `SC.demarrer`
55
+ ```
18
56
 
19
- * On ajoute des "voix", c'est-à-dire un mélange de 7 paramètres
57
+ * Des "voix", c'est-à-dire un mélange de 7 paramètres
20
58
 
21
59
  * instrument : regardez les noms des synthdef dans "init.sc" (ils proviennent tous de recherches sur [SCcode](http://sccode.org/))
22
60
  * dur : les rythmes de votre mélodie
@@ -26,42 +64,47 @@ bonne grosse commande 'system'
26
64
  * root : le micro-registre, utilisé pour faire des marches par exemple
27
65
  * scale : l'echelle utilisé pour votre mélodie
28
66
 
29
- `SC.set paramètre(hash), :nomVoix (ou "nomVoix")`
30
- plus précisément, avec "au clair de la lune" :
67
+ ###Mais c'est trop casse-couilles
31
68
 
32
- ` SC.set ({ :degree => [0,0,0,1,2,1,0,2,1,1,0], :dur => [1, [1, 1, 1 , 1 ,2 ,2 ,1 ,1 ,1 ,1 ,4]]}) , :superius
33
- SC.set ({ :degree => [[0, 2, 4], [0,3,5], [0,2,4], [1,3,4], [0,2,4], [1,3,4], [0,2,4]], :dur => [1, [2,2,2,2,2,2,4]])}, :basse`
69
+ Exactly ! Alors on devient trianglement plus user-friendly !
34
70
 
35
- On peut ensuite modifier ces voix
36
71
 
37
- `SC.set ({ :amp => 0.2, :instrument => :wobble, :
72
+ ```ruby
73
+ mel=Melodie.new ## génère une mélodie et un rythme grâce à un soupçon de magie
74
+ ```
38
75
 
39
- * arrêter ou reprenez vos voix :
40
-
41
- ` mu.stop :voixUn, :voixDeux ## arrête deux voix
42
- mu.play :voixUn ## reprend voixUn
43
- mu.remove :all ## arrête tout et supprime les voix `
76
+ on balance ensuite cette Melodie dans le grand monde
44
77
 
45
- Les voix sont stockées dans 'listeVoix'
78
+ ```ruby
46
79
 
47
- SC.listeVoix.inspect
80
+ mel.mettreVoix :piano
81
+ mel.setDuree [0,1,2,1,0] #si on est des bâtards
82
+ mel.setADSR #si on est des fous
48
83
 
49
- * Deux modules stockent des fonctions plus intéressantes.
84
+ ##j'en passe et des meilleurs !
85
+ ```
50
86
 
51
- 1. Partition, gère tout ce qui est transposition de masse
52
- 1. Marche, permet de transposer la mélodie d'une voix
53
- `Marche.diatonique :nomVoix, intervalleDeMarche, nbRepetitions`
54
- `Marche.diatonique :superius, 2, 2 ## deux marches par tierce ascendante`
87
+
88
+
89
+ ### Mais yen a encore plus !
90
+
91
+ * Trois modules stockent des fonctions plus intéressantes.
92
+
93
+ 1. Partition, gère tout ce qui est phénomène de masse
94
+ 1. Contrepoint, pour générer des voix à partir d'une cellule génératrice
95
+ 1. Harmonie, pour faire des grosses suites d'accords géniales
96
+ 1. Rythme ## à venir
97
+
98
+ ## Des instruments de folie !
55
99
 
56
100
  * Vous pouvez essayer de rajouter des instruments dans "init.sc", ou
57
101
  bien en apprenant SuperCollider, ou bien en cherchant par vous-mêmes
58
102
  des plugins sur le net.
103
+ * possibilität de jouer des samples pour avoir un vrai joli son et tout
104
+
59
105
 
60
- ==
61
-
106
+ # Grosse conclusion ♡
62
107
 
63
108
  Copiez-le comme des gros gorets, qu'un truc un peu simple un jour
64
109
  surgisse de ce monde de fous de MAOistes qui veulent détruire le monde
65
110
  à force de complexitudinités...
66
-
67
- >>>>>>> aff742cafef9b36d744548c85b04fe81943b7a2e
@@ -0,0 +1,34 @@
1
+ #!/bin/bash
2
+
3
+ if [ "$(uname)" == "Darwin" ]
4
+ then
5
+
6
+ brew update
7
+ brew install supercollider
8
+ mkdir bin
9
+ cd bin/
10
+ git clone --recursive https://github.com/supercollider/supercollider.git
11
+ cd supercollider
12
+
13
+ brew install cmake
14
+ brew install readline
15
+ brew install qt
16
+
17
+ mkdir build
18
+ cd build
19
+
20
+ # This due to the broken Symlink feature ( https://github.com/supercollider/supercollider/issues/1119 )
21
+ cmake -DREADLINE_INCLUDE_DIR=/usr/local/Cellar/readline/6.3.3/include -DREADLINE_LIBRARY=/usr/local/Cellar/readline/6.3.3/lib/libreadline.dylib -DCMAKE_BUILD_TYPE=Release -DNATIVE=ON -DSC_SYMLINK_CLASSLIB=OFF ..
22
+
23
+ make -j 8
24
+ make install
25
+
26
+ elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]
27
+ then
28
+
29
+ sudo apt-get install supercollider
30
+
31
+ elif [ -n "$COMSPEC" -a -x "$COMSPEC" ]
32
+ then
33
+ echo $0: this script does not support Windows \:\(
34
+ fi
@@ -1,5 +1,35 @@
1
1
  //////////dictionnaire d'instruments
2
2
 
3
+ ///// Vous pouvez ajouter de nouveaux instruments en mettant du code en-dessous, dans la syntaxe:
4
+ /// SynthDef ("nomInstr", { argumentsModifiables }
5
+ /// son = code
6
+ /// Out.ar(son)
7
+ /// })
8
+
9
+
10
+ //synth muy important
11
+
12
+ SynthDef(\sampler, { |out, bufnum, freq = 1, amp = 1, atk, decay, sustain, rel|
13
+ var sig, env;
14
+ //env=EnvGen.kr(Env.adsr(atk, decay, sustain, rel, amp));
15
+ env= EnvGen.kr(Env.linen(atk,sustain, rel, amp), doneAction:2);
16
+ sig = PlayBuf.ar(1, bufnum, rate: freq/1000, doneAction: 2) * env;
17
+ Out.ar(out, sig ! 2)
18
+ }).add;
19
+
20
+
21
+ SynthDef(\bell, { |out, accent = 0, amp = 0.1, decayScale = 1|
22
+ var exc = PinkNoise.ar(amp)
23
+ * Decay2.kr(Impulse.kr(0), 0.01, 0.05),
24
+ sig = Klank.ar(`[
25
+ { ExpRand(400, 1600) } ! 4,
26
+ 1 ! 4,
27
+ { ExpRand(0.1, 0.4) } ! 4
28
+ ], exc, freqscale: accent + 1, decayscale: decayScale);
29
+ DetectSilence.ar(sig, doneAction: 2);
30
+ Out.ar(out, sig ! 2)
31
+ }).add;
32
+
3
33
  SynthDef(\sax, { |out, freq, amp=0.1, gate=1|
4
34
  var num = 16;
5
35
  var harms = Array.series(num, 1, 1) * Array.exprand(num, 0.995, 1.001);
@@ -69,9 +99,5 @@ OSCFunc.newMatching(
69
99
  message[1].asString.interpret
70
100
  }, "/SC", n
71
101
  );
72
- Scale.major.semitones.asArray
73
- ///// Vous pouvez ajouter de nouveaux instruments en mettant du code en-dessous, dans la syntaxe:
74
- /// SynthDef ("nomInstr", { argumentsModifiables }
75
- /// son = code
76
- /// Out.ar(son)
77
- /// })
102
+ Scale.major.semitones.asArray;
103
+
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'Qt4'
4
+ require_relative 'qt/form.rb'
5
+ require_relative 'rubySC.rb'
6
+
7
+ marche=true
8
+
9
+ a = Qt::Application.new(ARGV)
10
+ u = Ui::Form.new
11
+ w = Qt::Widget.new
12
+ u.setupUi(w)
13
+
14
+ u.pushButton.connect(SIGNAL :clicked){
15
+ SC.play "melodie1"
16
+ }
17
+ u.pushButton_2.connect(SIGNAL :clicked){
18
+ SC.stop "melodie1"
19
+ }
20
+ u.verticalSlider.connect(SIGNAL ('valueChanged(int)')){
21
+ Rythme.tempo (u.verticalSlider.value/100)
22
+ }
23
+ u.pushButton_3.connect(SIGNAL :clicked) {
24
+ $qApp.quit
25
+ }
26
+
27
+ SC.demarrer
28
+ melodie =Melodie.new
29
+ melodie.enclencher :piano
30
+
31
+ w.show
32
+ a.exec
33
+
@@ -0,0 +1,124 @@
1
+ =begin
2
+ ** Form generated from reading ui file 'form.ui'
3
+ **
4
+ ** Created: ven. déc. 5 14:00:08 2014
5
+ ** by: Qt User Interface Compiler version 4.8.2
6
+ **
7
+ ** WARNING! All changes made in this file will be lost when recompiling ui file!
8
+ =end
9
+
10
+ class Ui_Form
11
+ attr_reader :verticalSlider_5
12
+ attr_reader :pushButton_3
13
+ attr_reader :verticalSlider_6
14
+ attr_reader :verticalSlider_2
15
+ attr_reader :pushButton
16
+ attr_reader :pushButton_2
17
+ attr_reader :verticalSlider_7
18
+ attr_reader :textEdit
19
+ attr_reader :textBrowser
20
+ attr_reader :verticalSlider
21
+ attr_reader :lcdNumber
22
+
23
+ def setupUi(form)
24
+ if form.objectName.nil?
25
+ form.objectName = "form"
26
+ end
27
+ form.resize(533, 477)
28
+ @verticalSlider_5 = Qt::Slider.new(form)
29
+ @verticalSlider_5.objectName = "verticalSlider_5"
30
+ @verticalSlider_5.geometry = Qt::Rect.new(180, 110, 23, 160)
31
+ @verticalSlider_5.maximum = 100
32
+ @verticalSlider_5.singleStep = 1
33
+ @verticalSlider_5.pageStep = 1
34
+ @verticalSlider_5.orientation = Qt::Vertical
35
+ @pushButton_3 = Qt::PushButton.new(form)
36
+ @pushButton_3.objectName = "pushButton_3"
37
+ @pushButton_3.geometry = Qt::Rect.new(400, 240, 95, 24)
38
+ @pushButton_3.cursor = Qt::Cursor.new(Qt::PointingHandCursor)
39
+ @pushButton_3.autoDefault = false
40
+ @pushButton_3.default = false
41
+ @verticalSlider_6 = Qt::Slider.new(form)
42
+ @verticalSlider_6.objectName = "verticalSlider_6"
43
+ @verticalSlider_6.geometry = Qt::Rect.new(320, 110, 23, 160)
44
+ @verticalSlider_6.maximum = 100
45
+ @verticalSlider_6.singleStep = 1
46
+ @verticalSlider_6.pageStep = 1
47
+ @verticalSlider_6.orientation = Qt::Vertical
48
+ @verticalSlider_2 = Qt::Slider.new(form)
49
+ @verticalSlider_2.objectName = "verticalSlider_2"
50
+ @verticalSlider_2.geometry = Qt::Rect.new(110, 110, 23, 160)
51
+ @verticalSlider_2.maximum = 100
52
+ @verticalSlider_2.singleStep = 1
53
+ @verticalSlider_2.pageStep = 1
54
+ @verticalSlider_2.orientation = Qt::Vertical
55
+ @pushButton = Qt::PushButton.new(form)
56
+ @pushButton.objectName = "pushButton"
57
+ @pushButton.geometry = Qt::Rect.new(400, 120, 95, 24)
58
+ @pushButton_2 = Qt::PushButton.new(form)
59
+ @pushButton_2.objectName = "pushButton_2"
60
+ @pushButton_2.geometry = Qt::Rect.new(400, 150, 95, 24)
61
+ @verticalSlider_7 = Qt::Slider.new(form)
62
+ @verticalSlider_7.objectName = "verticalSlider_7"
63
+ @verticalSlider_7.geometry = Qt::Rect.new(250, 110, 23, 160)
64
+ @verticalSlider_7.maximum = 100
65
+ @verticalSlider_7.singleStep = 1
66
+ @verticalSlider_7.pageStep = 1
67
+ @verticalSlider_7.orientation = Qt::Vertical
68
+ @textEdit = Qt::TextEdit.new(form)
69
+ @textEdit.objectName = "textEdit"
70
+ @textEdit.geometry = Qt::Rect.new(20, 80, 71, 31)
71
+ @textBrowser = Qt::TextBrowser.new(form)
72
+ @textBrowser.objectName = "textBrowser"
73
+ @textBrowser.geometry = Qt::Rect.new(50, 300, 451, 161)
74
+ @verticalSlider = Qt::Slider.new(form)
75
+ @verticalSlider.objectName = "verticalSlider"
76
+ @verticalSlider.geometry = Qt::Rect.new(40, 110, 23, 160)
77
+ @verticalSlider.maximum = 100
78
+ @verticalSlider.singleStep = 1
79
+ @verticalSlider.pageStep = 1
80
+ @verticalSlider.orientation = Qt::Vertical
81
+ @lcdNumber = Qt::LCDNumber.new(form)
82
+ @lcdNumber.objectName = "lcdNumber"
83
+ @lcdNumber.geometry = Qt::Rect.new(380, 20, 131, 71)
84
+
85
+ retranslateUi(form)
86
+ Qt::Object.connect(@verticalSlider, SIGNAL('valueChanged(int)'), @verticalSlider, SLOT('setValue(int)'))
87
+ Qt::Object.connect(@verticalSlider, SIGNAL('valueChanged(int)'), @lcdNumber, SLOT('display(int)'))
88
+
89
+
90
+ Qt::MetaObject.connectSlotsByName(form)
91
+ end # setupUi
92
+
93
+ def setup_ui(form)
94
+ setupUi(form)
95
+ end
96
+
97
+ def retranslateUi(form)
98
+ form.windowTitle = Qt::Application.translate("Form", "Form", nil, Qt::Application::UnicodeUTF8)
99
+ @pushButton_3.text = Qt::Application.translate("Form", "Quit", nil, Qt::Application::UnicodeUTF8)
100
+ @pushButton.text = Qt::Application.translate("Form", "play", nil, Qt::Application::UnicodeUTF8)
101
+ @pushButton_2.text = Qt::Application.translate("Form", "stop", nil, Qt::Application::UnicodeUTF8)
102
+ @textEdit.html = Qt::Application.translate("Form", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" \
103
+ "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" \
104
+ "p, li { white-space: pre-wrap; }\n" \
105
+ "</style></head><body style=\" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;\">\n" \
106
+ "<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">TEMPO</p></body></html>", nil, Qt::Application::UnicodeUTF8)
107
+ @textBrowser.html = Qt::Application.translate("Form", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" \
108
+ "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" \
109
+ "p, li { white-space: pre-wrap; }\n" \
110
+ "</style></head><body style=\" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;\">\n" \
111
+ "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>", nil, Qt::Application::UnicodeUTF8)
112
+ end # retranslateUi
113
+
114
+ def retranslate_ui(form)
115
+ retranslateUi(form)
116
+ end
117
+
118
+ end
119
+
120
+ module Ui
121
+ class Form < Ui_Form
122
+ end
123
+ end # module Ui
124
+
@@ -0,0 +1,260 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Form</class>
4
+ <widget class="QWidget" name="Form">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>533</width>
10
+ <height>477</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Form</string>
15
+ </property>
16
+ <widget class="QSlider" name="verticalSlider_5">
17
+ <property name="geometry">
18
+ <rect>
19
+ <x>180</x>
20
+ <y>110</y>
21
+ <width>23</width>
22
+ <height>160</height>
23
+ </rect>
24
+ </property>
25
+ <property name="maximum">
26
+ <number>100</number>
27
+ </property>
28
+ <property name="singleStep">
29
+ <number>1</number>
30
+ </property>
31
+ <property name="pageStep">
32
+ <number>1</number>
33
+ </property>
34
+ <property name="orientation">
35
+ <enum>Qt::Vertical</enum>
36
+ </property>
37
+ </widget>
38
+ <widget class="QPushButton" name="pushButton_3">
39
+ <property name="geometry">
40
+ <rect>
41
+ <x>400</x>
42
+ <y>240</y>
43
+ <width>95</width>
44
+ <height>24</height>
45
+ </rect>
46
+ </property>
47
+ <property name="cursor">
48
+ <cursorShape>PointingHandCursor</cursorShape>
49
+ </property>
50
+ <property name="text">
51
+ <string>Quit</string>
52
+ </property>
53
+ <property name="autoDefault">
54
+ <bool>false</bool>
55
+ </property>
56
+ <property name="default">
57
+ <bool>false</bool>
58
+ </property>
59
+ </widget>
60
+ <widget class="QSlider" name="verticalSlider_6">
61
+ <property name="geometry">
62
+ <rect>
63
+ <x>320</x>
64
+ <y>110</y>
65
+ <width>23</width>
66
+ <height>160</height>
67
+ </rect>
68
+ </property>
69
+ <property name="maximum">
70
+ <number>100</number>
71
+ </property>
72
+ <property name="singleStep">
73
+ <number>1</number>
74
+ </property>
75
+ <property name="pageStep">
76
+ <number>1</number>
77
+ </property>
78
+ <property name="orientation">
79
+ <enum>Qt::Vertical</enum>
80
+ </property>
81
+ </widget>
82
+ <widget class="QSlider" name="verticalSlider_2">
83
+ <property name="geometry">
84
+ <rect>
85
+ <x>110</x>
86
+ <y>110</y>
87
+ <width>23</width>
88
+ <height>160</height>
89
+ </rect>
90
+ </property>
91
+ <property name="maximum">
92
+ <number>100</number>
93
+ </property>
94
+ <property name="singleStep">
95
+ <number>1</number>
96
+ </property>
97
+ <property name="pageStep">
98
+ <number>1</number>
99
+ </property>
100
+ <property name="orientation">
101
+ <enum>Qt::Vertical</enum>
102
+ </property>
103
+ </widget>
104
+ <widget class="QPushButton" name="pushButton">
105
+ <property name="geometry">
106
+ <rect>
107
+ <x>400</x>
108
+ <y>120</y>
109
+ <width>95</width>
110
+ <height>24</height>
111
+ </rect>
112
+ </property>
113
+ <property name="text">
114
+ <string>play</string>
115
+ </property>
116
+ </widget>
117
+ <widget class="QPushButton" name="pushButton_2">
118
+ <property name="geometry">
119
+ <rect>
120
+ <x>400</x>
121
+ <y>150</y>
122
+ <width>95</width>
123
+ <height>24</height>
124
+ </rect>
125
+ </property>
126
+ <property name="text">
127
+ <string>stop</string>
128
+ </property>
129
+ </widget>
130
+ <widget class="QSlider" name="verticalSlider_7">
131
+ <property name="geometry">
132
+ <rect>
133
+ <x>250</x>
134
+ <y>110</y>
135
+ <width>23</width>
136
+ <height>160</height>
137
+ </rect>
138
+ </property>
139
+ <property name="maximum">
140
+ <number>100</number>
141
+ </property>
142
+ <property name="singleStep">
143
+ <number>1</number>
144
+ </property>
145
+ <property name="pageStep">
146
+ <number>1</number>
147
+ </property>
148
+ <property name="orientation">
149
+ <enum>Qt::Vertical</enum>
150
+ </property>
151
+ </widget>
152
+ <widget class="QTextEdit" name="textEdit">
153
+ <property name="geometry">
154
+ <rect>
155
+ <x>20</x>
156
+ <y>80</y>
157
+ <width>71</width>
158
+ <height>31</height>
159
+ </rect>
160
+ </property>
161
+ <property name="html">
162
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
163
+ &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
164
+ p, li { white-space: pre-wrap; }
165
+ &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
166
+ &lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;TEMPO&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
167
+ </property>
168
+ </widget>
169
+ <widget class="QTextBrowser" name="textBrowser">
170
+ <property name="geometry">
171
+ <rect>
172
+ <x>30</x>
173
+ <y>300</y>
174
+ <width>471</width>
175
+ <height>161</height>
176
+ </rect>
177
+ </property>
178
+ <property name="html">
179
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
180
+ &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
181
+ p, li { white-space: pre-wrap; }
182
+ &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
183
+ &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
184
+ </property>
185
+ </widget>
186
+ <widget class="QSlider" name="verticalSlider">
187
+ <property name="geometry">
188
+ <rect>
189
+ <x>40</x>
190
+ <y>110</y>
191
+ <width>23</width>
192
+ <height>160</height>
193
+ </rect>
194
+ </property>
195
+ <property name="maximum">
196
+ <number>100</number>
197
+ </property>
198
+ <property name="singleStep">
199
+ <number>1</number>
200
+ </property>
201
+ <property name="pageStep">
202
+ <number>1</number>
203
+ </property>
204
+ <property name="value">
205
+ <number>20</number>
206
+ </property>
207
+ <property name="orientation">
208
+ <enum>Qt::Vertical</enum>
209
+ </property>
210
+ </widget>
211
+ <widget class="QLCDNumber" name="lcdNumber">
212
+ <property name="geometry">
213
+ <rect>
214
+ <x>380</x>
215
+ <y>20</y>
216
+ <width>131</width>
217
+ <height>71</height>
218
+ </rect>
219
+ </property>
220
+ </widget>
221
+ </widget>
222
+ <resources/>
223
+ <connections>
224
+ <connection>
225
+ <sender>verticalSlider</sender>
226
+ <signal>valueChanged(int)</signal>
227
+ <receiver>verticalSlider</receiver>
228
+ <slot>setValue(int)</slot>
229
+ <hints>
230
+ <hint type="sourcelabel">
231
+ <x>53</x>
232
+ <y>205</y>
233
+ </hint>
234
+ <hint type="destinationlabel">
235
+ <x>58</x>
236
+ <y>193</y>
237
+ </hint>
238
+ </hints>
239
+ </connection>
240
+ <connection>
241
+ <sender>verticalSlider</sender>
242
+ <signal>valueChanged(int)</signal>
243
+ <receiver>lcdNumber</receiver>
244
+ <slot>display(int)</slot>
245
+ <hints>
246
+ <hint type="sourcelabel">
247
+ <x>57</x>
248
+ <y>163</y>
249
+ </hint>
250
+ <hint type="destinationlabel">
251
+ <x>459</x>
252
+ <y>50</y>
253
+ </hint>
254
+ </hints>
255
+ </connection>
256
+ </connections>
257
+ <slots>
258
+ <slot>test1()</slot>
259
+ </slots>
260
+ </ui>