Also: - Also add ControlValueDials for a-rate control ports (and make them exposeable). - Fix exception in UI when removing nodes with connections. - Fix exception in PluginHost when cleaning up some LV2 plugins. - Dump audio engine opcode list to log.looper
parent
901ed7e066
commit
6d52afb424
@ -0,0 +1,55 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
@begin:license
|
||||
|
||||
Copyright (c) 2015-2019, Benjamin Niemann <pink@odahoda.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
@end:license
|
||||
-->
|
||||
|
||||
<csound>
|
||||
<display-name>LFO (a-rate)</display-name>
|
||||
<ports>
|
||||
<port name="out" type="aratecontrol" direction="output"/>
|
||||
<port name="freq" type="kratecontrol" direction="input">
|
||||
<float-control min="0" max="1000" default="1"/>
|
||||
<display-name>Frequency</display-name>
|
||||
</port>
|
||||
<port name="amp" type="kratecontrol" direction="input">
|
||||
<float-control min="0" max="1" default="1"/>
|
||||
<display-name>Amplitude</display-name>
|
||||
</port>
|
||||
</ports>
|
||||
<orchestra>
|
||||
0dbfs = 1.0
|
||||
ksmps = 32
|
||||
nchnls = 2
|
||||
|
||||
gaOut chnexport "out", 2
|
||||
gkFreq chnexport "freq", 1
|
||||
gkAmp chnexport "amp", 1
|
||||
|
||||
instr 1
|
||||
gaOut = lfo(gkAmp, gkFreq, 4)
|
||||
endin
|
||||
|
||||
</orchestra>
|
||||
<score>
|
||||
i1 0 -1
|
||||
</score>
|
||||
</csound>
|
@ -0,0 +1,55 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
@begin:license
|
||||
|
||||
Copyright (c) 2015-2019, Benjamin Niemann <pink@odahoda.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
@end:license
|
||||
-->
|
||||
|
||||
<csound>
|
||||
<display-name>LFO (k-rate)</display-name>
|
||||
<ports>
|
||||
<port name="out" type="kratecontrol" direction="output"/>
|
||||
<port name="freq" type="kratecontrol" direction="input">
|
||||
<float-control min="0" max="1000" default="1"/>
|
||||
<display-name>Frequency</display-name>
|
||||
</port>
|
||||
<port name="amp" type="kratecontrol" direction="input">
|
||||
<float-control min="0" max="1" default="1"/>
|
||||
<display-name>Amplitude</display-name>
|
||||
</port>
|
||||
</ports>
|
||||
<orchestra>
|
||||
0dbfs = 1.0
|
||||
ksmps = 32
|
||||
nchnls = 2
|
||||
|
||||
gkOut chnexport "out", 2
|
||||
gkFreq chnexport "freq", 1
|
||||
gkAmp chnexport "amp", 1
|
||||
|
||||
instr 1
|
||||
gkOut = lfo(gkAmp, gkFreq, 4)
|
||||
endin
|
||||
|
||||
</orchestra>
|
||||
<score>
|
||||
i1 0 -1
|
||||
</score>
|
||||
</csound>
|
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* @begin:license
|
||||
*
|
||||
* Copyright (c) 2015-2019, Benjamin Niemann <pink@odahoda.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* @end:license
|
||||
*/
|
||||
|
||||
syntax = "proto2";
|
||||
|
||||
package noisicaa.pb;
|
||||
|
||||
message NodePortProperties {
|
||||
optional string name = 1;
|
||||
optional bool exposed = 2;
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
# @begin:license
|
||||
#
|
||||
# Copyright (c) 2015-2019, Benjamin Niemann <pink@odahoda.de>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# @end:license
|
||||
|
||||
from google.protobuf import message as protobuf
|
||||
|
||||
from noisicaa import audioproc
|
||||
from . import model_base
|
||||
|
||||
|
||||
class NodePortProperties(model_base.ProtoValue):
|
||||
def __init__(self, name: str, *, exposed: bool = False) -> None:
|
||||
self.__name = name
|
||||
self.__exposed = exposed
|
||||
|
||||
def __str__(self) -> str:
|
||||
return '<%s exposed=%s>' % (self.__name, self.__exposed)
|
||||
__repr__ = __str__
|
||||
|
||||
def to_proto(self) -> audioproc.NodePortProperties:
|
||||
return audioproc.NodePortProperties(
|
||||
name=self.__name,
|
||||
exposed=self.__exposed)
|
||||
|
||||
@classmethod
|
||||
def from_proto(cls, pb: protobuf.Message) -> 'NodePortProperties':
|
||||
if not isinstance(pb, audioproc.NodePortProperties):
|
||||
raise TypeError(type(pb).__name__)
|
||||
return NodePortProperties(
|
||||
name=pb.name,
|
||||
exposed=pb.exposed)
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self.__name
|
||||
|
||||
@property
|
||||
def exposed(self) -> bool:
|
||||
return self.__exposed
|
||||
|
||||
def __eq__(self, other: object) -> bool:
|
||||
if not isinstance(other, NodePortProperties):
|
||||
return False
|
||||
|
||||
return (
|
||||
self.__name == other.__name
|
||||
and self.__exposed == other.__exposed)
|