Timecode in AES31-3 ADL files from multitrack recorders or DAW's.

For issues with communication ports, protocols, etc.
Post Reply
D.J.Peters
Posts: 8586
Joined: May 28, 2005 3:28
Contact:

Timecode in AES31-3 ADL files from multitrack recorders or DAW's.

Post by D.J.Peters »

AES-3-1 standard for network and audio - file transfer and exchange !

wikipedia: https://en.wikipedia.org/wiki/AES31

timnecode string format: "hh:mm:ss:ff|xxxx"

hh = hours
mm = minutes
ss = seconds
ff = frames
xxxx = ????

I searched hours for a description of the xxxx part without success.

Of course the specification of the "standard" are available on https://www.aes.org/ Audio Engineering Society

downloadable PDFs $500.00 AES Member | $1000.00 Non-Member (what a f***)

After long time trying by error I found it's a remainder of the sample position :(

The timecode "hh::mm::ss:ff" is good for the song position based on beats per minute
but not for a sample position of digital recording so the xxxx field are added "hh::mm::ss:ff|xxxx"

Here are a *.adl file from my retro FOSTEX 16 track HD Multitrack recoder (1995):
Image
! ADL = Audio Decision List !
<ADL>
<VERSION>
</VERSION>
<PROJECT>
(PROJ_TITLE) "A:\FOSTEX_FEVER"
(PROJ_ORIGNATOR) "FOSTEX corp"
(PROJ_CREATE_DATE) 1858-11-17 ' <-- ha ha ha
(PROJ_NOTE) " "
(PROJ_CLIENT_DATA) " "
</PROJECT>
<SEQUENCE>
(SEQ_SAMPLE_RATE) S44100
(SEQ_FRAME_RATE) 25
(SEQ_ADL_LEVEL) 1
(SEQ_CLEAN) FALSE
(SEQ_DEST_START) 00.00.00.00L0000
</SEQUENCE>
<TRACKLIST>
(Track) 1 " "
...
</TRACKLIST>
<MEMLIST>
(Memory) 01 "IN" 00.00.00.00|0000
(Memory) 02 "OUT" 00.01.00.00|1152
</MEMLIST>
<TEMPO_MAP>
(Offset) 2
(Signature) 0001Bar 4/4Beat
(Tempo) 0001Bar 1Beat 0102.0BPS
(Tempo) 0001Bar 2Beat 0103.0BPS
(Tempo) 0004Bar 1Beat 0102.0BPS
(Tempo) 0004Bar 3Beat 0105.0BPS
(Tempo) 0006Bar 3Beat 0104.0BPS
(Tempo) 0018Bar 4Beat 0105.0BPS
(Tempo) 0020Bar 1Beat 0103.0BPS
</TEMPO_MAP>
<EVENT_LIST>
(Entry) 0001 (Cut) F "tr01.wav" 1 1 00.00.00.00|0000 00.00.01.00|0000 00.01.00.00|1152 _
...
</EVENT_LIST>
</ADL>


Many DAW's "digital audio workstation" used the *.adl format not only FOSTEX !

Joshy

Code: Select all

function Dec(byval number as uinteger, byval nDigits as uinteger=0) as string
  var ret = str(number)
  if nDigits>0 then
    var Digits = len(ret)
    if Digits<nDigits then
      ret = string(nDigits-Digits,"0") & ret
    elseif Digits>nDigits then 
      ret = right(ret,nDigits)
    end if
  end if 
  return ret
end function

' sampleRate = 22050, 44100*, 48000
' frameRate = 24, 25*, 30
' "hh:mm:ss:ff|xxxx" to sample position
function str2samples(sArg as string, sampleRate as long=44100,frameRate as long=25) as long
  var hh   = val(mid(sArg, 1, 2))
  var mm   = val(mid(sArg, 4, 5))
  var ss   = val(mid(sArg, 7, 8))
  var ff   = val(mid(sArg,10,11))
  var xxxx = val(mid(sArg,13,16))
  var Samples  = hh*3600*sampleRate
      Samples += mm*60*sampleRate
      Samples += ss*sampleRate
      Samples += ff*(sampleRate\frameRate)
      Samples += xxxx
  return Samples
end function
' sample position to "hh:mm:ss:ff|xxxx"
function samples2str(Samples as long, sampleRate as long=44100,frameRate as long=25) as string
  var hh = Samples\(3600*sampleRate)
  Samples mod= 3600*sampleRate
  var mm = Samples\(60*sampleRate)
  Samples mod= 60*sampleRate
  var ss = Samples\sampleRate
  Samples mod= sampleRate
  var ff = Samples\(sampleRate/frameRate)
  Samples mod= sampleRate\frameRate
  var xxxx = Samples
  var ret =  dec(hh,2) & ":" & dec(mm,2) & ":" & dec(ss,2) & ":" & dec(ff,2) & "|" & dec(xxxx,4)
  return ret
end function

var timeCode="00.01.00.00|1152"
var samples = str2samples(timeCode)
print timeCode & " -> "  & samples
timeCode = samples2str(samples)
print samples & " -> " & timeCode
sleep
Last edited by D.J.Peters on Dec 08, 2020 16:40, edited 2 times in total.
Post Reply