rubySC 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+

|
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>
|