lmms-devel — Mailinglists for everybody interested in LMMS and its development

You can subscribe to this list here.

 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 Jan Feb Mar Apr May Jun (2) Jul (5) Aug (8) Sep (107) Oct (5) Nov (55) Dec (90) Jan (75) Feb (68) Mar (56) Apr (33) May (47) Jun (57) Jul (109) Aug (81) Sep (79) Oct (21) Nov (30) Dec (65) Jan (30) Feb (54) Mar (34) Apr (71) May (50) Jun (21) Jul (67) Aug (56) Sep (75) Oct (47) Nov (130) Dec (36) Jan (8) Feb (8) Mar (25) Apr (16) May (32) Jun (18) Jul (74) Aug (75) Sep (52) Oct (26) Nov (27) Dec (50) Jan (36) Feb (45) Mar (23) Apr (34) May (158) Jun (110) Jul (42) Aug (24) Sep (51) Oct (73) Nov (83) Dec (33) Jan (16) Feb (11) Mar (41) Apr (29) May (19) Jun (30) Jul (22) Aug (143) Sep (45) Oct (42) Nov (1) Dec (5) Jan (25) Feb (12) Mar (35) Apr (36) May (12) Jun (25) Jul (32) Aug (16) Sep (7) Oct (12) Nov (13) Dec (5) Jan (26) Feb (23) Mar (34) Apr (17) May (31) Jun (3) Jul (3) Aug (1) Sep (39) Oct (50) Nov (46) Dec (21) Jan (85) Feb (54) Mar (6) Apr (9) May (35) Jun (58) Jul (18) Aug (14) Sep (17) Oct (1) Nov (10) Dec (18) Jan (1783) Feb (875) Mar (913) Apr (909) May (575) Jun (345) Jul (410) Aug (417) Sep (160) Oct Nov Dec
S M T W T F S

1
(2)
2
(2)
3
(2)
4

5

6
(1)
7

8

9
(1)
10
(1)
11
(4)
12

13
(2)
14
(4)
15
(1)
16
(1)
17

18

19

20

21
(3)
22
(2)
23
(4)
24

25
(1)
26
(1)
27

28
(1)
29

30

31
(2)

