anchor.diff:        202-second track second cd.mp3
   ----
   
  -The player will speak the actual name of the author and the title of the book by reading
  +The player will speak the author's name and the title of the book by reading
   the directory names. Each track must start with a unique number in correct order, followed by
   a dash with the suffix of `.mp3`. The actual name of the track is arbitrary.
   
  -A very convenient way to create this structure is to rip CDs with `abcde`. It will 
  -also handle multi CD books when used with commandline option `-W`, followed by
  +A very convenient way to create this structure is to rip CDs with https://code.google.com/p/abcde[abcde] (on 
  +your main computer and not on the Pi, of course). 
  +It will also handle multi CD books when used with commandline option `-W`, followed by
   the number of the CD:
   
   ----
  -$ abcde -W1
  -$ abcde -W2
  -----
  +$ abcde -W1 -c abcde_book.conf
  +$ abcde -W2 -c abcde_book.conf
  +...
  +----
  +
  +The configuration file `abcde_book.conf` is included in the main directory of this
  +project. Copy it to the computer you are using for ripping and use it accordingly.
  +
  +The most important configuration parameter inside this file is `OUTPUTFORMAT`:
  +
  +----
  +OUTPUTFORMAT='${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM}-${TRACKFILE}'
  +----
  +
  +This will produce track names in the correct format.
   
   == Shortcomings and Improvements
   
  -* Parts of the code might not really be thread-safe, should be reviewed.
  +* Checking of changes to the currently selected book in the main
  +loop by polling is not really a good implementation.
   * The way button presses are handled could be improved. Implementation
     of an event queue might be a way to ensure that no button events are lost.
  +* Parts of the code might not really be thread-safe, should be reviewed.
  +* The language configuration for the text-to-speech engine is hardcoded.
  +This does not work if the author's name is in a foreign language
  +or a title contains foreign language words.
   
   == Copyright and License
   
  
positive.code: 
  image::doc/buttons.png[]
  
  CAUTION: GPIO numbering changed between board revisions. If your board is Rev. 2 (most likely),
  you must make a small change in file config.py!
  
  Since my version of the Raspberry Pi had no mounting holes, I used the bottom part of
  a cheap Raspberry Pi case for mounting. The bottom was glued with epoxy to the 
  mounting posts of the Euro Box, as can be seen in the picture above.
  
negative.code: sqlite> .exit
  ----
  
  == TTS Language Configuration
  
  The language configuration for the text-to-speech engine is hardcoded in the code and
  currently set to german. Find the following line in `main.py`:
  
  ----
  subprocess.call(["pico2wave", "-lde-DE", "-w/tmp/tts.wav", text])
  ----
  
  To change it to US-english, for example, modify it a follows:
  
  ----
  subprocess.call(["pico2wave", "-len-US", "-w/tmp/tts.wav", text])
  ----
  
  == GPIO Numbering and Board Revisions
  
  CAUTION: GPIO numbering changed between board revisions. If your board is Rev. 2 (most likely),
  you must make a small change in file config.py!
  
  [source,python]
  ----
  gpio_pins = [
      { 'pin_id': 21, 'callback' : 'rewind', 'bounce_time' : 2000 }, # Board Rev. 1
      #{ 'pin_id': 27, 'callback' : 'rewind', 'bounce_time' : 2000 }, # Board Rev. 2
      { 'pin_id': 11, 'callback' : 'toggle_pause', 'bounce_time' : 2000 },
      { 'pin_id': 9, 'callback' : 'next_title', 'bounce_time' : 2000 },
      { 'pin_id': 22, 'callback' : 'volume_down', 'bounce_time' : 1000 },
      { 'pin_id': 10, 'callback' : 'volume_up', 'bounce_time' : 1000 }
  ]
  ----
  
  === Autostart on Boot
  
  The player must be configured to start automatically playing 
  the current book when booting the pi.
  
  ----
  $ sudo nano /etc/rc.local
  