Open nickp60 opened 5 years ago
Hi @nickp60 not sure if you saw this but I already have a sox script as part of the repo:
https://github.com/zamaudio/ptformat/blob/master/ptgenmissing.cc
I think it does the same thing... Mine is for generating stems of empty silence when you don't have any audio but want to test importing a whole session. I'd prefer not to include python code as well as C/C++ in this repo though. Ptformat provides a C++ api to access all the regions, you don't need to write a parser for the output of ptftool. I'd be happy to accept it if it was written in C++ and generated a bash script to run sox, see ptgenmissing.cc as an example.
Hi @zamaudio, That's totally fine, I get not wanting to mix languages in the code base. If I knew enough C++, I would totally recode it using the API you developed. It looks like it wouldn't be too difficult if I knew C++ better; I don't have a ProTools license so my ability to test would be limited anyway. Feel free to leave the PR open in case one of the other contributors could port it, or just to close it. Again, thanks so much for your work developing this tool!
@nickp60 How do you deal with regions that overlap? This is a diagram of how the sources and regions are laid out, I think your code does not take this into account:
|< AUDIO SOURCE >|
|______________|-------------------------------------------------|
0 absolute >|< wav length >|
|--------------|----------------------------------|
a into >| a+wavlen
|< AUDIO REGION >|
|------------------------------|
|< region length >|
|------------------------------|
a+i a+i+reglen
Hey @zamaudio, you are right, it doesn't, and I'm not sure how to get around that. Is there a way to get the relative starts times?? I ended up manually adjusting the clips after the fact.
@nickp60 Yes, if you use the api that I provided in C++, you can get the absolute start time of any region, and you can also get the offset within a source of the start of the region and its length so you know where to pull the audio from. But I still think it may be challenging to figure out which region should be played when regions are overlapping on the same track since I do not have this information from the file. The way I handled it in Ardour import was to just dump the regions in order as they appear in the file and let them stack.
I have creating a tools in VB.net to open a ptx files (pro tools 10)all the file is decrypted.
@Otto-Matic did you link to my C++ library to compile your VB.net program, or did you create a derivative work of ptformat in VB.net?
My program is entirely written without using your C++ library. I discovered your program after I started writing the program. I just used the part":case 0x0030:return std::string("INFO product and version")""ect... I don’t know how to compile a program into C++....Sorry for my english, I'm french...
@Otto-Matic As you would know, ptformat is the result of many months of reverse engineering work. I decided to make my project LGPL, so that it remains Free Software, but can still be linked with proprietary programs as is. If you are creating a new project that takes specific cases from deep in the library, I would appreciate if you publish your project under a compatible licence (if you intend on distributing copies).
I work a lot with Protools10. I compose music in MAO. I wrote this program only for myself in order to better understand the software. I do not intend to distribute this software. But if I can help to advance the search on the files"ptx"...
https://soundcloud.com/otto-matic-1/tracks you can listen to my composition here
Sure, feel free to help figure out more of the block types if you have time. Thanks for sharing.
Would love to see progress on this library. @Otto-Matic if you're not familiar with C++, perhaps you could share your VB source code and someone could parse it and port it to C++ to help build out this library and fill in any gaps with portions you've coded.
(As an aside, I ported this library to Swift as an exercise just for my own use, and it functions identically. But it's probably more ideal to leave it as C++ to ensure it is as cross-platform as possible).
However, this is off-topic for this conversation thread. Would be great to start a new thread to further discuss if you're interested.
I have no problem sharing my source code, I only do this for pleasure...
@orchetect can you please open a new issue(s) for any feature requests? I'm not too sure what people consider progress on this library.
my tools in progress
@Otto-Matic Wow, can you share your repo on github? It looks like you have figured out the meter/tempo map! This is something we could add to ptformat.
@Otto-Matic Wow, can you share your repo on github? It looks like you have figured out the meter/tempo map! This is something we could add to ptformat.
That's what I was saying 😆 It's great if @Otto-Matic has made progress with analyzing the data. If they're willing to share their source code we could all collaborate to build this library out.
Remaining C++ would make the library the most cross-platform compliant. But it can be compiled and used as a library with VB, and other languages of course. I can offer to help by adding Swift and SPM support when I have time.
Either way, let's open new issue threads to discuss further and not derail this one.
how to send the file here in "zip" format?
Only for pt10, 11 & 12....
Hi Otto_Matic, is your tool able to parse plugin parameters in .ptx file? I am trying to use your tool, but you only provide two .vb file. When I tried to build form1.vb in visual studio there are lots of error. Can you share your project with us? I am so interested. Thank you so much. @Otto-Matic
Hi... in zip file complet program in Vb.net.... CadControlv1.zip for use: open a ptx.file in CadTest.exe, decrypt file and save in a ptw.file. Open the ptw file to view all...
Hi @zamaudio ! Thanks for writing a great tool. I needed to rescue some takes from a protools file, and wrote this python wrapper to make the sox commands to recreate full-length stems for each take for each track. Not sure if you would want to incorporate it, but I thought I'd share it anyways if anyone else would find it useful. Let me know if you have any questions.