Showing 2 results of 2

 Re: [LMMS-devel] Expected envelope behavior From: John Serafino - 2013-05-13 21:56:12 Attachments: Message as HTML ```Looks good if I understand it. I'm a little unclear on a couple of things though: 1. Order of operations is not 100% clear. Are we doing parenthesis->multiplication(and division)->addition, or something else? I usually just use a million parenthesis. ;) 2. X squared keeping the original sign is not (|x| + x). I'm just assuming that (x^2) means x squared keeping original sign, and not... that other thing. On Mon, May 13, 2013 at 3:48 PM, Paul Giblock wrote: > For anyone interested, here is how I decided to resolve this for the > lmms-lv2 port: > > All three envelopes (vol, cut, res) behave the same: attack controls how > long the envelope takes to reach 100% value, where it says for the length > of hold (or until the note is released). The sustain amount is now a > percentage of the maximum value instead of (1-max) as in LMMS. Thus, decay > is how long it takes to reach the sustain level. Finally, release is how > long it takes for the envelope to reach zero from the current value -- > regardless of the current state of the envelope. This provides a continuous > function, and is in-line with all the descriptions of an AHDSR envelope > that I've read. Note, channel (instrument) volume is not a factor here, > that is performed AFTER mixing all the instrument's notes together. > > The big mystery in LMMS is how this envelope level (assume the output is > between 0 and 1) maps to instrument parameters. For this, we let amt be the > modulation amount (between -1 and 1). lfo_volume is the value of the volume > LFO (between -1 and 1). Also, I use (x^2) as a shorthand for (|x| + x), > that is: x squared, while maintaining the original sign. > > envelope_volume = envelope_level * amt + (1-amt), if amt >= 0 > envelope_volume = envelope_level * amt + 1, otherwise > > volume = (envelope_volume * lfo_volume)^2, if lfo_modulate_env > volume = (envelope_volume + lfo_volume)^2, otherwise > > LMMS, thus maps the envelope value to a velocity quadratically instead of > linear or exponentially. Perhaps due to the perceived volume difference? > Also, the volume envelope "Amount" knob is the ratio of enveloped to > non-enveloped signal -- not the maximum volume. This seems fine to me, > although I might adjust the quadratic mapping to something more musical > such as dB? The cutoff and resonance envelopes do not perform the same > "mixing" operation. Thus, the amt value is actually the magnitude of the > envelope: > > envelope_cut = envelope_level * amt > > cut = knob_cut + (envelope_cut * lfo_cut)^2 * 6000.0, if lfo_modulate_env > cut = knob_cut + (envelope_cut + lfo_cut)^2 * 6000.0, otherwise > > The resonance envelope and LFO behave the same as the cutoff, but is > scaled to 2.0 instead of 6000.0. I personally feel this whole system is > adequate and fairly straight-forward. However, I will try to replace as > many of these magic [0..1] or [-1..1] parameters with proper values and > units. Seconds for attack, hold, decay, release. Percentage for sustain. > Perhaps dB for volume amount and Hz for cutoff -- although that may not be > possible due to the dynamic nature of those two knobs. > > -- Paul > > > ------------------------------------------------------------------------------ > AlienVault Unified Security Management (USM) platform delivers complete > security visibility with the essential security capabilities. Easily and > efficiently configure, manage, and operate all of your security controls > from a single console and one unified framework. Download a free trial. > http://p.sf.net/sfu/alienvault_d2d > _______________________________________________ > LMMS-devel mailing list > LMMS-devel@... > https://lists.sourceforge.net/lists/listinfo/lmms-devel > > -- Johnny ```
 Re: [LMMS-devel] Expected envelope behavior From: Paul Giblock - 2013-05-13 20:48:43 Attachments: Message as HTML ```For anyone interested, here is how I decided to resolve this for the lmms-lv2 port: All three envelopes (vol, cut, res) behave the same: attack controls how long the envelope takes to reach 100% value, where it says for the length of hold (or until the note is released). The sustain amount is now a percentage of the maximum value instead of (1-max) as in LMMS. Thus, decay is how long it takes to reach the sustain level. Finally, release is how long it takes for the envelope to reach zero from the current value -- regardless of the current state of the envelope. This provides a continuous function, and is in-line with all the descriptions of an AHDSR envelope that I've read. Note, channel (instrument) volume is not a factor here, that is performed AFTER mixing all the instrument's notes together. The big mystery in LMMS is how this envelope level (assume the output is between 0 and 1) maps to instrument parameters. For this, we let amt be the modulation amount (between -1 and 1). lfo_volume is the value of the volume LFO (between -1 and 1). Also, I use (x^2) as a shorthand for (|x| + x), that is: x squared, while maintaining the original sign. envelope_volume = envelope_level * amt + (1-amt), if amt >= 0 envelope_volume = envelope_level * amt + 1, otherwise volume = (envelope_volume * lfo_volume)^2, if lfo_modulate_env volume = (envelope_volume + lfo_volume)^2, otherwise LMMS, thus maps the envelope value to a velocity quadratically instead of linear or exponentially. Perhaps due to the perceived volume difference? Also, the volume envelope "Amount" knob is the ratio of enveloped to non-enveloped signal -- not the maximum volume. This seems fine to me, although I might adjust the quadratic mapping to something more musical such as dB? The cutoff and resonance envelopes do not perform the same "mixing" operation. Thus, the amt value is actually the magnitude of the envelope: envelope_cut = envelope_level * amt cut = knob_cut + (envelope_cut * lfo_cut)^2 * 6000.0, if lfo_modulate_env cut = knob_cut + (envelope_cut + lfo_cut)^2 * 6000.0, otherwise The resonance envelope and LFO behave the same as the cutoff, but is scaled to 2.0 instead of 6000.0. I personally feel this whole system is adequate and fairly straight-forward. However, I will try to replace as many of these magic [0..1] or [-1..1] parameters with proper values and units. Seconds for attack, hold, decay, release. Percentage for sustain. Perhaps dB for volume amount and Hz for cutoff -- although that may not be possible due to the dynamic nature of those two knobs. -- Paul ```

Showing 2 results of 2