Avid Pro Audio Community

Avid Pro Audio Community

How to Join & Post  •  Community Terms of Use  •  Help Us Help You

Knowledge Base Search  •  Community Search  •  Learn & Support


Avid Home Page

Go Back   Avid Pro Audio Community > Dev > Pro Tools Scripting SDK Toolkit

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 03-16-2024, 11:23 AM
GRT GRT is offline
Member
 
Join Date: Mar 2024
Location: Hoofddorp
Posts: 5
Default GetTrackList command still returns an empty array here - Pro Tools 2024.3/SDK 2024.3

Using Node.JS with the modules "@grpc/grpc-js" and "@grpc/proto-loader".

Despite reading in the release notes that the issues with the GetTrackList command are fixed with scripting SDK 2024.3 and Pro Tools 2024.3, I am still getting an emtpy array. Is this command working for someone?

This is one of my responses, which seems complete except for the empty array as there's 8 tracks in the session:
[
{
task_id: 'fef2bd4a-be4e-44b8-af33-bd9cdfc2b54b',
command: 'GetTrackList',
status: 'Completed',
progress: 100
},
{
pagination_response: { total: null, offset: 0, limit: 0 },
track_list: []
},
''
]

I tried all sort of parameter combinations, both the deprecated and current pagination_request parameters, but can't get it to work. But maybe I am missing something? What should the offset and limit be set to, to return all tracks?

For retrieving all Memory Locations I set those values to 0 and that does return all memory locations.
__________________
Geert van den Berg
Reply With Quote
  #2  
Old 03-18-2024, 06:56 AM
Artem Shevchenko's Avatar
Artem Shevchenko Artem Shevchenko is offline
Avid
 
Join Date: Dec 2022
Location: Kyiv, Ukraine 🇺🇦
Posts: 14
Default Re: GetTrackList command still returns an empty array here - Pro Tools 2024.3/SDK 202

Dear Geert van den Berg,

Thank you for reaching out and bringing this issue to our attention.

We would like to inform you that we officially support the C++ client for our SDK. Upon receiving your query, we conducted a thorough check on our end using the C++ client, and we were unable to reproduce the issue mentioned; the GetTrackList command is functioning as expected in our tests. Additionally, to ensure comprehensive coverage, we also attempted to replicate the scenario using a Python-based approach instead of the C++ client. Similarly, we encountered no issues in fetching the track list, which suggests that the problem may not lie within the SDK itself.

Given this situation, it would be immensely helpful if you could provide us with more details about the requests you're making. Specifically, we are interested in how you are forming your requests using the Node.JS environment, including the exact parameters you are passing to the GetTrackList command. Also, please describe what kind of tracks (audio, MIDI, video, etc.) you have in the session. And btw do other commands besides GetTrackList work for you? This information will allow us to better understand the context and potentially identify any discrepancies or specific conditions under which the issue manifests.

Thank you for your cooperation and understanding. We look forward to hearing from you soon.

Best regards,
Artem
Reply With Quote
  #3  
Old 03-18-2024, 08:49 AM
GRT GRT is offline
Member
 
Join Date: Mar 2024
Location: Hoofddorp
Posts: 5
Default Re: GetTrackList command still returns an empty array here - Pro Tools 2024.3/SDK 202

Dear Artem,

Thanks for looking into this issue.

I am forming javascript objects for every command, convert the body to a JSON string and send that to Pro Tools as a grpc request using grpc.js. See my request and responses below.

I am using the gRpc libraries which are in the code suggestions on the gRpc website ("@grpc/grpc-js", "@grpc/proto-loader" which uses "protobuf.js"). To me these libraries seemed to be the best option for gRpc with Node, with relatively recent maintenance updates. I saw there's also a google javascript protobuf library, but there isn't a gRpc library to accompany that and it doesn't have recent maintenance updates).

For testing purposes I have also used the Postman application to send the commands, as it also supports gRpc but this returns the same results. So you could try that for testing purposes. https://blog.postman.com/postman-now-supports-grpc/

The requests that I am sending to retrieve the list are:
{
header: {
command: 'RegisterConnection',
session_id: '',
task_id: '',
version: 3
},
request_body_json: '{"company_name":"Wim Pel Productions","application_name":"WPP"}'
}
[
{
task_id: '22795ad0-2c19-4c2b-9d8e-e1ef306e70de',
command: 'RegisterConnection',
status: 'Completed',
progress: 100
},
{ session_id: '645bc509-9724-4264-9aff-29a0d5be35cb' },
''
]

