Workout builder

You can now build structured workouts with automatic duration and training load. The workout is edited as “plain text” and the steps, power etc. are extracted automatically. So you can cut past between workouts, emails whatever you like. Tx very much to @steve_neal for taking the time to show me how other workout builders work!

Percentages of FTP and max heart rate are expanded using the current athletes settings. The bars are coloured according to the athletes training zones (for power and HR).

Create workout steps by starting a line with a ‘-’ and using the following constructs:

  • A duration “30s”, “10m”, “1m30” etc.
  • 100w, 80% (of FTP), 60% HR (of max heart rate), 100% LTHR (of threshold HR), 90 rpm (cadence)
  • Ranges 100-140w, 80-90% (of FTP) etc.
  • Ramps “Ramp 100-200w” or “Ramp 60-80%” (of FTP)
  • and whatever additional text you like

Update: 3rd April 2022: Distanced based workouts supported

Create repeats by including “6x” or whatever in the line before a set of steps.

The text for the example above looks like this:

Warmup
- 20m 60% 90-100rpm

Main set 6x
- 4m 100% 40-50 rpm, power is less important than getting the torque
- 5m recovery at 40%

Cooldown
- 20m 60% 90-100rpm

You can use the “Add Step” button and complete its fields to append a new step or just cut and paste other steps:

The “End when lap button pressed” option adds “Press lap …” to the step. Currently this only works on workouts pushed to Garmin devices via Garmin Connect integration. This is a handy feature for outdoor workouts.

You can mix power and HR steps in the same workout. Training load for HR based workouts is calculated using HRSS (normalised TRIMP).

Steps can have text prompts. All the text prior to the duration or power specification becomes the text for the step. Example:

- Recovery 30s 50%

The text prompt for that step will be “Recovery”.

Upload and convert existing MRC, ERG and ZWO (Zwift) files using the “Upload” button.

Download the workout using the “Download” button. Supports ZWO (Zwift), MRC and ERG files.

Update 15th April 2022:

You can now use zones instead of % of FTP or whatever:

- 60m Z2

For 60 mins at zone 2 power.

- 60 HR Z2

Same but using heart rate. “Pace” also works.

81 Likes

Awesome! Are the headers used for anything functional?

2 Likes

Not sure yet. Will find out when I write some code to export these for Zwift etc.

2 Likes

Give this a try later great work.

That’s so cool!!

Excellent work! I love it!

Awesome job, a game changer.

Fantastic! This is very close to something I suggested last year. I’ve written a similar parser and visualizer myself, but still haven’t implemented it anywhere :slight_smile:

I suggest to add zone intensity targets, e.g. Z1, Z2, ZSS.

Now we need a way to import workouts in bulk using text, trainer files, etc. :slight_smile:

12 Likes

Just out of curiosty how difficult is it to be able create a system that allow you to transfer the workout to a head unit (garmin or wahoo) so that you get the visual ques out on a ride.
I currently use Todays Plan for this and this would be the nail in its coffin in terms of functunality for me.

4 Likes

I definitely want to do that. I don’t know how yet but plan to find out. First I need to support converting workouts into different file formats for download and this is related.

8 Likes

Awesome! For those using Zwift, can you add the functionnality to export it is .zwo file?
You have a example of tool doing it here: https://zwofactory.com/

Thank you David!

1 Like

I’m loving the look of this. It’s great to be able to see a visualisation of the planned workout. My calendar is imported from TrainerRoad though and they obviously don’t use this markup in their workout description. However, if the ride is flagged as an outside ride then they do use something very similar.

Is there anyway to edit workouts imported from a 3rd party app such as TrainerRoad so that this visualisation can be seen in the Intervals calendar?

Thanks,
Al.

Tx. Currently you can’t edit the description for external workouts because that gets replaced whenever the calendar is refreshed. I need to think of a way around that.

1 Like

I am going to be working on Zwift export tonight. I found a good reference for the file format.

Great work! Thank you, David!

Could someone with Zwift please see if this file works as a custom workout. Tx.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<workout_file>
    <name>Torque Intervals</name>
    <sportType>bike</sportType>
    <workout>
        <SteadyState CadenceHigh="100" CadenceLow="90" Duration="1200" Power="0.6"/>
        <SteadyState CadenceHigh="50" CadenceLow="40" Duration="240" Power="1.0"/>
        <SteadyState Duration="300" Power="0.4"/>
        <SteadyState CadenceHigh="50" CadenceLow="40" Duration="240" Power="1.0"/>
        <SteadyState Duration="300" Power="0.4"/>
        <SteadyState CadenceHigh="50" CadenceLow="40" Duration="240" Power="1.0"/>
        <SteadyState Duration="300" Power="0.4"/>
        <SteadyState CadenceHigh="50" CadenceLow="40" Duration="240" Power="1.0"/>
        <SteadyState Duration="300" Power="0.4"/>
        <SteadyState CadenceHigh="50" CadenceLow="40" Duration="240" Power="1.0"/>
        <SteadyState Duration="300" Power="0.4"/>
        <SteadyState CadenceHigh="50" CadenceLow="40" Duration="240" Power="1.0"/>
        <SteadyState Duration="300" Power="0.4"/>
        <SteadyState CadenceHigh="100" CadenceLow="90" Duration="1200" Power="0.6"/>
    </workout>
</workout_file>

Will you be implementing a .MRC export? Yahoo Elemnt Bolt, et. al.

2 Likes

Yes. Just starting with Zwift because I found lots of material online re the file format. I only ride outdoors so don’t have any of these things to play with. Going to need help testing!

1 Like

looks fine to me :slight_smile:
didn’t ride it as it’s almost midnight here, but it loaded fine

image

one thing I noticed is the companion app also shows the desired cadence, while the zwift app on PC only displays desired power.

1 Like

Thanks a stack. Download for Zwift is live now.

2 Likes