My encoding scheme is based around addition mod 6 for each bit. Each bit is associated with a number 0-5 for each metal, which gets added if the bit is 1. I wrote a program to search for the numbers that result in valid encodings. My first solutions implemented this using two Ravari's wheels which were bonded together and got wanded by the fires to trigger some number of pivots on each wheel as they are reset. I then made some modifications to this basic encoding scheme to allow for better implementation. For the second metal, a bit will be skipped if the previous bit was 1. This naturally happens if resetting the metal takes longer than 1 pseudo-period. The other property I wanted was for the maximum sum on the second metal to never exceed 5, which allows for quicksilver to easily be used instead of Ravari's wheel. This required never skipping the last bit (or the 3rd bit), since otherwise no encodings were found with this property. Some other nice properties that just happened to work out were that the largest number added to the second metal was 2, and there were 0's for bits 1 and 3. Both of these properties help with timings. The final modification was inverting the last bit, which is completely equivalent but was easier to do with my final machine. There are multiple encodings which match the above description, so I had some other heuristics to narrow them down based on what is easiest for my machine. Here is my final encoding scheme: Add to the wheel metal for each bit: 2, 1, 1, 3, 1, Add to the projected metal for each bit, skipping if the previous bit was 1 and not skipped. The last bit is inverted and never skipped: 2, 0, 2, 0, 1,