{
header: {
command: 'GetTrackList',
session_id: '645bc509-9724-4264-9aff-29a0d5be35cb',
task_id: '',
version: 3
},
request_body_json: '{"pagination_request":{"limit":0,"offset":0}}'
}
[
{
task_id: '0d0e5a77-4dcb-4fe0-90f2-d8564d4da2bc',
command: 'GetTrackList',
status: 'Completed',
progress: 100
},
{
pagination_response: { total: null, offset: 0, limit: 0 },
track_list: []
},
''
]

In my test session there are only 8 mono audio tracks. But I have tried variations, for example adding midi tracks.

I have not tried all commands yet, but the other ones I have tried are working: GetSessionName, GetPlaybackMode, SetPlaybackMode, TogglePlayState, CreateNewTracks, SelectTracksByName, CreateMemoryLocation. GetMemoryLocations, GetTimelineSelection.

Specifically GetMemoryLocations is interesting as it also has a pagination_request as part of the request that I am sending and that is returning a response and I copied that initially to form the GetTrackList request body.

{
header: {
command: 'RegisterConnection',
session_id: '',
task_id: '',
version: 3
},
request_body_json: '{"company_name":"Wim Pel Productions","application_name":"WPP"}'
}
[
{
task_id: '70c02135-8b2f-4537-855a-2805ac4c4480',
command: 'RegisterConnection',
status: 'Completed',
progress: 100
},
{ session_id: 'e670d9d7-677d-4b86-8b44-22f0a6154b8e' },
''
]
{
header: {
command: 'GetMemoryLocations',
session_id: 'e670d9d7-677d-4b86-8b44-22f0a6154b8e',
task_id: '',
version: 3
},
request_body_json: '{"pagination_request":{"limit":0,"offset":0}}'
}
[
{
task_id: 'f7d71988-78c4-432b-ab8b-32deabeb74b0',
command: 'GetMemoryLocations',
status: 'Completed',
progress: 100
},
{
pagination_response: { total: 6, offset: 0, limit: 0 },
memory_locations: [ [Object], [Object], [Object], [Object], [Object], [Object] ]
},
{ errors: [ [Object] ] }
]


The response body json (partially, I deleted the other 5 objects/markers) and the response error.
{
pagination_response: { total: 6, offset: 0, limit: 0 },
memory_locations: [
{
number: 10003,
name: '< 0003',
location: 'MLC_Track',
track_name: 'CHARACTER 1',
reference: 'MLR_Absolute',
start_time: '232320',
end_time: '232320',
time_properties: 'TP_Marker',
general_properties: [Object],
comments: 'Character 1 dialogue...',
color_index: 9
}
]
}
{
errors: [
{
command_error_message: 'VENUE is not connected',
is_warning: true,
command_error_type: 'PT_UnknownError'
}
]
}



Off topic: is there a way to prevent the Venue error from occurring in this command?


Best,
Geert
__________________
Geert van den Berg

Last edited by GRT; 03-18-2024 at 09:08 AM.
Reply With Quote
  #4  
Old 03-19-2024, 06:23 AM
Artem Shevchenko's Avatar
Artem Shevchenko Artem Shevchenko is offline
Avid
 
Join Date: Dec 2022
Location: Kyiv, Ukraine 🇺🇦
Posts: 14
Default Re: GetTrackList command still returns an empty array here - Pro Tools 2024.3/SDK 202

Hi Geert,

Thank you for providing detailed information. I suspect the problem might be because the request is being formed directly as JSON, rather than through gRPC structures. Let's examine the proto definition of the GetTrackList command request body:

Code:
message GetTrackListRequestBody
{
	/** 
	* @deprecated since Pro Tools 2023.09, use pagination_request
	*/
	int32 page_limit = 1;

	repeated TrackListInvertibleFilter track_filter_list = 2;
	bool is_filter_list_additive = 3; // TRUE for OR, FALSE for AND
	/** 
	* Supported starting in Pro Tools 2023.09
	* Enable pagination and control limit and offset
	*/
	PaginationRequest pagination_request = 4;
}

message TrackListInvertibleFilter
{
	TrackListFilter filter = 1;
	bool is_inverted = 2;
}

enum TrackListFilter
{
    All = 0;
    Selected = 1;                       // in any way - explicitly or/and implicitly
    SelectedExplicitly = 2;
    SelectedImplicitly = 3;
    WithClipsOnMainPlaylist = 4;
    WithAutomationOnMainPlaylist = 5;
    Inactive = 6;                       // in any way - explicitly or/and implicitly
    InactiveExplicitly = 7;
    InactiveImplicitly = 8;
    Hidden = 9;                         // in any way - explicitly or/and implicitly
    HiddenExplicitly = 10;
    HiddenImplicitly = 11;
    Locked = 12;
    Muted = 13;
    Frozen = 14;
    Open = 15;
    Online = 16;
}

message PaginationRequest
{
	int32 limit = 1;		// maximum length of the list of data per one response 
	int32 offset = 2;		// size of the list of data for current response
}
If you don't use gRPC structures but try to send JSON directly to the server, you probably need to mimic everything in the command definition, I suspect, even the deprecated fields. Try using the following as the JSON request body:

Code:
'{  "track_filter_list": [  {  "filter": "All",  "is_inverted": false  }  ],  "pagination_request": {  "limit": 0,  "offset": 0  },  "page_limit": 0,  "is_filter_list_additive": true}'
If this works and the command returns the correct result, it means my suspicions were correct. I hope it will help. In any case, I will be grateful for the feedback – I am curious myself.

P.S.
"Off topic: is there a way to prevent the Venue error from occurring in this command?"
– Thank you for bringing this to our attention. We will discuss the necessity of returning this warning in cases where Venue-related parameters are not passed, and we will make the necessary changes in the upcoming releases.

Regards,
Artem
Reply With Quote
  #5  
Old 03-19-2024, 06:40 AM
GRT GRT is offline
Member
 
Join Date: Mar 2024
Location: Hoofddorp
Posts: 5
Default Re: GetTrackList command still returns an empty array here - Pro Tools 2024.3/SDK 202

Hi Artem,

Thanks, you are correct.

When using:
Code:
{
	track_filter_list: [{ filter: "all", is_inverted: false }],
	pagination_request: { limit: 0, offset: 0 },
	page_limit: 0,
	is_filter_list_additive: true,
}

I get a response. Woohoo!

Code:
{
  task_id: 'e8fc1d4e-807f-4c18-8b7b-303471e4bd73',
  command: 'GetTrackList',
  status: 'Completed',
  progress: 100
}
{
  pagination_response: { total: 8, offset: 0, limit: 0 },
  track_list: [
    {
      name: 'CHARACTER 1',
      type: 'TT_Audio',
      format: 'TF_Mono',
      timebase: 'TTB_Samples',
      id: '{00000000-2a000000-11db1de2-78128240}',
      id_compressed: 'baGHj44H3BeqaaacOaaaaa',
      index: 1,
      color: '#ff13355f',
      track_attributes: [Object]
    }
{other tracks deleted from post}
]
}
Best,
Geert
__________________
Geert van den Berg
Reply With Quote
  #6  
Old 03-19-2024, 07:05 AM
Artem Shevchenko's Avatar
Artem Shevchenko Artem Shevchenko is offline
Avid
 
Join Date: Dec 2022
Location: Kyiv, Ukraine 🇺🇦
Posts: 14
Default Re: GetTrackList command still returns an empty array here - Pro Tools 2024.3/SDK 202

Hi Geert,

I'm glad you were able to get a correct response. You are among the pioneers using such an unconventional approach, so your experience is interesting to us. Wishing you success!

Regards,
Artem
Reply With Quote
  #7  
Old 03-19-2024, 01:11 PM
GRT GRT is offline
Member
 
Join Date: Mar 2024
Location: Hoofddorp
Posts: 5
Default Re: GetTrackList command still returns an empty array here - Pro Tools 2024.3/SDK 202

Thanks!
__________________
Geert van den Berg
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Command 8 works with Pro Tools 2024.3 on Win 10 64bit unkJE ProControl, Control|24, Command|8 5 07-01-2024 05:49 AM
2024.3 Cycle Through Edit Modes Key Command changed? Chevron Pro Tools 4 03-13-2024 02:24 PM
Pro Tools 2024.6 unkJE Pro Tools 1 03-07-2024 08:28 PM
Pro Tools Update January 2024? ButtercupFactory Pro Tools | Intro Discussion 3 02-05-2024 07:00 AM


All times are GMT -7. The time now is 11:19 PM.


Powered by: vBulletin, Copyright ©2000 - 2008, Jelsoft Enterprises Limited. Forum Hosted By: URLJet.com