-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Timecode Indexing Module (TIM): App for creating and editing OHMS XML and other A/V timecode index formats
TIM is a workspace for creating, developing, and refining timecodes and other metadata for audio/video (A/V) indexes. TIM was built as an alternative editing interface for OHMS, the Oral History Metadata Synchronizer. It is also ideal for working with WebVTT files, a closed captioning / subtitling format that can also be used to structure A/V timecode indexes. (See examples of parallel OHMS and WebVTT indexes in this article and directly here on the Aviary Platform.)
TIM features an editing environment that is all text-based, so indexers can move fluidly within and across an index under construction and manage timecodes in flexible ways. Descriptive text (e.g., titles, synopses, keywords) and timecodes are established in TIM using Markdown syntax. Keyboard shortcuts and commands allow the user to control the media player while typing/composing index content.
Jump right in with the Quick Start Instructions below, or see the Wiki topics sidebar menu for full user guide and documentation.
This version of TIM is a React app forked from the Centre for Contemporary and Digital History (C²DH) and is maintained by Douglas Lambert at the University at Buffalo, New York (bert@buffalo.edu).
TIM is a workspace for refining timecodes and other metadata for A/V index interfaces. It allows users to create custom indexes by defining thematic access points along media timelines/playbars. Working in TIM’s free-form text and timecode editor, indexers can work iteratively to listen, type summaries, draw from automatic speech recognition (ASR) transcripts, and establish timestamps for sequential segments. Establishing the appropriate metadata in TIM, timecoded indexes can be displayed in the OHMS platform, designed for archival oral histories online, or on the Aviary Platform, a content management system (CMS) that allows display of oral history or other index formats. For OHMS’ oral history style indexes, as defined in the OHMS.xsd metadata schema, users can:
- Generate OHMS.xml files from scratch
- Formulate title, synopsis, keywords and partial transcript fields for each segment/timestamp using Markdown
- Bypass OHMS/Aviary editing tools and publish OHMS.xml indexes directly
For establishing and refining timecodes in TIM, users can:
- Insert timecodes in the TIM Editor from the media timeline
- Hand-edit timecodes in-text
- Control the media player using keyboard shortcuts whilst typing
TIM facilitates indexing for individual interviews or whole collections, by non-technical users or professional archivists, and for private use or public consumption. TIM was built for oral history indexing practice but can be applied to any long-form recorded audio or video files. Once displayed in a multimedia environment like OHMS/Aviary or other CMS, indexes and timecode transcripts are interactive, synchronized, and searchable.
TIM is browser-based with no username/password required. This means work must be actively saved to a local computer drive before closing the active browser tab.
TIM facilitates integration of ASR outputs to produce indexes, or to refine and complete transcripts. Transcripts also can facilitate the creation of indexes by providing an initial timecoded text map of the material, or can be drawn upon to populate the fields in an index. (See Oral History Indexing.)
TIM is an ideal environment for editing indexes and timecode transcripts using the WebVTT data format. WebVTT can be generated using [TIM’s Markdown syntax] (link internal]) (only timestamp, title, synopsis) or by editing an existing WebVTT file as text. When displayed in Aviary, a WebVTT index can be formulated with a two-layer “parent/child” arrangement, creating unique options for representing recorded events as an index. See an example for an online conference session, created in TIM: Zoom Video from OHA roundtable discussion, 2021.
TIM is a one-of-a-kind environment for close engagement with A/V, where one can map the meaning of media contexts like a librarian indexes a book, and cue timecodes precisely like a radio or video producer. TIM is ideal for oral historians and other content stewards who understand that, despite the increasing convenience of ASR-created transcripts, human listening and interpretation is central to creating quality access to A/V. As a tool for index creation or transcript refinement, TIM facilitates the involvement of natural human intelligence throughout the process of multimedia A/V document publication.
Using the hosted web app (no installation or account/login required):
-
App Location: Go to https://cartograforce.github.io/tim/ to load the web app in your browser window.
-
Establish / Load / Save JSON Project File: In the Create menu, click the New project button to begin a new TIM indexing project, or click the Import button to upload a saved TIM project file in JSON format. To save your TIM project, click the "floppy disk" Save icon at the top right of the project window. Alternatively, Export the work as "Project JSON." This will save your work as a JSON file on your local computer which can then be loaded and edited again later. This will save your work as a JSON file on your local computer which can then be loaded and edited again later.
Note: Because TIM works with files stored on your local computer and does not upload your work to a server, it is important that local media and JSON files be mindfully placed within your computer's file system so they can be found.

The TIM web app start menu
-
Load Media: In an empty TIM project, click the Choose media file button to load an audio or video file from your local computer OR, under "or load URL", paste the direct URL of a media file hosted on the web and click the Load button. You can load any media file that has playback support in your browser.
- YouTube, Vimeo, Soundcloud and various other media streaming platform page URLs can be pasted into the URL field as-is, others may require a direct link to the media file itself to load.
- If the media file loads properly a green check mark icon will appear at the end of the URL. If TIM is not able to load a media file from the URL, a red warning icon will appear instead.

Load media files in a blank TIM project
- Media Player Features: Using the playback controls in the floating media player window or the controls in the main toolbar at the top of the TIM project window, you can play/pause, skip forward or back, and control playback speed. You may also use the ESC key on yor keyboard to play/pause the media file.

