forked from ReaTeam/ReaScripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspk77_Set track names to source filename (remove extension).eel
64 lines (56 loc) · 2.04 KB
/
spk77_Set track names to source filename (remove extension).eel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* ReaScript Name: Set track names to source filename (remove extension)
* EEL script for Cockos REAPER
* Author: spk77
* Author URI: http://forum.cockos.com/member.php?u=49553
* Licence: GPL v3
* Version: 1.0
*/
// Rename tracks to source filename (optionally remove file ext. from name) - EEL script by spk77 21.8.2014
// Tracks with in-project MIDI -> uses "active take's name" for renaming
//
// Version: 0.2014.8.21
//// FUNCTION get_filename(path, remove_ext) ////
// - extracts "filename" from "full path name"
// - second param == 1 -> remove file extension
function get_filename(path, remove_ext) local (i, char, char_s)
(
i = 0;
loop(strlen(path),
char = str_getchar(path, i); // get chars one by one
char_s = sprintf(#, "%c", char); // convert char -> str
#fn += char_s; // append char to #fn
// find the last "\" and "/" from "full path name":
// (probably have to use "match("/", char_s)" for Mac ?)
match("\\", char_s) || match("/", char_s) ? #fn = ""; // match == True -> clear #fn
i += 1;
);
remove_ext ? str_setlen(#fn, strlen(#fn) - 4); // remove last 4 chars (if func param 2 == 1)
#fn; // return #fn - it's (also) a global variable
);
function main() local (t_i, tr, first_item, pcm_source, fn, tr_name)
(
(sel_track_count = CountSelectedTracks(0)) ? (
t_i = 0;
tr_name = "";
Undo_BeginBlock();
loop(sel_track_count,
(tr = GetSelectedTrack(0, t_i)) ? (
CountTrackMediaItems(tr) ? (
(first_item = GetTrackMediaItem(tr, 0)) ? (
(pcm_source = GetMediaItemTake_Source(GetActiveTake(first_item))) ? (
GetMediaSourceFileName(pcm_source, fn);
tr_name = get_filename(fn, 1);
);
tr_name != "" ? GetTakeName(tr_name, GetActiveTake(first_item));
tr_name != "" ? GetSetMediaTrackInfo_String(tr, "P_NAME", tr_name, 1);
);
);
);
t_i += 1;
);
Undo_EndBlock("Rename tracks", -1);
//TrackList_AdjustWindows(0);
);
);
main();