1
00:00:00,151 --> 00:00:05,014
HI, this is X-Raym, for the 7th part
of our ReaScript Course.
2
00:00:05,015 --> 00:00:10,108
In this episode, will wee learn how to get an item,
according to its position on its parent track.
3
00:00:10,109 --> 00:00:16,504
Imagine that I want to restrict our script
on items on selected tracks
4
00:00:16,505 --> 00:00:18,707
but still in time selection.
5
00:00:18,708 --> 00:00:21,314
I will have to get my items
in a different way.
6
00:00:21,315 --> 00:00:28,523
But before going further, I will clean the
script a bit by create a new functions.
7
00:00:32,744 --> 00:00:35,828
I will call it Action.
8
00:00:37,057 --> 00:00:42,621
I delete my warning messages,
we don't need it anymore.
9
00:00:46,822 --> 00:00:51,270
So Main here will check if our action
can be executed,
10
00:00:51,271 --> 00:00:55,775
And we will create a new function
called Action.
11
00:01:13,429 --> 00:01:17,087
I check if the script still works.
12
00:01:20,305 --> 00:01:24,028
It seems to work fine, I can
continue from here.
13
00:01:24,029 --> 00:01:26,987
I want to consider only
selected tracks.
14
00:01:26,988 --> 00:01:31,554
I will have to make a loop
from selected tracks.
15
00:01:33,869 --> 00:01:36,839
Count... sel... tracks...
16
00:01:36,968 --> 00:01:39,387
I search for the function...
17
00:01:49,186 --> 00:01:54,377
I paste it here.
The project is 0.
18
00:01:55,420 --> 00:02:00,294
For every selected tracks...
19
00:02:04,179 --> 00:02:07,203
count_sel_tracks - 1
20
00:02:07,204 --> 00:02:09,009
do
21
00:02:09,011 --> 00:02:11,023
I add end
22
00:02:11,859 --> 00:02:14,732
For every track selected,
23
00:02:15,112 --> 00:02:19,715
we will get the track,
24
00:02:20,795 --> 00:02:24,140
"get sel track"
25
00:02:28,180 --> 00:02:32,690
This function to return a track
26
00:02:33,460 --> 00:02:37,027
according to it's index in selection.
27
00:02:37,435 --> 00:02:41,197
We already saw the equivalent function
for selected items.
28
00:02:41,198 --> 00:02:42,892
I put j
29
00:02:42,893 --> 00:02:46,140
The loop look for selected track.
30
00:02:46,141 --> 00:02:49,210
I will count the number of items they have.
31
00:02:52,251 --> 00:02:54,530
Count item
32
00:02:54,531 --> 00:03:01,758
CountTrackMedialtems which allows
to count the number of items on the track.
33
00:03:02,312 --> 00:03:07,734
I will create the variable
count_items_on_tracks
34
00:03:09,720 --> 00:03:13,385
Here, I have to put a track,
35
00:03:13,386 --> 00:03:16,655
and this track came from
my variable named track
36
00:03:20,656 --> 00:03:25,763
For every item on the track
37
00:03:35,094 --> 00:03:37,292
do the following thing,
38
00:03:40,013 --> 00:03:47,419
Get the item according to
it's index on the track.
39
00:03:50,630 --> 00:03:52,494
Here is the function.
40
00:03:54,134 --> 00:04:01,928
This track return an item according to
a track and a index on that track.
41
00:04:01,929 --> 00:04:05,121
The track still came
from the variable track,
42
00:04:05,122 --> 00:04:09,366
and the item index is defined by the loop
which starts here.
43
00:04:09,367 --> 00:04:11,487
So, I put i.
44
00:04:13,036 --> 00:04:15,286
I don't need this anymore.
45
00:04:15,287 --> 00:04:18,947
I can delete this.
46
00:04:18,947 --> 00:04:23,260
And all this is the same thing...
47
00:04:38,976 --> 00:04:46,323
Recap: the Action function will,
for every selected tracks,
48
00:04:46,324 --> 00:04:52,843
check all their items, and if an
item is inside the time selection
49
00:04:52,844 --> 00:04:55,641
then a new fade-out
length value will be set.
50
00:04:55,642 --> 00:05:01,954
This value came from the
item under mouse.
51
00:05:01,955 --> 00:05:04,429
I run the script to see.
52
00:05:06,053 --> 00:05:08,510
I set a fade here.
53
00:05:09,526 --> 00:05:11,565
And I check.
54
00:05:12,257 --> 00:05:17,206
We see that it does nothing.
55
00:05:17,766 --> 00:05:22,680
If I select this track,
the fade-out length value get propagated
56
00:05:22,681 --> 00:05:25,765
on items on selected tracks
which are in time selection.
57
00:05:25,766 --> 00:05:28,372
If I select this 3 tracks...
58
00:05:29,854 --> 00:05:32,085
We see that it works as expected.
59
00:05:32,086 --> 00:05:34,449
The loop could be a bit more optimized.
60
00:05:34,450 --> 00:05:40,227
Indeed, we don't need to check the items
that are after the time selection.
61
00:05:40,228 --> 00:05:43,321
I can do the following thing:
62
00:05:45,070 --> 00:05:46,643
if
63
00:05:46,644 --> 00:05:50,107
If item_pos
64
00:05:50,108 --> 00:05:56,082
is after the end of the time selection,
65
00:05:58,576 --> 00:06:00,506
then
66
00:06:00,507 --> 00:06:04,309
break, in other words
"Break the loop"
67
00:06:04,463 --> 00:06:06,448
else
68
00:06:08,150 --> 00:06:10,597
modify the items as desired.
69
00:06:10,974 --> 00:06:17,014
Break allows to stop on loop
so that it doesn't get executed unecessary.
70
00:06:17,605 --> 00:06:21,088
I will display i
71
00:06:22,895 --> 00:06:25,842
I will display i and j in the console.
72
00:06:25,843 --> 00:06:31,416
I duplicated some items,
and I run the script.
73
00:06:33,207 --> 00:06:37,758
As you can see, this doesn't consider the
other items (aka, beyond time selection).
74
00:06:37,759 --> 00:06:41,187
If I delete break,
75
00:06:47,754 --> 00:06:52,602
You can see that all items on selected
tracks have been unecessary checked.
76
00:06:52,603 --> 00:06:59,376
Break allows to save a bit of performance when
it is not necessary to calculate certain things.
77
00:06:59,377 --> 00:07:02,754
Our function check the first item,
78
00:07:02,755 --> 00:07:07,573
then the next item, and if its position is
after the end of time selection
79
00:07:07,574 --> 00:07:10,923
which means that every items after
this one will be in the same case,
80
00:07:10,924 --> 00:07:17,689
So no need to check their position and their
end to see if they are in time selection.
81
00:07:17,690 --> 00:07:22,643
In the next items, we will see how to use
a REAPER native function inside a script.