Title
Error selecting PCM destination in Logic Pro Wave Bounce
What do you expect to happen when you run the script/macro?
Command failing - "ERROR finding PCM destination"
Are you seeing an error?
The error shows up after typing in the file name and moving to the bounce screen.
ERROR selecting PCM location
What happens when you run this script?
After running command, I'm prompted to name the file. I name the file and and hit enter. The bounce screen appears and then I get the error message.
How were you running this script?
I clicked the "Run Script" or "Run Macro" button in SoundFlow
How important is this issue to you?
5
Details
{ "inputExpected": "Command failing - \"ERROR finding PCM destination\"", "inputIsError": true, "inputError": "The error shows up after typing in the file name and moving to the bounce screen. \n\nERROR selecting PCM location", "inputWhatHappens": "After running command, I'm prompted to name the file. I name the file and and hit enter. The bounce screen appears and then I get the error message. ", "inputHowRun": { "key": "-MpfwYA4I6GGlXgvp5j1", "title": "I clicked the \"Run Script\" or \"Run Macro\" button in SoundFlow" }, "inputImportance": 5, "inputTitle": "Error selecting PCM destination in Logic Pro Wave Bounce" }
Source
//Preset converted to script
//Invoking preset "Wave, 24Bit, 48kHz, Offline" of template "Bounce Project or Selection" in package "Logic Pro"
sf.soundflow.runCommand({
commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi',
props: {
burnCdDvdStatus: "Disable",
generalBounce2ndCyclePass: "Disable",
generalBounceMode: "Offline",
generalIncludeAudioTail: "Enable",
generalIncludeTempoInformation: "Enable",
generalNormalize: "Off",
m4aAacAddToItunes: "Disable",
m4aAacStatus: "Disable",
mp3AddToItunes: "Enable",
mp3Status: "Disable",
pcmAddToItunes: "Enable",
pcmAddToMusic: "Disable",
pcmAddToProject: "Disable",
pcmBitDepth: "24-bit",
pcmFileFormat: "Wave",
pcmFileType: "Interleaved",
pcmResolution: "16-bit",
pcmSampleRate: "48000",
pcmStatus: "Enable",
pcmSurroundBounce: "Disable",
},
})
Links
User UID: XH03HyxIkaZm7CXik1lfHYOCNoF2
Feedback Key: sffeedback:XH03HyxIkaZm7CXik1lfHYOCNoF2:-Nwehu37FUUQD0T4y467
Feedback ZIP: tD9fG/fQ6qECDfaGUbVy3lzyLVFB07Dl15G7vyTb0beuBxFrG+dRHhbZfOkBtVXa2wnF9HX1YtUbYl0KKGGN73Xh6SDkv18U9uqVeNvTTawCtzi7Dr+O13RCqlMoh6yNEog7ObG9coZeAkMBuN4ojD97sXMKTWHiaBMy+AYlZMQQdfxhOmJM8U0dJKGF5p8zfm64bkdP8OkecXoJ/sdO6GthdZeSHm/E3v1dQzw1xGLfYFQxZISB7YCm0QazjNHcxJexE75Iyuc/xMHQ5xm4jdBLYl1z0YsfIBcZKxfL2aPxlQ0USlfaJY5eywmJNUD13yEVkk90xCpXBDgXFd2mbsEEHIKDVVEhxIQ7KFRyQtE=
- SSoundFlow Bot @soundflowbot
Thanks for posting a question or an issue related to the 'Logic Pro' package.
This package is made by @Kitch. We're auto-tagging them here so that they will hopefully be able to help you. - In reply toJustin_Krol⬆:Kitch Membery @Kitch2024-04-29 16:38:23.557Z
Thanks for logging this @Justin_Krol.
- SIn reply toJustin_Krol⬆:SoundFlow Bot @soundflowbot
This issue is now tracked internally by SoundFlow as SF-1188
- JIn reply toJustin_Krol⬆:Justin Krol @Justin_Krol
Here's the error message detail:
29.04.2024 11:44:55.54 [Backend]: JavaScript error with InnerException: null
Logging error in action (01) RunCommandAction: There was an error Bouncing the selection:
There was an error setting the "PCM" destination settings:
TypeError: Object has no method 'join'
(Bounce Project or Selection line 587)29.04.2024 11:44:55.54 [Backend]: !! Command Error: Wave, 24Bit, 48kHz, Offline [user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clr9gsr5l00039o10t1mgcfvq]:
There was an error Bouncing the selection:
There was an error setting the "PCM" destination settings:
TypeError: Object has no method 'join'
(Bounce Project or Selection line 587)<< Command: Wave, 24Bit, 48kHz, Offline [user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clr9gsr5l00039o10t1mgcfvq]
29.04.2024 11:45:26.74 [Backend]: [SF_FIREBASE_WS]: Sending keep-alive
- JIn reply toJustin_Krol⬆:Justin Krol @Justin_Krol
So, there's two things I'm wondering...I'm on Logic 10.7.9 (I know that 10.8 and up is officially supported) but when I first tried the beta version (months ago) everything was working. I've got the most current Logic package installed now. I actually tried a number of commands in the package and plugin loader doesn't work either (I tried making a custom one to see as well and it failed on the first step).
I also recently started using the Nektar CS12 channel strip controller and I'm wondering if there's anything crossing the wires that way due to prefs or ?
I'm currently still wrapping on a film so I can't really update Logic confidently at the moment.
Anyway, thought that was worth mentioning.
Kitch Membery @Kitch2024-04-29 18:25:30.031Z
Hi @Justin_Krol,
Unfortunately much of the Logic Pro Package functionality requires Logic 10.8 or later. Specific UI labeling was not available in earlier versions of Logic (including 10.7.9) that prevented me from making things work reliably. Especially commands related to the channel strip.
This particular issue however is actually a bug. I have addressed it internally and should hopefully be ready for release early next week. Or maybe before.
As a workaround till then, (if you use folders for your logic projects), manually create a folder named Bounces in the session folder.
Thanks for logging the report. Much appreciated!
- JJustin Krol @Justin_Krol
All good! Thanks for looking into it. I've tried the workaround and it's still giving me the same error. FWIW I also tried creating a new folder with a different name and then setting the destination to custom and I was getting the same error. Perhaps this is still a side affect of 10.7.9.
I'll definitely try the new release when it's out however to see if that fixes it.
Appreciate the help!
Kitch Membery @Kitch2024-04-29 19:32:06.891Z
Yep, it could be 10.7.9.
Hopefully once you wrap up the film you can do the update. :-)
- JJustin Krol @Justin_Krol
Yeah, I'm planning on it. The main issue at the moment is that I have hundreds of stems to print. I'm just trying to pull off a super simple, rinse and repeat stem printing command based off my previous commands - essentially copying and pasting the track name and pasting it into the file name, bouncing, turning solo off and then moving down to the next track, soloing, etc... Do you have any idea why this one won't even prompt?
var app = sf.ui.app('com.apple.logic10') function waitForBounceToComplete() { while (true) { try { if (!app.windows.whoseTitle.is('Logic Pro X').first.exists) { //We didn't get an error - and the modal popup doesn't exist. //Break out, the bounce is complete break; } } catch (err) { //We got an error. Logic is still busy. Continue with another loop } //Wait a bit before continuing sf.wait({ intervalMs: 200 }); } } sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "shift+return", }); sf.keyboard.press({ keys: "cmd+c", }); sf.keyboard.press({ keys: "cmd+b", }); sf.keyboard.press({ keys: "return", }); sf.wait(); sf.keyboard.press({ keys: "backspace", }); sf.keyboard.press({ keys: "cmd+v", }); sf.keyboard.press({ keys: "return", }); //Wait for the progress window to appear sf.wait({ intervalMs: 2000 }); //Wait for the progress window to disappear waitForBounceToComplete(); }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", });
Kitch Membery @Kitch2024-04-30 01:10:23.736Z
Hi @Justin_Krol,
Line 60 is not doing anything and can be deleted. I think that's what is stopping the script from running.
- JJustin Krol @Justin_Krol
Thanks! That did allow the script to run...however, when I duplicate, nothing happens after the first bounce. No error messages, but the solo'd track doesn't un-solo and move to the next track and bounce. I tried lowering the interval down from 2000 just to see if it made a difference or created an error, but it didn't seem to affect anything. Here's what I have now:
preformatted text ```var app = sf.ui.app('com.apple.logic10') function waitForBounceToComplete() { while (true) { try { if (!app.windows.whoseTitle.is('Logic Pro X').first.exists) { //We didn't get an error - and the modal popup doesn't exist. //Break out, the bounce is complete break; } } catch (err) { //We got an error. Logic is still busy. Continue with another loop } //Wait a bit before continuing sf.wait({ intervalMs: 200 }); } } sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "shift+return", }); sf.keyboard.press({ keys: "cmd+c", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "cmd+b", }); sf.keyboard.press({ keys: "return", }); sf.wait(); sf.keyboard.press({ keys: "backspace", }); sf.keyboard.press({ keys: "cmd+v", }); sf.keyboard.press({ keys: "return", }); //Wait for the progress window to appear sf.wait({ intervalMs: 200 }); //Wait for the progress window to disappear waitForBounceToComplete(); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "shift+return", }); sf.keyboard.press({ keys: "cmd+c", }); sf.keyboard.press({ keys: "cmd+b", }); sf.keyboard.press({ keys: "return", }); sf.wait(); sf.keyboard.press({ keys: "backspace", }); sf.keyboard.press({ keys: "cmd+v", }); sf.keyboard.press({ keys: "return", }); //Wait for the progress window to appear sf.wait({ intervalMs: 200 }); //Wait for the progress window to disappear waitForBounceToComplete(); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", });
- JJustin Krol @Justin_Krol
Hey @Kitch! I just wanted to let you know that I bit the bullet and updated to 8.1 and everything seems to be working fine. I'll let you know if I run into anything else, but I was basically able to put together a super simple stem printer using the installed commands (with modified titles for each track).
Thanks!
sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 01" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjocs230001t910lroc7qxs', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 02" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjodw2e0002t910srjpx2ev', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 03" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjodxve0003t910tnloryi1', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 04" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoe0cr0004t910d56e4jq2', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 05" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoe25u0005t9102178peah', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 06" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoe4pk0006t910cezze69s', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 07" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoe70d0007t9103av4wov9', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 08" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoe9060008t910apnncbj1', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 09" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoeba90009t910j9ti0xu4', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 10" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoedk0000at9107mew96q4', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 11" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoes2f000bt910boyilnql', props: {} }); sf.keyboard.press({ keys: "s", }); sf.keyboard.press({ keys: "down", }); sf.keyboard.press({ keys: "s", }); //Calling command "JK BOUNCE 12" from package "Logic Pro" (installed from user/pkg/version "uOwKfD26NbWKAWotin3dmnSne7B3/cli50xtc200015210vyksy31z/clv1bpk2p001b3o10kwvm7mje") sf.soundflow.runCommand({ commandId: 'user:cli50xtc200015210vyksy31z:clrfd06u600033o1062ly75zi#clvjoeu2g000ct910aek2rc4t', props: {} }); preformatted text
- JJustin Krol @Justin_Krol
NOTE - nothing major, but I'm occasionally getting a "ERROR - error waiting for element" error from my modified offline wave bounce from the installed package. Looks like it has something to do when it pastes the title custom title from the command --thinking it's trying to paste the title before the dialogue box pops up. I test printed 30 stems and it happened twice, for reference. Other than that, solid!
Kitch Membery @Kitch2024-05-02 22:26:07.048Z
That's great @Justin_Krol. I'm glad you were able to get something working.
You may see errors as you are using Keyboard simulation which is along with mouse simulation is the least stable way of automating with SoundFlow. Much of this could be improved by using UI automation.
- JJustin Krol @Justin_Krol
Copy that. I'd love to problem solve that. Can you give me an example of how that would look for the first step? I can play with that and then duplicate it assuming that I can keep the bounce commands I've already made. You're just talking about track selection and soloing?
- JIn reply toJustin_Krol⬆:Justin Krol @Justin_Krol
@Kitch Is there UI access to soloing a track and moving right to the next track? I played around with a few ideas, but I coulndn't seem to escape the key commands for those two prompts. Let me know what you think. Thanks!
- JJustin Krol @Justin_Krol
Hey @Kitch! Just wanted to follow up on the above question, as it would help me solve a few problems I'm having right now.
Kitch Membery @Kitch2024-06-10 20:03:32.511Z
Hi @Justin_Krol,
To Enable, Disable, or Toggle the selected track in the tracks area, you can use the following reusable function.
Add this function to your script
function soloSelectedTrack({ targetValue = "Toggle" } = {}) { const logic = sf.ui.logic; logic.appActivateMainWindow(); logic.invalidate(); const trackArea = logic.mainWindow .groups.whoseDescription.is('Tracks').first .groups.whoseDescription.is('Tracks'); const trackHeaders = trackArea.allItems[1] .splitGroups.first .splitGroups.allItems[1] .scrollAreas.first .groups.whoseDescription.is('Tracks header').first; const selectedTrack = trackHeaders.getElements('AXSelectedChildren').first; const soloButton = selectedTrack.checkBoxes.whoseDescription.is("Solo").first; log(soloButton.value.intValue) if (targetValue === "Enable" && soloButton.value.intValue === 0 || targetValue === "Disable" && soloButton.value.intValue === 1 || targetValue === "Toggle") { soloButton.mouseClickElement(); } }
Then use the following calls as desired...
To Enable
soloSelectedTrack({ targetValue: "Enable", });
To Disable
soloSelectedTrack({ targetValue: "Disable", });
To Toggle
soloSelectedTrack({ targetValue: "Toggle", });
Moving to the next track would require using a simulated keyboard press at the moment. Hopefully, at some point, I can improve this functionality.
- JJustin Krol @Justin_Krol
Many thanks! I'm going to play with this later today. You're the best!
Kitch Membery @Kitch2024-06-10 21:28:40.184Z
You're welcome, @Justin_Krol.
- JJustin Krol @Justin_Krol
Sorry, one more question -- what is the purpose of "toggle"? Looks like it might work without that function as well?
Is it Toggle -> Solo -> bounce command -> Disable -> keystroke down -> toggle -> solo -> bounce..etc?
Thanks again!
- JJustin Krol @Justin_Krol
After trying it, looks like toggle could be the sole command to solo and unsolo a track, or at least that works too. Just curious because I'd love to understand why it's working. Because I'm an idiot :). Thanks!
- In reply toJustin_Krol⬆:
Kitch Membery @Kitch2024-06-10 21:47:33.104Z
The
soloSelectedTrack
function only needs to appear once in your script.The three function calls for "Enable", "Disable" and "Toggle" all call the same function. You only need to use the ones that are appropriate to what you want to do. ie if you want to enable the Solo add
soloSelectedTrack({ targetValue: "Enable", });
to the code.Enable Solo => Bounce Command =>Disable Solo => Keystroke down
I'd suggest being specific about enabling and disabling as toggle could create an unexpected outcome.