Beatles Songs and Hexagons
Befunge-93, width = 13 15, titles = 31 24 chars

A power outage last night prevented me from updating this when I figured it out, but I managed to reduce the triangle width and increase the song lengths!

Pointing-up program: "Dig a Pony", 10 characters:

      v
     v&gt; 
    v#  &gt;
   "&lt;     
  v &lt;&gt;"y"v&gt;
 &lt;v"Dig a P"
"^&gt;:#,_@.&gt;"no


Explanation

I REALLY took advantage of Befunge's wrap-around trick and I picked "Dig a Pony" specifically because it had a space at the 6th position. This allows program flow to move through the song name. Try it in the online interpreter to see how it works.

Pointing-down program: "If I Fell", 9 characters:

&lt; v"f I Fell"
 v&gt;"I"&gt;:#,_@
  "raC yM "
   v"Drive


       .


(Period is extraneous and only included to make the other lines show up.)

Explanation

The only relevant lines here are the first two. I used the wrap-around trick (the instruction pointer is sent left immediately) to squeeze in one more character. The second line prints out the song name.

Combined: "Drive My Car", 12 characters:

      v&lt; v"f I Fell"v
     v&gt; v&gt;"I"&gt;:#,_@v&gt; 
    v#  &gt;"raC yM "v#  &gt;
   "&lt;     v"Drive"&lt;     
  v &lt;&gt;"y"v&gt;     v &lt;&gt;"y"v&gt;
 &lt;v"Dig a P"   &lt;v"Dig a P"
"^&gt;:#,_@.&gt;"no "^&gt;:#,_@.&gt;"no
&lt; v"f I Fell"v&lt; v"f I Fell"
 v&gt;"I"&gt;:#,_@v&gt; v&gt;"I"&gt;:#,_@
  "raC yM "v#  &gt;"raC yM "
   v"Drive"&lt;     v"Drive
         v &lt;&gt;"y"v&gt;     
        &lt;v"Dig a P"   
       "^&gt;:#,_@.&gt;"no 


Here's the same thing, but with lines added to show the hexagon and triangles.

       -----------------
      /v\&lt; v"f I Fell"/v\
     /v&gt; \v&gt;"I"&gt;:#,_@/v&gt; \
    /v#  &gt;\"raC yM "/v#  &gt;\
   /"&lt;     \v"Drive/"&lt;     \
  /v &lt;&gt;"y"v&gt;\     /v &lt;&gt;"y"v&gt;\
 /&lt;v"Dig a P"\   /&lt;v"Dig a P"\
/"^&gt;:#,_@.&gt;"no\ /"^&gt;:#,_@.&gt;"no\
-------------------------------
\&lt; v"f I Fell"/v\&lt; v"f I Fell"/
 \v&gt;"I"&gt;:#,_@/v&gt; \v&gt;"I"&gt;:#,_@/
  \"raC yM "/v#  &gt;\"raC yM "/
   \v"Drive/"&lt;     \v"Drive/
    \     /v &lt;&gt;"y"v&gt;\     /
     \   /&lt;v"Dig a P"\   /
      \ /"^&gt;:#,_@.&gt;"no\ /
       -----------------


Explanation

This is where the third and fourth lines of the pointing-down triangle come into play. There are several redirects at the edge of both triangles that serve to move the instruction pointer through those two lines and push "Drive My Car" onto the stack. Then it is printed out using the &gt;:#,_@ bit in the pointing-up triangle. Incidentally, both the left and the right pointing-up triangles are used.

There might be a way to use more of the empty space, but I think my time is better spent on other questions. :P