The TIM project window workspace
-
Essential Keyboard Controls: In the default Notes mode (next to Preview tab), you can type freely. Whether the media is playing or paused, add a timecode point to the text by typing CTRL-j (PC) or CMD-j (MacOS) at any time.
-
Clicking on any timecode marker in the text editing area (blue, pink, or black/bold) will jump to the corresponding time in the media file loaded into the viewer window.
-
When occupying its own line with no other text, a timecode with appear in black, bold, and enlarged in [HH:MM:SS] format. This demarks a prospective segment in OHMS.xml and maps to OHMS' "time" field for a particular segment--called a "tag" in OHMS.
-
General timecodes can be placed anywhere in the text and will appear with a blue highlight, and a corresponding blue dot will appear in the toolbar timeline.
-
Timecodes highlighted with a pink background are not correctly formated for inclusion on the TIM timeline and need to be put in [HH:MM:SS] format.
-
When actively developing an index or timecoded transcription in TIM, keystrokes are particularly convenient to use for controlling the media player and pulling media timecodes into the Notes/Editor area. See shortcuts below:
-
| Keyboard Command | TIM Function | Notes |
|---|---|---|
| ESC | Play/Pause media file | A local or remote media file must be loaded |
| CMD/CTRL + j | Insert single timecode marker | Timecode marker appears in-text at current media playback location |
| CMD/CTRL + SHIFT + j | Insert multiple timecode markers | Inserts 4 timecode markers at one second intervals; interval between markers adjustable in Settings |
| CTRL + [ | Skip media file backward | Skip backward one second; interval adjustable in Settings. CTRL key for both Mac/Windows |
| CTRL + ] | Skip media file forward | Skip forward one second; interval adjustable in Settings. CTRL key for both Mac/Windows |
- OHMS.xml fields and Markdown Syntax: Clicking on the Preview button at the top of the text editing window switches to Preview mode, where the OHMS.xml segment times and the application of the Markdown can be checked. Here, the title, synopsis, keywords, and partial transcript fields for each OHMS tag/segment appear in distinct input boxes for editing or new composition.

Editing metadata fields in the TIM Preview mode
These fields are needed if exporting OMHS XML compatible indexing metadata is desired. These fields can also be quickly completed by typing Markdown-formatted text in the Notes mode:
| TIM / OHMS XML Metadata Field | TIM Notes View Markdown Format | Comments Markdown Syntax Example
|
|---|---|---|
| Segment Break* | Single timecode, on its own line, no space before or after | [00:03:33] |
| Section Title* | Single hashtag symbol followed by text | #Section Title |
| Synopsis | Single right carat symbol followed by text | >Synopsis text block |
| Keyword or list of keywords | A word or words enclosed by two asterisks | **Keyword One, Keyword Two, Keyword Three** |
| Partial transcript | Text not formatted in Markdown (in between Segment Breaks) | "Export Notes as Partial Transcript in OHMS XML" checked in Settings |
| Comments / free form text in TIM Notes | Text not formatted in Markdown | "Export Notes as Partial Transcript in OHMS XML" unchecked in Settings |
*Note: Only the Segment Break timecode and Section Title text are required fields for OHMS XML export

Markdown formatting in TIM Notes view
- WebVTT with TIM: TIM can also be used to create, edit, and refine text-based caption files in .vtt or .srt format, from scratch or starting with ASR transcripts or other text. Like formatting an OHMS.xml file, TIM’s free-form text notes can be formatted using Markdown to create and export WebVTT caption files. WebVTT text can be copy/pasted directly into the TIM Notes view for editing and refinement. WebVTT is an HTML5 compatible caption format and enables rich visual formatting of text captions for display on the Web.
| TIM Notes View Markdown Format | WebVTT Output | Markdown Syntax Example |
|---|---|---|
| A single timecode on its own line with no space before or after, optionally including miliseconds | Beginning Timecode Marker* | [00:03:33.000] |
| A single hashtag symbol followed by text | Caption Heading | #Caption Heading |
| A single right carat symbol followed by text | Text of caption | >Text caption for the portion of video in-between timecode markers |
*Note: WebVTT captions are displayed during the duration of the media file in between timecode markers. It is not necessary in TIM to add an ending timecode marker. The ending is assumed to be at the start of the next timecode marker. If no milliseconds suffix is added in TIM, the caption will begin at .000 by default when exported to WebVTT
-
TIM can export your work to one of several different formats for use in other applications. Click the "right arrow" Export icon at the top right of the project window. A pop-up will display the current export options in a drop-down menu including:
- Text (Markdown)
- CSV
- XML (OHMS)
- VTT
- JSON
Select an option and click the blue Export button. Your browser will initiate a file download to your local computer.
- Workspace Components
- The TIM Editor Workspace For Affiliating Text and Timecodes
- Keyboard Shortcuts for Media and Timecodes
- Timecodes
- The Timeline
- Transcript Resources
- The OHMS Metadata Model
- Markdown for OHMS.xml Fields
- The Preview Area
- Exporting to OHMS or Aviary via OHMS.xml, CSV, or VTT
- Uploading OHMS.xml or CSV into "OHMS in Aviary"
- WebVTT as alternate to OHMS.xml
- WebVTT syntax
- Why WebVTT?
- How to make a WebVTT in TIM
- Uploading OHMS.xml or WebVTT into Aviary
- Coming soon