Synth Forum

Notifications
Clear all

"Time" Table

15 Posts
5 Users
0 Likes
3,020 Views
Posts: 0
Trusted Member
Topic starter
 

I have created a table of value-to-time references for anything on the Montage that gives you 0-127 to specify a time (AEG or FEG attack time, release time, decay 1 time, etc.)
These values are not in charts, so I determined them by:

  1. Creating a custom sample designed to be played back and give play-back information afterwards.
  2. Creating a custom tool to take a clean lossless noiseless recording of said sample at each “Decay 1” value from 0-127 and analyze it.
  3. Create a table of times for each value from 0 to 127 based on the actual duration of a recording of the custom sample played back on middle C (no filter) and as a measure of its decay slope towards the first level at which only 0’s would be generated for the sound.

    The following table is an “absolute truth” table of how long it takes any sample to reach its goal from its starting point. If the starting point is 100% volume and the goal is 0% volume (a decay from 100% to 0%) then the table gives the times (in seconds) it takes for a sample to attack at 100% and decay to 0%.
    If, instead, the table is used for attack volume, then it is the time it takes for a sample to start at 0% and grow to 100%.

    0.00244193167740210, // 0.
    0.00244193167740210, // 1.
    0.00244193167740210, // 2.
    0.00244193167740210, // 3.
    0.00244193167740210, // 4.
    0.00244193167740210, // 5.
    0.00244193167740210, // 6.
    0.00244193167740210, // 7.
    0.00261846877555113, // 8.
    0.00282245460316108, // 9.
    0.00305774132660094, // 10.
    0.00334440457596978, // 11.
    0.00367889804015335, // 12.
    0.00409514359250760, // 13.
    0.00461000918516310, // 14.
    0.00493278660006597, // 15.
    0.00529045543697958, // 16.
    0.00570835845544099, // 17.
    0.00618391893576022, // 18.
    0.00675665877439957, // 19.
    0.00745491254990072, // 20.
    0.00830675677937940, // 21.
    0.00938766765543054, // 22.
    0.01003191935727380, // 23.
    0.01076820701652326, // 24.
    0.01162153242459373, // 25.
    0.01262812184719633, // 26.
    0.01385770994910102, // 27.
    0.01528185759769411, // 28.
    0.01711202018424430, // 29.
    0.01711202018424430, // 30.
    0.02074188650743502, // 31.
    0.02235418384399598, // 32.
    0.02419886759200751, // 33.
    0.02638222406647436, // 34.
    0.02910605978054987, // 35.
    0.03229548118482205, // 36.
    0.03628117913832200, // 37.
    0.03628117913832200, // 38.
    0.04466783454013416, // 39.
    0.04848870837045114, // 40.
    0.05294639450582093, // 41.
    0.05804988662131520, // 42.
    0.06448979591836734, // 43.
    0.07265306122448979, // 44.
    0.07265306122448979, // 45.
    0.08272108843537415, // 46.
    0.10589278901164187, // 47.
    0.11644567863823164, // 48.
    0.12945484429859658, // 49.
    0.14539682539682539, // 50.
    0.14539682539682539, // 51.
    0.16648311906580113, // 52.
    0.19455782312925171, // 53.
    0.23141243980955192, // 54.
    0.30981595106976351, // 55.
    0.33179063761674327, // 56.
    0.36116355015139023, // 57.
    0.38866213151927437, // 58.
    0.42213151927437642, // 59.
    0.46907067093281446, // 60.
    0.51470474750642403, // 61.
    0.57982009562304859, // 62.
    0.61863716324233864, // 63.
    0.66565080515307873, // 64.
    0.72491424751244116, // 65.
    0.77895691609977324, // 66.
    0.85329113187367522, // 67.
    0.92362811791383215, // 68.
    1.02485235653054008, // 69.
    1.16682872640197277, // 70.
    1.24496805637828123, // 71.
    1.34179848004002000, // 72.
    1.42464696239143440, // 73.
    1.54527054480390813, // 74.
    1.69133786848072565, // 75.
    1.84316410194803537, // 76.
    2.03804381774184229, // 77.
    2.34647139774680324, // 78.
    2.49179138321995453, // 79.
    2.66240362811791353, // 80.
    2.85951260618125858, // 81.
    3.11374149659863964, // 82.
    3.41294915625334072, // 83.
    3.72701535533836381, // 84.
    4.09762318692712757, // 85.
    4.72184231881892202, // 86.
    4.94857142857142840, // 87.
    5.33396825396825403, // 88.
    5.70301895919866730, // 89.
    6.18693877551020410, // 90.
    6.74716089571089928, // 91.
    7.32118236371994602, // 92.
    8.19746031746031711, // 93.
    9.16241888434402263, // 94.
    9.88444912893445249, // 95.
    10.61223627844100825, // 96.
    11.37158378023108440, // 97.
    12.45677647232482954, // 98.
    13.54448979591836810, // 99.
    14.78941212746775946, // 100.
    16.42449565471272876, // 101.
    18.59501028072905271, // 102.
    19.80271938037330770, // 103.
    21.15374304110610737, // 104.
    22.92719425644202147, // 105.
    24.64145597809787702, // 106.
    27.14213151927437551, // 107.
    29.94791810883801375, // 108.
    32.99797613048176004, // 109.
    37.24090702947845699, // 110.
    39.68498866213151643, // 111.
    42.35100854779539503, // 112.
    46.03379693447248400, // 113.
    49.82310306909612052, // 114.
    54.70849519369298264, // 115.
    59.95242153963930321, // 116.
    66.63731787384445227, // 117.
    74.90095949276521026, // 118.
    79.95706134419600630, // 119.
    84.87356433995135774, // 120.
    91.06702947845805340, // 121.
    98.80086249651294850, // 122.
    109.06185925201782538, // 123.
    120.91122564830638453, // 124.
    133.30267573696144723, // 125.
    132.03992302741804110, // 126.
    133.42939240517256394, // 127.

    L. Spiro

     
Posted : 29/04/2018 7:17 am
Jason
Posts: 7910
Illustrious Member
 

So, to be clear, your setup has each of these tests at the same AD1D2R levels (levels for each are static?) and only the Decay 1 TIME value is altered? If so, it would be good to have the A, D1, D2, R levels spelled out since time has been previously stated as a factor of level "distance".

There's similar work that was done on the DX7 ADSR "curves" in order to get the emulation right -- and I would expect some amount of parity (result matching) with that work.

 
Posted : 29/04/2018 7:12 pm
Phil
 Phil
Posts: 116
Estimable Member
 

Why are the times for MIDI entry numbers 1 thru 7 producing the same time results? Are you sure this is accurate or has yamaha just filled in the "Dead Spot" at the 1st 7 digits with 7 digits even though no movement occurs?

 
Posted : 29/04/2018 9:57 pm
Martin
Posts: 0
Eminent Member
 

The overdone accuracy of these numbers is rather meaningless.

 
Posted : 30/04/2018 4:55 pm
Martin
Posts: 0
Eminent Member
 

A table in rounded milliseconds would be good enough for practical use. Your numbers suggest more accuracy than can ever be measured.

 
Posted : 30/04/2018 5:01 pm
Martin
Posts: 0
Eminent Member
 

Are the numbers the same for rising (attack) and falling (decay) envelope stages? For many Yamaha synths there is a difference. How is this with the Montage?

 
Posted : 30/04/2018 5:04 pm
Posts: 0
Trusted Member
Topic starter
 

Times measured here were done where [A, D1, D1, R] times = [0, X, 0, 0] and [A, D1, D1, R] levels = [7F, 0, 0, 0].

Phil, the first 8 times are the same, confirmed multiple times with multiple algorithms and multiple sessions. Similarly, it is not an error that 37 and 38 are the same, 50 and 51, etc. Multiple different recording sessions and algorithms verified this as well.

Martin, IEEE 754 gives 64-bit doubles 17 significant decimal digits of precision, so I print 17 digits and don’t worry about the details. The measurements are not more than can be measured; this table is a result of measuring slopes of decaying signals.

As mentioned, this was done with multiple data points. I used a custom sample designed to “draw” the slope of sound as it is played back so that I can precisely measure the signal as it decays. The decay is linear (converting from log10() space to linear space gives a decay marked by a straight line) so the main algorithm finds the beginning of the sound, uses the fact that the decay is linear to register it as a linear equation, and uses the shape of the custom sample to select data points that most-accurately define the linear equation.

To determine the duration of playback based on the decay slope it becomes a matter of intersecting a line segment with an “absolute silence” value. Absolute silence is -∞ (negative infinity).

Mathematically the signal never decays to actual silence, but once it decays enough that all resulting output samples get rounded down to 0 in the WAV file then it is the same as absolute silence, so I only need to select the level after which all samples get rounded to 0.

Each recording is preceded and followed by silence, which means it is also possible to check how long each is just by checking the WAV file, but even if you disable reverb and all effects there is still some kind of artifact noise that can slightly vary the data. That’s why multiple data points were used here.

The slope of the decay coupled with the only meaningful intersection point gives a time more accurate than 44,100 Hz. The actual duration of samples surrounded by silence helps check the results and gives matter-of-fact “This is the actual length of an actual recording with this setting” value for comparison, and multiple algorithms were used to find the most robust modeling of the decay slope, including linear regression.

Based off my other experiments, I currently believe that these times are used across-the-board (attack, decay, and release), but I have not measured the whole range of “Attack” values (but I have measured some of the very small ones).
I might measure Attack separately and am working on measuring the Hz on vibrato and similar.

L. Spiro

 
Posted : 01/05/2018 3:13 am
Posts: 0
Trusted Member
Topic starter
 

I can’t edit posts anymore.
Obviously I meant [A, D1, D2, R]

L. Spiro

 
Posted : 01/05/2018 3:14 am
Jason
Posts: 7910
Illustrious Member
 

I stated the levels incorrectly. Would be, for AWM2 AEG: Initial, Attack, Decay1, and Decay2

 
Posted : 01/05/2018 4:01 am
Posts: 0
Trusted Member
Topic starter
 

Initial was set to 0.

L. Spiro

 
Posted : 01/05/2018 4:45 am
Phil
 Phil
Posts: 116
Estimable Member
 

Hi Shawn. I really appreciate the time and effort you spent on this!
I started to count-off the longest time on the AMP release envelope using only approximate measurements with a stop watch.
I had the system gain very high through the entire electronics and to the speakers, except that I kept the volume low initially because I made a custom single element sine wave part and then raised the volumes as the signal faded. I wanted the entire signal chain high so, that I could listen closely as the AMP ENV approached silence.
When I could no longer hear anything, even at potentially dangerous levels, I watched the "element indicator light" and was surprised that it remained actively lit for many minutes. Sorry I did not time it but, I believe you see what I'm getting at.
What does the element light reflect, what is it's actual behavior?

 
Posted : 02/05/2018 6:44 pm
Jason
Posts: 7910
Illustrious Member
 

The sample itself can be high amplitude or low amplitude. Like you can record a whisper or a scream into a tape recorder and with the volume set at the same level - the scream may distort the speakers and be loud while the whisper is hardly audible. I'm wondering if the element light is looking at the resulting output (which you're assuming if you think the light should be off when you hear nothing) or if it's looking not at the sample - but at what the envelopes and loop points would present for any sample (no matter if a whisper or a scream). You should be able to determine this by level adjusting a sample with the same loop points and same content -- but level reduce one vs. another using some sample editing software. Load them both in and see if the light fades any quicker for the "whisper" sample vs the "scream" sample. -- if not then the element activity is showing a technical ON vs. an audible ON. And if the element is ON (independent if you can hear it or not) - it's consuming polyphony.

Also, so everyone is on the same "page" - it's good to use standard terms for things. I didn't see "element indicator" as a reference from Yamaha - but did see "element activity". Once as "element activity indicators" and once as "element activity light". Advocating aligning on the terms so when we search for the term -- all references to the same thing are returned.

I didn't see the "element activity" dots defined or referenced in any of the manuals (owners, reference, supplementary, data list, parameter).

 
Posted : 02/05/2018 10:13 pm
Posts: 0
Trusted Member
Topic starter
 

Attack values are not the same.
Here is the table for Attack:
Time Values:
[Attack = X, Decay 1 = 0, Decay 2 = 0; Release = 0]
Level Values.
[Initial = 0, Attack = 7F, Decay 1 = 0, Decay 2 = 0; Release = 0]

