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 +4 -4
- data/.gitignore +1 -1
- data/Gemfile +1 -1
- data/README.md +74 -31
- data/installation.sh +34 -0
- data/lib/init.sc +32 -6
- data/lib/main.rb +33 -0
- data/lib/qt/form.rb +124 -0
- data/lib/qt/form.ui +260 -0
- data/lib/rubySC.rb +43 -5
- data/lib/rubySC/accords.rb +0 -0
- data/lib/rubySC/forme.rb +9 -0
- data/lib/rubySC/harmonie.rb +56 -0
- data/lib/rubySC/harmonie/accords.rb +46 -0
- data/lib/rubySC/harmonie/harmonie.rb +55 -0
- data/lib/rubySC/harmonie/voiceLeading.rb +128 -0
- data/lib/rubySC/math.rb +5 -0
- data/lib/rubySC/melodie/Schenker.rb +15 -0
- data/lib/rubySC/melodie/{algos.rb → intervalles.rb} +21 -3
- data/lib/rubySC/melodie/melodie.rb +71 -106
- data/lib/rubySC/melodie/motif.rb +73 -0
- data/lib/rubySC/musique.rb +0 -40
- data/lib/rubySC/rythme.rb +82 -0
- data/lib/rubySC/version.rb +1 -1
- data/lib/rubySC/voix.rb +46 -33
- data/lib/samples/bip.wav +0 -0
- data/lib/samples/piano.wav +0 -0
- data/rubySC.gemspec +3 -0
- metadata +33 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23e968f00981ba833168cdab398ff92ea91dcb45
|
4
|
+
data.tar.gz: 50197bf580397a184601aa1fffb08b46a8588633
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccb00330ad47c9744d60979cfbffe4f0a67f3c2da57e93be2ff73d71637bbe8b6b42eb3881d47d78e63252d5896a41b8d5a8b6023df07cc53c59705bc3306bb3
|
7
|
+
data.tar.gz: a4ca6281ac80eb871382e63d1019dd9a9bea8c76257c82a0a61b354e132a3d6906b13b984db35b5f01ee554f0a2f1d9202611c22ddaf5c81b25399f9c61eec63
|
data/.gitignore
CHANGED
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 "
|
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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
55
|
+
```
|
18
56
|
|
19
|
-
*
|
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
|
-
|
30
|
-
plus précisément, avec "au clair de la lune" :
|
67
|
+
###Mais c'est trop casse-couilles
|
31
68
|
|
32
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
78
|
+
```ruby
|
46
79
|
|
47
|
-
|
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
|
-
|
84
|
+
##j'en passe et des meilleurs !
|
85
|
+
```
|
50
86
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
data/installation.sh
ADDED
@@ -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
|
data/lib/init.sc
CHANGED
@@ -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
|
-
|
74
|
-
/// SynthDef ("nomInstr", { argumentsModifiables }
|
75
|
-
/// son = code
|
76
|
-
/// Out.ar(son)
|
77
|
-
/// })
|
102
|
+
Scale.major.semitones.asArray;
|
103
|
+
|
data/lib/main.rb
ADDED
@@ -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
|
+
|
data/lib/qt/form.rb
ADDED
@@ -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
|
+
|
data/lib/qt/form.ui
ADDED
@@ -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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
163
|
+
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
164
|
+
p, li { white-space: pre-wrap; }
|
165
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
|
166
|
+
<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></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
180
|
+
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
181
|
+
p, li { white-space: pre-wrap; }
|
182
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
|
183
|
+
<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></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>
|