Answers inline:

On 3/31/19 11:24 PM, Akhilesh Venkatasubramanian wrote:
Hi Josh,

I have some questions regarding how the params.rs code works as I was not
able to find the answers to these online.

*1. *When I run an example to setValueCurve with start_time = 1 with a
duration of 5 (shown here
<https://github.com/JHBalaji/media/blob/master/examples/set_value_curve.rs#L68>),
then after the function is called*, if I print start_time inside the
function SetValueCurveAtTime (which is defined here
<https://github.com/JHBalaji/media/blob/master/audio/src/param.rs#L422-L437>)
in param.rs <http://param.rs> then it shows a value of 44100. How does the
value that I pass as 1s change to 44100?*(Hope I am right in assuming that
the value 1 that I pass is in seconds?). Also, Start_time is set to 88200
if I start from 2s.


The time values are multiplied with the sampling rate, so if the rate is 44100 then a time value of 1 is 44100, two seconds later would be 1*44100 + 2*44100, etc.


2. Because of the above, my automation value also keeps on increasing from
44100. But I have my values function defined as [.5, 1, .5, 0, .5, 1, .5,
0, .5]. Ideally should my *value (automation value) also change within the
value range that I have declared for my values array?S


I think the calculation at https://github.com/JHBalaji/media/blob/4e00b800248dcc07eae729ff95a57b9c5e747efc/audio/src/param.rs#L437 is mixing up time values and tick values, which is leading to the large numbers that you're seeing. The easiest way to do this might be to pass in the sampling rate as an argument to AutomationEvent::run (using block.sampling_rate) so you can divide tick values by the rate (or multiply non-tick values by the rate).

Sample output:

Akhileshs-MBP:media akhilesh$ ./target/debug/set_value_curve

Start Time value: 44100

Current time value: 44100

The value of k is: 0.0

Value of the Automation Value is: 44100.023

The difference in time values is: (Current_tick - start) 0


Start Time value: 44100

Current time value: 44101

The value of k is: 1.6

Value of the Automation Value is: 44101.773

The difference in time values is: (Current_tick - start) 1


Start Time value: 44100

Current time value: 44102

The value of k is: 3.2

Value of the Automation Value is: 44100.223

The difference in time values is: (Current_tick - start) 2


Start Time value: 44100

Current time value: 44103

The value of k is: 4.8

Value of the Automation Value is: 44097.793

The difference in time values is: (Current_tick - start) 3


Start Time value: 44100

Current time value: 44104

The value of k is: 6.4

Value of the Automation Value is: 44103.836

The difference in time values is: (Current_tick - start) 4


Start Time value: 44100

Current time value: 44105

The value of k is: 8.0

Value of the Automation Value is: NaN

The difference in time values is: (Current_tick - start) 5

3. Where should we specify that the automation should stop after the
duration? Inside the example or inside param.rs?

https://github.com/JHBalaji/media/blob/4e00b800248dcc07eae729ff95a57b9c5e747efc/audio/src/param.rs#L332 is called by https://github.com/JHBalaji/media/blob/4e00b800248dcc07eae729ff95a57b9c5e747efc/audio/src/param.rs#L113-L123 to determine if the event is complete or not. Instead of a duration value, your automation event should be storing a second Tick which represents the end of the event that can be returned by that function.



Thanks
Akhilesh


On Sun, Mar 31, 2019 at 3:50 PM Akhilesh Venkatasubramanian <
avenk...@ncsu.edu> wrote:

Hi Josh,

What are your thought on this question :

1. Is it necessary we define and initialize the values and duration
parameter that we are using inside SetValueCurveAtTime inside the struct
Param
<https://github.com/JHBalaji/media/blob/master/audio/src/param.rs#L30>?
We assume that this is not needed as the implementation works without
doing the same (values vector gets passed). But duration gets passed as
Tick(44100)  if we set a startTime as 1.0s. (Which we assume is because
of tick?)


Thanks
Akhilesh

On Mar 31, 2019, at 12:15 AM, Akhilesh Venkatasubramanian <
avenk...@ncsu.edu> wrote:

Josh,

Just one more clarification,

1. Is it necessary we define and initialize the values and duration
parameter that we are using inside SetValueCurveAtTime inside the struct
Param
<https://github.com/JHBalaji/media/blob/master/audio/src/param.rs#L30>?
We assume that this is not needed as the implementation works without
doing the same (values vector gets passed). But duration gets passed as
Tick(44100)  if we set a startTime as 1.0s. (Which we assume is because
of tick?)

Thanks,
Akhilesh

On Sat, Mar 30, 2019 at 11:55 PM Akhilesh Venkatasubramanian <
avenk...@ncsu.edu> wrote:

Hi Josh,

I totally understand. We will try to fix it using the examples you have
provided for now. Anyways, we will be continuing with the project for our
final project so whenever you/your team can validate our implementation, it
would help us proceed if we don't fix the issue by then. Thank you for
doing the same.

Best,
Akhilesh

On Sat, Mar 30, 2019 at 11:27 PM Josh Bowman-Matthews <
j...@joshmatthews.net> wrote:

On 3/30/19 6:20 PM, Akhilesh Venkatasubramanian wrote:
Hi Josh,

1. Yes we are working on the example and have it defined as follows:

https://github.com/JHBalaji/media/blob/master/examples/set_value_curve.rs

Can you tell us if the example we have defined is right? We have
written it
similar to the example you shared with us
<
https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/setValueCurveAtTime

.

2. Our implementation of the SetValueCurveAtTime to this point is as
follows:

https://github.com/JHBalaji/media/blob/master/audio/src/param.rs#L419-L439

As you had mentioned earlier, can you/someone from your team verify if
our
function definition is right? (Specifically for the linear
interpolation
part, that's where we think the mistake is but not sure how to change
it)
as we are getting a few errors while trying to run the example.

I cannot guarantee that anybody will review it before Monday, sorry. You
could try looking at an existing implementation in Firefox for reference:
*

https://searchfox.org/mozilla-central/source/dom/media/webaudio/AudioEventTimeline.h#71-75
*

https://searchfox.org/mozilla-central/source/dom/media/webaudio/AudioEventTimeline.cpp#31-53

Error:

Akhileshs-MBP:media akhilesh$ ./target/debug/set_value_curve

thread 'AudioRenderThread' panicked at 'index out of bounds: the len
is 9
but the index is 9',
/rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f/src/libcore/slice/
mod.rs:2539
:10

note: Run with `RUST_BACKTRACE=1` environment variable to display a
backtrace.

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value:
RecvError', src/libcore/result.rs:997:5

Running with RUST_BACKTRACE=1 will show you the precise line that is
panicking. I suspect you are not dealing with the case where the
duration has been exceeded.


Cheers,
Josh
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo




_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to