Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
PoroCYon
oidos
Commits
c03986c0
Commit
c03986c0
authored
Sep 01, 2018
by
Aske Simon Christensen
Browse files
Eliminate param_names
parent
5e97badc
Changes
1
Show whitespace changes
Inline
Side-by-side
synth/src/synth.rs
View file @
c03986c0
...
...
@@ -128,7 +128,6 @@ pub struct SynthPlugin<G: SoundGenerator, S: SynthInfo> {
cache
:
RwLock
<
Vec
<
SoundCache
<
G
>>>
,
sound_params
:
G
::
Parameters
,
param_names
:
Vec
<&
'static
str
>
,
param_values
:
Vec
<
f32
>
,
param_map
:
RwLock
<
HashMap
<&
'static
str
,
f32
>>
,
...
...
@@ -147,9 +146,8 @@ fn make_param_map(param_names: &[&'static str], param_values: &[f32]) -> HashMap
impl
<
G
:
SoundGenerator
,
S
:
SynthInfo
>
Default
for
SynthPlugin
<
G
,
S
>
{
fn
default
()
->
Self
{
let
param_names
=
G
::
Parameters
::
names
()
.to_vec
();
let
param_values
:
Vec
<
f32
>
=
param_names
.iter
()
.map
(|
s
|
G
::
Parameters
::
default_value
(
s
))
.collect
();
let
param_map
=
make_param_map
(
&
param_names
,
&
param_values
);
let
param_values
:
Vec
<
f32
>
=
G
::
Parameters
::
names
()
.iter
()
.map
(|
s
|
G
::
Parameters
::
default_value
(
s
))
.collect
();
let
param_map
=
make_param_map
(
G
::
Parameters
::
names
(),
&
param_values
);
let
cache
=
(
0
..
128
)
.map
(|
tone
|
SoundCache
::
new
(
tone
))
.collect
();
...
...
@@ -165,7 +163,6 @@ impl<G: SoundGenerator, S: SynthInfo> Default for SynthPlugin<G, S> {
cache
:
RwLock
::
new
(
cache
),
sound_params
:
G
::
Parameters
::
build
(
&
param_map
,
sample_rate
),
param_names
:
param_names
,
param_values
:
param_values
,
param_map
:
RwLock
::
new
(
param_map
),
...
...
@@ -188,7 +185,7 @@ impl<G: SoundGenerator, S: SynthInfo> Plugin for SynthPlugin<G, S> {
fn
get_info
(
&
self
)
->
Info
{
Info
{
presets
:
0
,
parameters
:
self
.param_
names
.len
()
as
i32
,
parameters
:
G
::
Parameters
::
names
()
.len
()
as
i32
,
inputs
:
0
,
outputs
:
2
,
category
:
Category
::
Synth
,
...
...
@@ -239,17 +236,17 @@ impl<G: SoundGenerator, S: SynthInfo> Plugin for SynthPlugin<G, S> {
}
fn
get_parameter_name
(
&
self
,
index
:
i32
)
->
String
{
self
.param_
names
[
index
as
usize
]
.to_string
()
G
::
Parameters
::
names
()
[
index
as
usize
]
.to_string
()
}
fn
get_parameter_text
(
&
self
,
index
:
i32
)
->
String
{
let
param_map
:
&
HashMap
<&
'static
str
,
f32
>
=
&
self
.param_map
.read
()
.unwrap
();
self
.sound_params
.display
(
self
.param_
names
[
index
as
usize
],
param_map
)
.0
self
.sound_params
.display
(
G
::
Parameters
::
names
()
[
index
as
usize
],
param_map
)
.0
}
fn
get_parameter_label
(
&
self
,
index
:
i32
)
->
String
{
let
param_map
:
&
HashMap
<&
'static
str
,
f32
>
=
&
self
.param_map
.read
()
.unwrap
();
self
.sound_params
.display
(
self
.param_
names
[
index
as
usize
],
param_map
)
.1
self
.sound_params
.display
(
G
::
Parameters
::
names
()
[
index
as
usize
],
param_map
)
.1
}
fn
get_parameter
(
&
self
,
index
:
i32
)
->
f32
{
...
...
@@ -260,8 +257,8 @@ impl<G: SoundGenerator, S: SynthInfo> Plugin for SynthPlugin<G, S> {
self
.param_values
[
index
as
usize
]
=
value
;
if
let
Some
(
ref
mut
host
)
=
self
.host
{
for
name
in
G
::
Parameters
::
influence
(
self
.param_
names
[
index
as
usize
])
{
if
let
Some
(
p
)
=
self
.param_
names
.iter
()
.position
(|
n
|
*
n
==
name
)
{
for
name
in
G
::
Parameters
::
influence
(
G
::
Parameters
::
names
()
[
index
as
usize
])
{
if
let
Some
(
p
)
=
G
::
Parameters
::
names
()
.iter
()
.position
(|
n
|
*
n
==
name
)
{
self
.param_values
[
p
]
=
infinitesimal_change
(
self
.param_values
[
p
])
.min
(
1.0
);
host
.automate
(
p
as
i32
,
self
.param_values
[
p
]);
}
...
...
@@ -319,7 +316,7 @@ impl<G: SoundGenerator, S: SynthInfo> SynthPlugin<G, S> {
fn
build_sound_params
(
&
mut
self
)
{
let
param_map
:
&
mut
HashMap
<&
'static
str
,
f32
>
=
&
mut
self
.param_map
.write
()
.unwrap
();
*
param_map
=
make_param_map
(
&
self
.param_
names
,
&
self
.param_values
);
*
param_map
=
make_param_map
(
G
::
Parameters
::
names
()
,
&
self
.param_values
);
let
new_sound_params
=
G
::
Parameters
::
build
(
param_map
,
self
.sample_rate
);
if
new_sound_params
!=
self
.sound_params
{
let
cache
:
&
mut
Vec
<
SoundCache
<
G
>>
=
&
mut
self
.cache
.write
()
.unwrap
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment