Splitting Rodecaster Pro WAV files

Use this Shortcut to auto-split your Rodecaster Pro WAV files into one WAV file for the guest and host.

I record a lot of podcasts. Sometimes, I get to do them live in person, and that’s a lot of fun.

At least it is until it is time to edit them. I use Descript to edit all my podcasts, and when Rodecaster Pro records multichannel to the SD card, it records it as one WAV file, with multiple tracks inside that file.

When I upload that single file to Descript, Descript reads it as a single WAV file, not a poly-WAV file.

There are a couple problems here:

First, the poly-wav file is HUGE! 14 tracks are silent, but there’s still data there, so the filesize is enormous. a ten minute interview is 1.4 GB! A ten minute interview on a single-track WAV file is about 100 megabytes.

Second, Descript doesn’t allow me to create a sequence from that poly-wav file and so I can’t edit out the breathing from one person, for example, or deal with mic bleed.

What I used to do is open those in another app that would split the tracks, but that is tedious, and when I do 15 interviews in one day, it’s quite tedious.

I know there are ways to script your computer to save you time and energy, but I don’t know how to write scripts.

So, I turned to trusty ChatGPT to do this for me. I asked it to create a script that I could include in the Shortcuts app to have it run anytime I put something in that folder.

You can download this shortcut yourself and try it out by clicking this link.

Let me include the code here as well, with comments included by ChatGPT, because I have directed ChatGPT to include verbose comments when it writes code for me so I can understand what is happening.

#!/bin/bash
set -euo pipefail

# Make Homebrew ffmpeg visible to Shortcuts
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"

FFMPEG="${FFMPEG_PATH:-$(command -v ffmpeg)}"
FFPROBE="${FFPROBE_PATH:-$(command -v ffprobe)}"
LOG="/tmp/rode_split.log"

# ---- CONFIG ----
# RØDECaster Pro 1 (fw 2.1.2) — your confirmed mapping:
#   Mic 1 -> channel index 2 (zero-based)
#   Mic 2 -> channel index 3 (zero-based)
MIC1_CH_INDEX="${MIC1_CH_INDEX:-2}"
MIC2_CH_INDEX="${MIC2_CH_INDEX:-3}"
OUTDIR_NAME="${OUTDIR_NAME:-split}"   # shared output folder name (per source directory)

if <span title='There is no note that matches this link.' class='invalid-link'>  <span class='invalid-link-brackets'>[[</span>   -z "${FFMPEG:-}" || -z "${FFPROBE:-}"   <span class='invalid-link-brackets'>]]</span></span>; then
  echo "ffmpeg/ffprobe not found on PATH" >> "$LOG"
  exit 1
fi

for f in "$@"; do
  <span title='There is no note that matches this link.' class='invalid-link'>  <span class='invalid-link-brackets'>[[</span>   -f "$f"   <span class='invalid-link-brackets'>]]</span></span> || { echo "Skip (not a file): $f" >> "$LOG"; continue; }

  # Case-insensitive .wav check (Bash 3.2 compatible)
  ext="${f##*.}"
  shopt -s nocasematch
  if <span title='There is no note that matches this link.' class='invalid-link'>  <span class='invalid-link-brackets'>[[</span>   ! "$ext" =~ ^wav$   <span class='invalid-link-brackets'>]]</span></span>; then
    shopt -u nocasematch
    echo "Skip non-WAV: $f" >> "$LOG"
    continue
  fi
  shopt -u nocasematch

  dir="$(cd "$(dirname "$f")" && pwd)"
  base="$(basename "$f")"
  name="${base%.*}"

  outdir="$dir/$OUTDIR_NAME"
  mkdir -p "$outdir"

  # Probe channel count
  channels="$("$FFPROBE" -v error -select_streams a:0 -show_entries stream=channels \
             -of default=nw=1:nk=1 "$f" | tr -d '[:space:]' || true)"
  echo "[$(date)] $base → channels=$channels" >> "$LOG"

  if [[ ! "$channels" =~ ^[0-9]+$ ]]; then
    echo "No channel info from ffprobe, skipping: $f" >> "$LOG"
    continue
  fi
  if (( MIC1_CH_INDEX >= channels || MIC2_CH_INDEX >= channels )); then
    echo "Not enough channels ($channels) for indexes $MIC1_CH_INDEX/$MIC2_CH_INDEX" >> "$LOG"
    continue
  fi

  # Output paths include source basename to avoid collisions across files
  mic1_out="$outdir/${name}_mic1.wav"
  mic2_out="$outdir/${name}_mic2.wav"

  # MIC 1
  "$FFMPEG" -hide_banner -loglevel error -y -i "$f" \
    -filter_complex "[0:a]pan=mono|c0=c${MIC1_CH_INDEX}[m1]" \
    -map "[m1]" -c:a pcm_s24le "$mic1_out"

  # MIC 2
  "$FFMPEG" -hide_banner -loglevel error -y -i "$f" \
    -filter_complex "[0:a]pan=mono|c0=c${MIC2_CH_INDEX}[m2]" \
    -map "[m2]" -c:a pcm_s24le "$mic2_out"

  echo "Wrote: $mic1_out, $mic2_out" >> "$LOG"
