1 00:00:00,120 --> 00:00:04,520 Hi everyone, this is X-Raym, for the 6th part of our ReaScript tutorial. 2 00:00:04,639 --> 00:00:09,808 Imagine that we want our previous transformation to be applied 3 00:00:09,809 --> 00:00:14,320 on items in time selection rather than on selected one 4 00:00:14,359 --> 00:00:19,399 I clean that... car we will start where we stopped. 5 00:00:20,679 --> 00:00:24,960 In order to get items in time selection, 6 00:00:25,000 --> 00:00:31,399 I will search in the doc how to get this time selection. 7 00:00:38,759 --> 00:00:41,759 I take the second function, as it is more complete. 8 00:00:41,799 --> 00:00:43,959 I paste it here. 9 00:00:45,520 --> 00:00:50,320 I clean up a bit before renaming the variables. 10 00:00:52,039 --> 00:00:54,479 I add = here... 11 00:00:54,520 --> 00:00:59,240 Current project is 0 12 00:00:59,640 --> 00:01:03,799 Set means that you can define new values, or get the actual ones. 13 00:01:03,840 --> 00:01:08,920 It expect a bolean value, so I writte false (for Get.) 14 00:01:09,000 --> 00:01:11,159 I don't want to define a new selection. 15 00:01:11,239 --> 00:01:17,439 IsLoop is false too, as I want the Time selection. 16 00:01:17,519 --> 00:01:19,359 For Loop, it would be true. 17 00:01:19,400 --> 00:01:25,000 Here I put 0 cause it needs a number, and here too. 18 00:01:25,040 --> 00:01:30,080 And here I set false. 19 00:01:30,159 --> 00:01:33,159 GetSet_LoopTimeRange2 returns two values 20 00:01:33,239 --> 00:01:39,919 I name the first start_time, and the second end_time. 21 00:01:39,959 --> 00:01:47,959 Reacap: I use GetSet_LoopTimeRange2 to get start and end time of the time selection 22 00:01:52,079 --> 00:01:56,079 without setting new value. 23 00:01:56,120 --> 00:02:01,640 And here I have to set 0 because this function expect number as 4th and 5th argument, 24 00:02:01,719 --> 00:02:05,640 but it will have no influence on the returned values. 25 00:02:05,680 --> 00:02:11,240 If there is no time selection, start_time and end_time will be equal. 26 00:02:11,280 --> 00:02:13,719 So, I will add a conditions. 27 00:02:17,560 --> 00:02:20,319 If start_time is different than end_time 28 00:02:20,400 --> 00:02:23,800 in other words, if there is a time selection, 29 00:02:23,840 --> 00:02:26,280 then, run the following part. 30 00:02:26,319 --> 00:02:30,879 Now I will have to get the items that are in time selection. 31 00:02:30,960 --> 00:02:34,879 I will first put a function to count the number of items in the project. 32 00:02:42,240 --> 00:02:45,840 CountMedialtems 33 00:02:48,360 --> 00:02:54,640 I name my variable count_items, I paste this. I set 0 for current project. 34 00:02:54,680 --> 00:02:56,599 I create a loop. 35 00:02:59,479 --> 00:03:04,159 For i = 0, count_items - 1, - 1 because we start i at 0 36 00:03:04,199 --> 00:03:12,199 do Reaper. SetMedialtemlnfo_Value() 37 00:03:14,960 --> 00:03:22,080 as third parameters, I set the new value, which is item_mouse_fadeout 38 00:03:23,840 --> 00:03:31,360 We will create the variable item, 39 00:03:33,360 --> 00:03:41,040 and to get an item based on is index in the project, it is GetMedialtem 40 00:03:46,520 --> 00:03:54,520 project is 0, and inddex integer is i, our incrementation variable. 41 00:03:56,400 --> 00:04:04,400 I will add else to display a message if there is no time selection. 42 00:04:07,319 --> 00:04:10,596 As you can see, if start_time is different than 43 00:04:10,597 --> 00:04:13,599 end_time aka, if there is a time selection, 44 00:04:13,639 --> 00:04:18,240 all this get executed, else a message will be displayed in the console. 45 00:04:18,319 --> 00:04:23,079 If delete the time selection and put the mouse under no item 46 00:04:23,319 --> 00:04:25,719 A message told me that I don't have any item under the mouse. 47 00:04:25,759 --> 00:04:32,680 If I execute the script over an item, but without time selection, a message will warn me. 48 00:04:33,319 --> 00:04:37,800 If I make a time selection, and that I run the script hover an item. 49 00:04:37,879 --> 00:04:45,879 It works. However, at this time, I didn't make any conditions to check if the item is in time selection or not, 50 00:04:46,879 --> 00:04:50,360 to check if we modify its fade-out length value or not. 51 00:04:50,439 --> 00:04:54,319 As you can see, the script has an effect an all items, in time selection or not. 52 00:04:54,360 --> 00:04:58,291 I will have to get the items position and its length and 53 00:04:58,292 --> 00:05:02,360 add a new conditions, before modify their fade-out length. 54 00:05:05,040 --> 00:05:07,520 Item_pos = 55 00:05:08,240 --> 00:05:10,360 I copy that. 56 00:05:12,079 --> 00:05:18,959 The position is "D_POSITION. It is not 57 00:05:19,680 --> 00:05:25,879 I duplicate and I rename it to item_length 58 00:05:26,439 --> 00:05:30,879 length parameter is "D_LENGTH"... 59 00:05:30,959 --> 00:05:35,000 This parameters value can be find in the doc at GetMedialtemlnfo_Value 60 00:05:35,040 --> 00:05:36,800 here are "D_POSITION" and "D_LENGTH" 61 00:05:36,879 --> 00:05:41,800 There is not Item End parameter, so I will create a small calculation... 62 00:05:41,839 --> 00:05:49,839 item_end = item_pos + item_len 63 00:05:51,240 --> 00:05:57,360 Now I have to check that item start (item pos) and item end are in the time selection 64 00:05:57,399 --> 00:06:00,239 I will write the following condition: 65 00:06:00,319 --> 00:06:08,319 if...then... I prepare the room... 66 00:06:11,040 --> 00:06:19,040 If... item position is after than time selection start... 67 00:06:24,560 --> 00:06:32,560 and that item position is before than time selection end... 68 00:06:34,839 --> 00:06:41,679 I put that bewteen parenthis as all that should be compared to another possibilities... 69 00:06:41,720 --> 00:06:43,920 OR (of if) 70 00:06:47,439 --> 00:06:55,439 item end is after time selection start, and before end of time selection 71 00:07:13,319 --> 00:07:18,360 Then run the set fade-out length function. 72 00:07:18,439 --> 00:07:22,613 It is a complicated condition, but we only try to find ways 73 00:07:22,614 --> 00:07:26,439 to see if an item is inside the time selection or not. 74 00:07:30,160 --> 00:07:33,360 Let's analyse the function. It tells the following thing: 75 00:07:33,439 --> 00:07:41,439 if item position is after time selection start and below time selection end, 76 00:07:43,519 --> 00:07:47,680 it means that if the item position is between here and here, the set functions is executed. 77 00:07:47,720 --> 00:07:53,120 Indeed, the item belong to the time selection. 78 00:07:53,160 --> 00:07:57,287 2nd conditions: or if the item end is after time selection start 79 00:07:57,288 --> 00:08:01,160 and before time selection end, the set function is executed. 80 00:08:07,120 --> 00:08:10,360 There is a 3rd case. 81 00:08:12,040 --> 00:08:20,040 If item start is before time selection start and item end is after time selection end, 82 00:08:26,720 --> 00:08:31,680 I will add this other condition... 83 00:08:31,759 --> 00:08:39,759 If item pos is before time selection start, and if item end is after time selection end 84 00:08:51,639 --> 00:08:58,520 I put in place the third case described... 85 00:08:59,360 --> 00:09:06,000 If item is at time selection start, end, all over, or outside 86 00:09:07,600 --> 00:09:09,560 I set fades. 87 00:09:10,120 --> 00:09:13,200 And I run this script, from this item. 88 00:09:13,240 --> 00:09:15,480 As you can see, all happend as expected (item under mouse 89 00:09:15,481 --> 00:09:17,762 (fade-out length get propagated to item in time selection). 90 00:09:17,840 --> 00:09:22,920 In the next video, we will see how to get items according to selected tracks, 91 00:09:22,960 --> 00:09:28,000 and we will continue to develop our script in order to learn new functions. See ya!