0.00002267573696145, // 0.
0.00217687074829932, // 1.
0.00217687074829932, // 2.
0.00217687074829932, // 3.
0.00217687074829932, // 4.
0.00217687074829932, // 5.
0.00217687074829932, // 6.
0.00217687074829932, // 7.
0.00217687074829932, // 8.
0.00217687074829932, // 9.
0.00217687074829932, // 10.
0.00217687074829932, // 11.
0.00222222222222222, // 12.
0.00222222222222222, // 13.
0.00226757369614512, // 14.
0.00226757369614512, // 15.
0.00231292517006803, // 16.
0.00235827664399093, // 17.
0.00235827664399093, // 18.
0.00244897959183673, // 19.
0.00249433106575964, // 20.
0.00253968253968254, // 21.
0.00263038548752834, // 22.
0.00272108843537415, // 23.
0.00276643990929705, // 24.
0.00285714285714286, // 25.
0.00299319727891156, // 26.
0.00312925170068027, // 27.
0.00326530612244898, // 28.
0.00340136054421769, // 29.
0.00358276643990930, // 30.
0.00376417233560091, // 31.
0.00399092970521542, // 32.
0.00417233560090703, // 33.
0.00444444444444444, // 34.
0.00476190476190476, // 35.
0.00503401360544218, // 36.
0.00539682539682540, // 37.
0.00580498866213152, // 38.
0.00630385487528345, // 39.
0.00671201814058957, // 40.
0.00721088435374150, // 41.
0.00784580498866213, // 42.
0.00852607709750567, // 43.
0.00920634920634921, // 44.
0.01002267573696145, // 45.
0.01097505668934240, // 46.
0.01229024943310658, // 47.
0.01333333333333333, // 48.
0.01464852607709751, // 49.
0.01614512471655329, // 50.
0.01800453514739229, // 51.
0.01963718820861678, // 52.
0.02208616780045352, // 53.
0.02517006802721088, // 54.
0.02947845804988662, // 55.
0.03224489795918367, // 56.
0.03564625850340136, // 57.
0.03941043083900227, // 58.
0.04498866213151927, // 59.
0.04879818594104308, // 60.
0.05337868480725624, // 61.
0.06036281179138322, // 62.
0.06734693877551021, // 63.
0.07342403628117913, // 64.
0.07945578231292517, // 65.
0.08839002267573697, // 66.
0.09755102040816327, // 67.
0.10539682539682539, // 68.
0.11863945578231293, // 69.
0.13024943310657597, // 70.
0.14625850340136054, // 71.
0.15510204081632653, // 72.
0.16775510204081634, // 73.
0.18448979591836734, // 74.
0.20263038548752835, // 75.
0.22430839002267575, // 76.
0.24385487528344671, // 77.
0.26625850340136054, // 78.
0.29160997732426303, // 79.
0.32453514739229022, // 80.
0.34662131519274375, // 81.
0.37814058956916102, // 82.
0.42004535147392291, // 83.
0.46589569160997735, // 84.
0.50421768707482995, // 85.
0.55401360544217682, // 86.
0.61174603174603170, // 87.
0.65170068027210881, // 88.
0.71437641723356005, // 89.
0.78671201814058955, // 90.
0.84693877551020413, // 91.
0.92671201814058957, // 92.
1.01755102040816325, // 93.
1.10526077097505659, // 94.
1.22022675736961461, // 95.
1.32022675736961448, // 96.
1.42675736961451238, // 97.
1.56235827664399096, // 98.
1.73764172335600908, // 99.
1.84489795918367339, // 100.
2.02308390022675733, // 101.
2.21682539682539703, // 102.
2.45977324263038533, // 103.
2.63782312925170048, // 104.
2.88108843537414971, // 105.
3.13265306122448983, // 106.
3.46956916099773238, // 107.
3.67972789115646259, // 108.
4.06848072562358265, // 109.
4.50603174603174583, // 110.
4.96643990929705215, // 111.
5.22739229024943342, // 112.
5.78154195011337890, // 113.
6.29346938775510178, // 114.
6.83419501133786866, // 115.
7.38512471655328806, // 116.
8.13596371882086089, // 117.
8.87015873015872991, // 118.
9.73065759637188243, // 119.
10.63972789115646300, // 120.
11.66249433106576028, // 121.
12.52399092970521544, // 122.
13.56580498866213169, // 123.
15.00975056689342324, // 124.
16.16784580498866220, // 125.
18.06666666666666643, // 126.
19.79378684807256406, // 127.

Again, duplicate numbers are not an error; levels 1-8 (inclusive) literally generate the exact same WAV result (meaning the exact same 109 samples regardless of the setting from 1 to 8), and 9, 10, and 11 are different in minor ways but still reach peak amplitude at the same point (even with 0 decay).

L. Spiro

 
Posted : 10/05/2018 2:42 am
Posts: 0
New Member
 

Terrific job!
I am delighted by the test!

 
Posted : 29/05/2019 4:45 pm
Jason
Posts: 7910
Illustrious Member
 

Generalization is difficult to do since times would seem to vary depending on the amplitude of the input stimulus sample. There's not any information here on the stimulus sample - so it's hard to get a feel where these values may rest.

I'm not sure if setting the Audio I/O to 192kHz makes a difference (vs 44.1kHz) or which setting was used for this test. Assuming the two settings yield different results, a first round of tests is probably best at 44.1kHz since most users are using that default initialized mode.

If significant digits presents a crisis for some - you could also represent time in terms of the sample point as an integer and let the user apply formula to arrive at the nominal time using as many decimal places as they see fit for themselves.

 
Posted : 29/05/2019 5:49 pm
Share:

© 2024 Yamaha Corporation of America and Yamaha Corporation. All rights reserved.    Terms of Use | Privacy Policy | Contact Us