done

echo "OK"

If you need to add more/different sources from your original file, you can easily do that by updating which fields you want to split out. I know I only use mic channels 1 and 2, so I don’t need anything else there.

My resulting folder of split WAV files came in at 2.46 GB instead of 34GB, and my files are now split appropriately for importing into Descript in a much easier and appropriate way.

I then asked ChatGPT to make a version that I could share with others if they have different needs. You can get that here.

Notes mentioning this note

There are no notes linking to this note.


Here are all the notes in this site, along with their links, conveniently visualized as a graph.

1 tip i would give an educator to start using ai...Paperless Principal BookSimplicityCommunication CardsHome VisitsSchoolx is here. get your copy todayHow we told families school doesn't matter and...NowAPWorkshopPresentations and SpeakingOnboardingSetting Healthy Tech Boundaries for KidsAn 84% Pay Cut? Would You Take it?ToolsOrganic Skills are the New Soft SkillsOn Lasting ForeverSites I want to model this site afterBest Year EverInstructional Coaches MastermindCUES 2014District MastermindsFamily GoalsFETC22FOCUSIdeal WeekImpactMastermindNational Principal's ConferenceObserveOnline Observation FormPhotographersPlanning PeriodASCD PlayRewire19Scales and Goals 2014SchoolXSeminarSponsorshipsSurveyTraumaUCET 2014Loaves and Fishes, not the 5,000SchoolX Book Study - Transform your School with...SchoolX Book Study - Transform your School with...VERDADSonderSave the webNot all screen time is created equalTrying to Export Substack2 Keys to Building CommunityOSPI Graduation Equity Webinar3 Rules for Academic Writing with AI3 things i'm interested in right now5 best rti episodes on transformative principal5 ways our edu system would be different if...50 Questions to Ask to Solve Problems5rs5sigma20A decade never to be forgottenNobody cares about our life as much as we doWhat I've learned from doing 6000 burpees in 40...A summary of my ship30 writingsAdlerian psychology in schoolsHow We Use AI In SchoolsSchedules are a big puzzle, and I like puzzlesAccelerated learningA less annoying cookie bannerAdd Fathom Analytics to your Obsidian Publish siteA Live Demo Site for a SaaS productAdntbf roadmapAdding a Little Complexity to Make Things More...AI As a Fundamental ExpectationAI Can do Anything, But Not Something SpecificAI Easy and HardAI Produces and Your Brain DevelopsAi leader office hours june 2025Ai for innovationAdvanced teacher's prompts (54)All parents want their kids to be successfulExploring Descript's Agentic EditingAlaska administrative assistantsAn overview of prompt engineering for educatorsAnyone interested in fundraising should listen to...Argentinian Food - Fast Sunday Family Feast for...Big impact mixerBook fair controversy at Prairie Hill sparks...Three reasons you should have a podcast to go with...Based on what you know about meBIM January 25 - Breakout Problem SolvingBe a creator, not a consumerBIM February 2025 - Experiments[Big Impact Mixer] - Are My Social Posts Any Good?BIM May - What are your Gifts?Apprenticeships for the 21st CenturyAssessment (58)Assessment and evaluation (50)[Big Impact Mixer] - Vision, Category Design, 10...[Big Impact Mixer] - MiraclesAssumptionsBim april creating a personalized newsletterBrooks duncan on handwritten notesBuilding classroom community (50)Building parent and community partnerships (50)Compass Among usJanuary - MolcajeteFast Sunday Family Feast - A Jones Family...February - Borscht and PelmeniHow i got my wife to stop nagging me[Big Impact Mixer] - Experiments FollowupFrameworksEdit an episode with me (full podcast production...Don't call it a Substack. - Anil DashHoliness to the Lord in Everyday LifeFit looks like gritFollowing up on my post ai counselor botsDelusional dreams of excess freedomJethro's Appearances and Media ElsewhereIrish Food - March 2025Why the Ebenezer is so Important in Come Thou...Guatemalan Food for April 2025Building an App I will use DailyEducatorsCan we trust the ai?Candy teacher referralCaroline classroom observationTransforming Old Content into Engaging Case Study...FSFF May 2025 - Korean FoodFSFF June 2025 - Good Ol' American FoodWhat certifications are necessary?Chatgpt prompts for educatorsClassroom creativity(55)Classroom differentiation (50)Classroom discipline (50)Classroom environment (50)Classroom gamification (50)Classroom management (52)Classroom technology integration (50)ClippingsThere’s no such thing as learning loss or learning...Collaboration (54)Convertkit essential workflowsCulturally responsive teaching (50)Dan koe's writer's bootcampData dashboardDay 1 ship30Day 17 the 1 app i can’t live without for podcast...December - Brazilian Feijoada“Your Decision, My Decision, Our Decision”: A...Differentiated instruction (100)Do People Call You for Advice?Effective feedback (54)Election Day, but no TrustEthan Mollick on Knowing When to Use AIEverything AIExplicit teaching (54)How i got started in leadershipHow to Be a Transformative Principal By Jethro...How This Site is BuiltHow I lost 70 Pounds in a Sustainable WayHow i would start my online presence todayHow I write a dissertation extremely fastHow writing helped me present betterHow to use mint mobile's minternational passIf I were a ProfessorShould I use AI for to Install Omarchy on a...Join the Compassionate Classroom Global Card...Just subscribe to these youtube channelsI was quoted in a story from Parents MagazineLeadership vs managementLearning is like a springLearning is a lifelong processLesson planning (50)NewslettersLong sentencesMiraclesMove from blogtalkradio to transistorMaking “Social” Social AgainListen LaterLucky MeatDoes Magic Mind really give you clean and calm...New Disease: NovolibrochitatNotes to staciObsidianOur System is Designed to Enable CheatingOctober Fast Sunday Family Feast - Australian FoodOn not using turnitinPaperless principal submittedPaperless principalParent Teacher communication (50)PatiencePedagogical approaches (50)Pedagogy and instructional strategies (100)Podcast gearPolson middle schoolPresentations on aiPraisePresentation resourcesProblem in edu is that we don’t have outcome Based...Professional growth and development (50)Project ManagementPromoting ethical decision Making and responsible...Recipes on the Web are the WORST!Read ai summary from the vaesp lunch and learnRssAsk QuestionsQuoting Cory DoctorowReflections on spell Jif retreatEthan Mollick on Real AI Agents and Real WorkReport on an Analog/Social Media Free MonthCurriculumHomeStudents Who ThriveEnrollmentHow it worksResources for the SPELL JIF RetreatSstSessions Health - Mental Health Practice...Self EsteemShould i learn to codeStop using generative AI as a search engineSponsored Podcast EpisodeWhen the Stone turns to BreadSplitting Rodecaster Pro WAV filesStrivingStudent engagement and motivation (100)Student Centered learning (50)Students Need Human Relationships to Thrive. Why...Summer pinedaSupporting students transition and college and...This Is Mind Blowing.SynergyThe Power of No ExpectationsTailgate - February 2025The leaders who have influenced me mostThe lord keeps things hiddenThe man who saved the world with human intuition,...The pass method how i've taught ai to be an...The power of personality tests in the hiring...The best book i've read on business financeThe best piece of leadership advice i ever...TherapyThree simple tips for recording yourself more...To Radiate Life A Prayer by Elbert HubbardTop 3 podcasts in 2019Knowing how to use Transcripts in Podcasts in 2025Turning learning upside downMy Thoughts on LearningI made some big updates to the site todayUse of data to inform practice (50)Using Vectorize to build an unreasonably good...VAESP Presentation ResourcesVal meditation reminder appProject iSTAR: An Integrated Strategic,...What is Yours? And What Will You Keep After You...Why Do People Like 37signals?Why everyone should read the courage to be...Why do AI company logos look like buttholes?Why young people worldwide want and need...You Can Just LearnYou choose to not changeYou made up your angerAplusPresentation Notes at ALASBOPresentation Notes at Alaska Municipal LeagueSpiritual ArchitectureBe Podcast NetworkCommunication CardsEliminate Stress and Improve Relationships in Just...Best AI ToolsBUHSD Day of LearningBishop Brady High School AI PresentationBlogBooksDesigners for EducationYou Should be Able to Take Your Data With YouHard thingsTeachers Don't Actually Want Feedback. Here's What...ExperimentsHigh Rep WorkoutsFacebook adsHow to get unstuck when you're stuckHow Many Teachers Do I Need To Hire For Social...The Ultimate Inspirational Videos for Teachers and...HumilityiA Presenter Now Allows Sharing on the Webmedia kitLifestyle is your choiceThe Little, Narrow Prison of Language: The...Morning RoutinePaper trackingPbis As MedicineAll Learning Is SpiritualPeople Ruin the InternetPersonal board of advisorsPodcast AppearancesProjectsPsychological SafetyReopening Schools WorkshopResultsSdlHow to Combat Chronic AbsenteeismHow we teach our kids does not happen how we thinkSecret newsletterSubscribeSure Go AheadTake Your Daughter To Work DayThanksThe KindleTrauma Podcast MapUcet2013Your Values are Only Worth What You’re Willing to...UCET 2023Supporting Students with Webs of Support - Podcast...Where To Startand An Action ItemWhy I Do What I DoWhy Most Reopening Plans Are Doomed To FailWorld Down Syndrome Awareness DayYoutube For Schools“Put Your Shoulder to the Wheel”
Follow
Follow
Follow