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):
! 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