aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--core/qmpmidimapperrtmidi.cpp2
-rw-r--r--core/qmpmidimappers.hpp2
-rw-r--r--qmidiplayer-desktop/qmpefxwindow.ui918
-rw-r--r--qmidiplayer-desktop/qmpmainwindow.cpp1
-rw-r--r--qmidiplayer-desktop/qmpplugin.cpp2
-rw-r--r--visualization/extrasmeltutils.cpp33
-rw-r--r--visualization/extrasmeltutils.hpp54
8 files changed, 576 insertions, 440 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b7bb3f..1ab5bec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2016-05-15 0.8.1 alpha
+Initial stubs for the particle system.
+Use layouts in the effects window.
+
2016-05-14 0.8.1 alpha
This _should_ fix building under arch linux.
(Linking order problems and include problems).
diff --git a/core/qmpmidimapperrtmidi.cpp b/core/qmpmidimapperrtmidi.cpp
index 059ca77..9515a0b 100644
--- a/core/qmpmidimapperrtmidi.cpp
+++ b/core/qmpmidimapperrtmidi.cpp
@@ -1,7 +1,7 @@
#include <cstdio>
#include <cstring>
#include <vector>
-#include "RtMidi.h"
+#include RT_MIDI_H
#include "qmpmidimappers.hpp"
RtMidiOut* qmpMidiMapperRtMidi::dummy=NULL;
qmpMidiMapperRtMidi::qmpMidiMapperRtMidi()
diff --git a/core/qmpmidimappers.hpp b/core/qmpmidimappers.hpp
index ae4fa3f..7b9ff0e 100644
--- a/core/qmpmidimappers.hpp
+++ b/core/qmpmidimappers.hpp
@@ -1,6 +1,6 @@
#ifndef QMPMIDIMAPPERS_H
#define QMPMIDIMAPPERS_H
-#include "RtMidi.h"
+#include RT_MIDI_H
class qmpMidiMapperRtMidi
{
private:
diff --git a/qmidiplayer-desktop/qmpefxwindow.ui b/qmidiplayer-desktop/qmpefxwindow.ui
index 4a1e0c6..d7e2245 100644
--- a/qmidiplayer-desktop/qmpefxwindow.ui
+++ b/qmidiplayer-desktop/qmpefxwindow.ui
@@ -6,20 +6,20 @@
<rect>
<x>0</x>
<y>0</y>
- <width>546</width>
- <height>177</height>
+ <width>600</width>
+ <height>186</height>
</rect>
</property>
<property name="minimumSize">
<size>
- <width>546</width>
- <height>177</height>
+ <width>600</width>
+ <height>186</height>
</size>
</property>
<property name="maximumSize">
<size>
- <width>546</width>
- <height>177</height>
+ <width>600</width>
+ <height>186</height>
</size>
</property>
<property name="windowTitle">
@@ -31,193 +31,225 @@
<property name="title">
<string>Reverb</string>
</property>
- <widget class="QCheckBox" name="cbEnabledR">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>4</y>
- <width>21</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- <widget class="QDial" name="dRoom">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>120</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dDamp">
- <property name="geometry">
- <rect>
- <x>200</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dWidth">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>103</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dLevelR">
- <property name="geometry">
- <rect>
- <x>200</x>
- <y>103</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbRoom">
- <property name="geometry">
- <rect>
- <x>60</x>
- <y>30</y>
- <width>41</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Room</string>
- </property>
- </widget>
- <widget class="QSpinBox" name="sbRoom">
- <property name="geometry">
- <rect>
- <x>60</x>
- <y>50</y>
- <width>51</width>
- <height>21</height>
- </rect>
- </property>
- <property name="maximum">
- <number>120</number>
- </property>
- </widget>
- <widget class="QLabel" name="lbDamp">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>30</y>
- <width>51</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Damp</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- <widget class="QSpinBox" name="sbDamp">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>50</y>
- <width>56</width>
- <height>21</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- </widget>
- <widget class="QLabel" name="lbWidth">
- <property name="geometry">
- <rect>
- <x>60</x>
- <y>100</y>
- <width>51</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Width</string>
- </property>
- </widget>
- <widget class="QSpinBox" name="sbWidth">
- <property name="geometry">
- <rect>
- <x>60</x>
- <y>120</y>
- <width>56</width>
- <height>21</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- </widget>
- <widget class="QLabel" name="lbLevelR">
- <property name="geometry">
- <rect>
- <x>145</x>
- <y>100</y>
- <width>51</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Level</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- <widget class="QSpinBox" name="sbLevelR">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>120</y>
- <width>56</width>
- <height>21</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- </widget>
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
+ <number>2</number>
+ </property>
+ <item>
+ <widget class="QCheckBox" name="cbEnabledR">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Enabled</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item row="1" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QDial" name="dWidth">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QLabel" name="lbWidth">
+ <property name="text">
+ <string>Width</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="sbWidth">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QDial" name="dRoom">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>120</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="lbRoom">
+ <property name="text">
+ <string>Room</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="sbRoom">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>120</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item row="0" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLabel" name="lbDamp">
+ <property name="text">
+ <string>Damp</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="sbDamp">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QDial" name="dDamp">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QLabel" name="lbLevelR">
+ <property name="text">
+ <string>Level</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="sbLevelR">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QDial" name="dLevelR">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
</widget>
</item>
<item>
@@ -225,250 +257,262 @@
<property name="title">
<string>Chorus</string>
</property>
- <widget class="QCheckBox" name="cbEnabledC">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>4</y>
- <width>21</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- <widget class="QDial" name="dFeedBack">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>99</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dRate">
- <property name="geometry">
- <rect>
- <x>200</x>
- <y>30</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="minimum">
- <number>29</number>
- </property>
- <property name="maximum">
- <number>500</number>
- </property>
- <property name="value">
- <number>29</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dDepth">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>103</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>210</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QDial" name="dLevelC">
- <property name="geometry">
- <rect>
- <x>200</x>
- <y>103</y>
- <width>50</width>
- <height>51</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="notchesVisible">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" name="lbFeedBack">
- <property name="geometry">
- <rect>
- <x>60</x>
- <y>30</y>
- <width>71</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Feedback</string>
- </property>
- </widget>
- <widget class="QSpinBox" name="sbFeedBack">
- <property name="geometry">
- <rect>
- <x>60</x>
- <y>50</y>
- <width>51</width>
- <height>21</height>
- </rect>
- </property>
- <property name="maximum">
- <number>99</number>
- </property>
- </widget>
- <widget class="QLabel" name="lbRate">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>30</y>
- <width>51</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Rate</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="lbDepth">
- <property name="geometry">
- <rect>
- <x>60</x>
- <y>100</y>
- <width>51</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Depth</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbLevelC">
- <property name="geometry">
- <rect>
- <x>145</x>
- <y>100</y>
- <width>51</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Level</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- <widget class="QSpinBox" name="sbLevelC">
- <property name="geometry">
- <rect>
- <x>140</x>
- <y>120</y>
- <width>56</width>
- <height>21</height>
- </rect>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- </widget>
- <widget class="QDoubleSpinBox" name="sbRate">
- <property name="geometry">
- <rect>
- <x>137</x>
- <y>50</y>
- <width>61</width>
- <height>21</height>
- </rect>
- </property>
- <property name="minimum">
- <double>0.290000000000000</double>
- </property>
- <property name="maximum">
- <double>5.000000000000000</double>
- </property>
- <property name="singleStep">
- <double>0.100000000000000</double>
- </property>
- </widget>
- <widget class="QLabel" name="lbLFO">
- <property name="geometry">
- <rect>
- <x>35</x>
- <y>77</y>
- <width>41</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>LFO</string>
- </property>
- </widget>
- <widget class="QRadioButton" name="rbSine">
- <property name="geometry">
- <rect>
- <x>70</x>
- <y>77</y>
- <width>61</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Sine</string>
- </property>
- </widget>
- <widget class="QRadioButton" name="rbTriangle">
- <property name="geometry">
- <rect>
- <x>145</x>
- <y>77</y>
- <width>91</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>Trian&amp;gle</string>
- </property>
- </widget>
- <widget class="QDoubleSpinBox" name="sbDepth">
- <property name="geometry">
- <rect>
- <x>60</x>
- <y>120</y>
- <width>51</width>
- <height>21</height>
- </rect>
- </property>
- <property name="decimals">
- <number>1</number>
- </property>
- <property name="maximum">
- <double>21.000000000000000</double>
- </property>
- <property name="singleStep">
- <double>0.100000000000000</double>
- </property>
- </widget>
+ <layout class="QVBoxLayout" name="verticalLayout_10">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
+ <number>2</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_8">
+ <item>
+ <widget class="QCheckBox" name="cbEnabledC">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Enabled</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lbLFO">
+ <property name="text">
+ <string>LFO</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="rbSine">
+ <property name="text">
+ <string>Si&amp;ne</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="rbTriangle">
+ <property name="text">
+ <string>Trian&amp;gle</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item row="0" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout_9">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_8">
+ <item>
+ <widget class="QLabel" name="lbRate">
+ <property name="text">
+ <string>Rate</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDoubleSpinBox" name="sbRate">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimum">
+ <double>0.290000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>5.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.100000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QDial" name="dRate">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimum">
+ <number>29</number>
+ </property>
+ <property name="maximum">
+ <number>500</number>
+ </property>
+ <property name="value">
+ <number>29</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_6">
+ <item>
+ <widget class="QDial" name="dFeedBack">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>99</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <item>
+ <widget class="QLabel" name="lbFeedBack">
+ <property name="text">
+ <string>Feedback</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="sbFeedBack">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>99</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_7">
+ <item>
+ <widget class="QDial" name="dDepth">
+ <property name="maximum">
+ <number>210</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
+ <widget class="QLabel" name="lbDepth">
+ <property name="text">
+ <string>Depth</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDoubleSpinBox" name="sbDepth">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="decimals">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <double>21.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.100000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout_10">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_9">
+ <item>
+ <widget class="QLabel" name="lbLevelC">
+ <property name="text">
+ <string>Level</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="sbLevelC">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QDial" name="dLevelC">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="notchesVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
</widget>
</item>
</layout>
diff --git a/qmidiplayer-desktop/qmpmainwindow.cpp b/qmidiplayer-desktop/qmpmainwindow.cpp
index 762da0f..ed3c884 100644
--- a/qmidiplayer-desktop/qmpmainwindow.cpp
+++ b/qmidiplayer-desktop/qmpmainwindow.cpp
@@ -61,6 +61,7 @@ qmpMainWindow::qmpMainWindow(QWidget *parent) :
qmpMainWindow::~qmpMainWindow()
{
+ pmgr->deinitPlugins();
delete pmgr;if(player)delete player;
if(timer)delete timer;
delete helpw;helpw=NULL;
diff --git a/qmidiplayer-desktop/qmpplugin.cpp b/qmidiplayer-desktop/qmpplugin.cpp
index 79ea93c..ef31472 100644
--- a/qmidiplayer-desktop/qmpplugin.cpp
+++ b/qmidiplayer-desktop/qmpplugin.cpp
@@ -84,7 +84,7 @@ void qmpPluginManager::initPlugins()
void qmpPluginManager::deinitPlugins()
{
for(unsigned i=0;i<plugins.size();++i)
- plugins[i].interface->deinit();
+ {plugins[i].interface->deinit();plugins[i].enabled=false;}
}
qmpPluginAPI::~qmpPluginAPI(){}
diff --git a/visualization/extrasmeltutils.cpp b/visualization/extrasmeltutils.cpp
index d77cc4b..160f7d6 100644
--- a/visualization/extrasmeltutils.cpp
+++ b/visualization/extrasmeltutils.cpp
@@ -1,6 +1,7 @@
#include <cstdarg>
#include "extrasmeltutils.hpp"
SMELT* smEntity3DBuffer::sm=NULL;
+SMELT* smParticle::sm=NULL;
smVertex makeVertex(float x,float y,float z,DWORD color,float tx,float ty)
{smVertex v;v.x=x;v.y=y;v.z=z;v.col=color;v.tx=tx;v.ty=ty;return v;}
void smEntity3D::addVerices(int n,...)
@@ -59,3 +60,35 @@ void smEntity3DBuffer::drawBatch()
sm->smDrawCustomIndexedVertices(&vertices[0],&indices[0],vertices.size(),indices.size(),BLEND_ALPHABLEND,0);
vertices.clear();indices.clear();
}
+smParticle::smParticle(){sm=smGetInterface(SMELT_APILEVEL);}
+smParticle::~smParticle(){sm->smRelease();}
+void smParticle::render()
+{sm->smRenderQuad(&q);}
+void smParticle::update()
+{
+ clifespan+=sm->smGetDelta();
+ vel=vel+accel;pos=pos+vel;rotv=rotv+rota;rot=rot+rotv;
+ size=clifespan/lifespan*(finalsize-initsize)+initsize;
+ color=ARGB(
+ (DWORD)(clifespan/lifespan*(GETA(finalcolor)-GETA(initcolor)+GETA(initcolor))),
+ (DWORD)(clifespan/lifespan*(GETR(finalcolor)-GETR(initcolor)+GETR(initcolor))),
+ (DWORD)(clifespan/lifespan*(GETG(finalcolor)-GETG(initcolor)+GETG(initcolor))),
+ (DWORD)(clifespan/lifespan*(GETB(finalcolor)-GETB(initcolor)+GETB(initcolor))));
+ //set up the quad
+}
+smParticleSystem::smParticleSystem(){particles.clear();posGenerator=NULL;}
+smParticleSystem::~smParticleSystem()
+{for(int i=0;i<particles.size();++i)delete particles[i];particles.clear();}
+void smParticleSystem::setParticleSystemInfo(smParticleSystemInfo _psinfo)
+{psinfo=_psinfo;}
+void smParticleSystem::setPos(smvec3d _pos){pos=_pos;}
+void smParticleSystem::setPSEmissionPosGen(smPSEmissionPositionGenerator *_gen)
+{posGenerator=_gen;}
+void smParticleSystem::startPS()
+{}
+void smParticleSystem::stopPS()
+{}
+void smParticleSystem::updatePS()
+{}
+void smParticleSystem::renderPS()
+{}
diff --git a/visualization/extrasmeltutils.hpp b/visualization/extrasmeltutils.hpp
index 8a4a1bc..092fbfb 100644
--- a/visualization/extrasmeltutils.hpp
+++ b/visualization/extrasmeltutils.hpp
@@ -29,5 +29,59 @@ class smEntity3DBuffer
void drawBatch();
};
+class smPSEmissionPositionGenerator
+{
+ public:
+ virtual smvec3d genPos();
+};
+class smParticleSystemInfo
+{
+ public:
+ smvec3d vel,velvar,acc,accvar;
+ smvec3d rotv,rotvvar,rota,rotavar;
+ double lifespan,lifespanvar;
+ int maxcount,emissioncount,ecvar;
+ double emissiondelay,edvar;
+ double initsize,initsizevar;
+ double finalsize,finalsizevar;
+ DWORD initcolor,initcolorvar;
+ DWORD finalcolor,finalcolorvar;
+ SMTEX texture;int blend;
+};
+class smParticle
+{
+ friend class smParticleSystem;
+ private:
+ static SMELT* sm;
+ smvec3d pos,rot;
+ smvec3d vel,accel,rotv,rota;
+ double lifespan,clifespan;
+ double initsize,finalsize,size;
+ DWORD color,initcolor,finalcolor;
+ smQuad q;
+ public:
+ smParticle();
+ ~smParticle();
+ void render();
+ void update();
+};
+class smParticleSystem
+{
+ private:
+ std::vector<smParticle*> particles;
+ smParticleSystemInfo psinfo;
+ smvec3d pos;
+ smPSEmissionPositionGenerator* posGenerator;
+ public:
+ smParticleSystem();
+ ~smParticleSystem();
+ void setParticleSystemInfo(smParticleSystemInfo _psinfo);
+ void setPos(smvec3d _pos);
+ void setPSEmissionPosGen(smPSEmissionPositionGenerator* _gen);
+ void startPS();
+ void stopPS();
+ void updatePS();
+ void renderPS();
+};
extern smVertex makeVertex(float x,float y,float z,DWORD color,float tx,float ty);
#endif // EXTRASMELTUTILS_H