Hi everyone, this is X-Raym, for the 6th part of our ReaScript tutorial.
Imagine that we want our previous transformation to be applied
on items in time selection rather than on selected one
I clean that... car we will start where we stopped.
In order to get items in time selection,
I will search in the doc how to get this time selection.
I take the second function, as it is more complete.
I paste it here.
I clean up a bit before renaming the variables.
I add = here...
Current project is 0
Set means that you can define new values, or get the actual ones.
It expect a bolean value, so I writte false (for Get.)
I don't want to define a new selection.
IsLoop is false too, as I want the Time selection.
For Loop, it would be true.
Here I put 0 cause it needs a number, and here too.
And here I set false.
GetSet_LoopTimeRange2 returns two values
I name the first start_time, and the second end_time.
Reacap: I use GetSet_LoopTimeRange2 to get start and end time of the time selection
without setting new value.
And here I have to set 0 because this function expect number as 4th and 5th argument,
but it will have no influence on the returned values.
If there is no time selection, start_time and end_time will be equal.
So, I will add a conditions.
If start_time is different than end_time
in other words, if there is a time selection,
then, run the following part.
Now I will have to get the items that are in time selection.
I will first put a function to count the number of items in the project.
CountMedialtems
I name my variable count_items, I paste this. I set 0 for current project.
I create a loop.
For i = 0, count_items - 1, - 1 because we start i at 0
do Reaper. SetMedialtemlnfo_Value()
as third parameters, I set the new value, which is item_mouse_fadeout
We will create the variable item,
and to get an item based on is index in the project, it is GetMedialtem
project is 0, and inddex integer is i, our incrementation variable.
I will add else to display a message if there is no time selection.
As you can see, if start_time is different than
end_time aka, if there is a time selection,
all this get executed, else a message will be displayed in the console.
If delete the time selection and put the mouse under no item
A message told me that I don't have any item under the mouse.
If I execute the script over an item, but without time selection, a message will warn me.
If I make a time selection, and that I run the script hover an item.
It works. However, at this time, I didn't make any conditions to check if the item is in time selection or not,
to check if we modify its fade-out length value or not.
As you can see, the script has an effect an all items, in time selection or not.
I will have to get the items position and its length and
add a new conditions, before modify their fade-out length.
Item_pos =
I copy that.
The position is "D_POSITION. It is not
I duplicate and I rename it to item_length
length parameter is "D_LENGTH"...
This parameters value can be find in the doc at GetMedialtemlnfo_Value
here are "D_POSITION" and "D_LENGTH"
There is not Item End parameter, so I will create a small calculation...
item_end = item_pos + item_len
Now I have to check that item start (item pos) and item end are in the time selection
I will write the following condition:
if...then... I prepare the room...
If... item position is after than time selection start...
and that item position is before than time selection end...
I put that bewteen parenthis as all that should be compared to another possibilities...
OR (of if)
item end is after time selection start, and before end of time selection
Then run the set fade-out length function.
It is a complicated condition, but we only try to find ways
to see if an item is inside the time selection or not.
Let's analyse the function. It tells the following thing:
if item position is after time selection start and below time selection end,
it means that if the item position is between here and here, the set functions is executed.
Indeed, the item belong to the time selection.
2nd conditions: or if the item end is after time selection start
and before time selection end, the set function is executed.
There is a 3rd case.
If item start is before time selection start and item end is after time selection end,
I will add this other condition...
If item pos is before time selection start, and if item end is after time selection end
I put in place the third case described...
If item is at time selection start, end, all over, or outside
I set fades.
And I run this script, from this item.
As you can see, all happend as expected (item under mouse
(fade-out length get propagated to item in time selection).
In the next video, we will see how to get items according to selected tracks,
and we will continue to develop our script in order to learn new functions. See ya!