Hmm. I don't knand how it convertsow much about earlier versions of LIRC; but, for most config files, the value provided for the key is the "code" that gets sent in the command. I don't really see how you can translate "0x0000000000000144" directly into an audio file that does something to your TV; you need to have the additional info at the top of the LIRC file in order to decipher how the command is encoded as IR pulses. For example, an LG tv config file will have something like this: Code: begin remote name LG_MKJ61842704_TV bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9069 4455 one 597 1651 zero 597 531 ptrail 591 repeat 9055 2222 pre_data_bits 16 pre_data 0x20DF gap 108123 toggle_bit_mask 0x0 begin codes ... KEY_1 0x8877 ... end codes end remote You can read this as follows: Bits: this remote sends 16 bits of "command" data for each key pressed. Flags: the bits are "space encoded", meaning that the value of each bit (zero or one) is determined by the length of time the IR led is on or off; "constant length" means that, regardless of how long a single sequence of bits takes to finish, the next sequence will start at a fixed time after the start of the current one. (The "eps" and "aeps" values are only of interest when receiving commands, so I generally ignore them.) The "header" specifies that, before any bits are sent, the LED should be left on for 9069 uSec, and off for 4455 uSec. (These are values determined by LIRC's "irrecord" utility off of a physical remote control; they may vary from the official timings for this protocol, but probably not enough to matter.) The "one" specifies that the binary bit "1" is sent by turning the IR on for 597 uSec and off for 1651 uSec, and the "zero" specifies that a "0" bit is on for 597 uSec and off for 531 uSec. (Again, these are a bit off from the official values, but close enough not to matter.) Finally, after the entire sequence has been sent, a last "on" pulse of 591 uSec is sent, and then the IR is kept off until the next sequence starts. (The "repeat" value describes a special feature of the NEC protocol, which I'll skip here.) The "gap", in this case, describes the amount of time, in uSec, between the start of one full sequence of pulses and the start of the next. (If the "CONST_LENGTH" flag hadn't been set, the gap would be the time from the end of one sequence to the beginning of the next.) Now, we get to the interesting part. Before we start sending the "command" bits, we need to send the "device" bits. In this case, these are the 16 bits of "pre_data". In hexadecimal, they are shown as 0x20DF; so, in binary, that should be 0010000011011111. For each of these bits, you would now turn the LED on and off corresponding to the on/off times defined above. Then, you can now send the command for the key. In this case, KEY_1 is 0x8877; which, in binary, should be 1000100001110111. Again, these get converted to IR timings using the values for 1 and 0 defined above. So, in total, the IR should be flipped on and off once for the header, thirty-two more times for all the "device" and "command" bits, then flipped on once more for the trailing bit and then turned off until the next command starts. Thanks! But, I don't think there is really a question of maintaining individual audio files here; both the LIRC and Pierogi construct their timing strings dynamically as needed. It'd be awfully unwieldy otherwise! All I really need to do is set up Pierogi to switch that particular sound on and off (in a precise enough manner to match the LED timings); everything else should fall into place after that...
begin remote name LG_MKJ61842704_TV bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9069 4455 one 597 1651 zero 597 531 ptrail 591 repeat 9055 2222 pre_data_bits 16 pre_data 0x20DF gap 108123 toggle_bit_mask 0x0 begin codes ... KEY_1 0x8877 ... end codes end remote