Index: audio.views.inc
===================================================================
--- audio.views.inc	(revision 7)
+++ audio.views.inc	(working copy)
@@ -97,6 +97,29 @@
     ),
   );
 
+  $data['audio']['play_link'] = array(
+    'title' => t('Player link/flash'),
+    'help' => t('This will display a flash player/link.'),
+    'real field' => 'nid',
+    'field' => array(
+      'handler' => 'audio_handler_field_player',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['audio']['url_download'] = array(
+    'title' => t('Download link'),
+    'help' => t('This will display a download link if the node allows it.'),
+    'real field' => 'nid',
+    'field' => array(
+      'handler' => 'audio_handler_field_url_download',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
 
   foreach (audio_get_tags_allowed() as $tag) {
     $data['audio_metadata_'. $tag]['table']['group']  = t('Audio');
@@ -134,6 +157,7 @@
         'handler' => 'views_handler_argument_string',
       ),
     );
+    
 /*
     $data['audio_metadata_'. $tag]['clean'] = array(
       'title' => t('Cleaned @tag value', array('@tag' => $tag)),
@@ -309,3 +333,20 @@
   $query->add_orderby('', $sort['field'] .' + 0', $sort['sortorder'], $sortinfo['table'] .'_'. $sortinfo['field']);
 
 }
+
+function audio_views_handlers() {
+  return array(
+    'info' => array(
+      'path' => drupal_get_path('module', 'audio') . '/views/handlers',
+    ),
+    'handlers' => array(
+      // field handlers
+      'audio_handler_field_url_download' => array(
+        'parent' => 'views_handler_field',
+      ),
+      'audio_handler_field_player' => array(
+        'parent' => 'views_handler_field',
+      ),
+    ),
+  );
+}
Index: views/handlers/audio_handler_field_player.inc
===================================================================
--- views/handlers/audio_handler_field_player.inc	(revision 0)
+++ views/handlers/audio_handler_field_player.inc	(revision 0)
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Show a embedded player for an audio file
+ */
+class audio_handler_field_player extends views_handler_field {
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $default = array_keys(audio_get_players('names'));
+    $default = $default[0];
+    $options['player'] = array('default' => $default);
+
+    return $options;
+  }
+
+  /**
+   * Provide link to the page being visited.
+   */
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $players = array();
+    foreach (audio_get_players('names') as $name => $player) {
+      $players[$name] = $player['title'];
+    }
+    $form['player'] = array(
+      '#title' => t('Select a player'),
+      '#type' => 'select',
+      '#options' => $players,
+      '#default_value' => $this->options['player'],
+    );
+  }
+
+  function pre_render($values) {
+    $field = $this->field_alias;
+    $this->items = array();
+    foreach ($values as $v) {
+      $node = node_load($v->nid);
+      $this->items[$field][$v->nid] = audio_get_node_player($node, $this->options['player']);
+    }
+  }
+
+  function render($values) {
+    $field = $this->field_alias;
+    if ($this->items[$field]) {
+      return $this->items[$field][$values->nid];
+    }
+    return;
+  }
+
+}
Index: views/handlers/audio_handler_field_url_download.inc
===================================================================
--- views/handlers/audio_handler_field_url_download.inc	(revision 0)
+++ views/handlers/audio_handler_field_url_download.inc	(revision 0)
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * Show a download link to an audio file
+ */
+class audio_handler_field_url_download extends views_handler_field {
+  function construct() {
+    parent::construct();
+  }
+
+  function pre_render($values) {
+    $field = $this->field_alias;
+    $this->items = array();
+    foreach ($values as $v) {
+      $node = node_load($v->nid);
+      $this->items[$field][$v->nid] = $node->url_download;
+    }
+  }
+
+  function render($values) {
+    $field = $this->field_alias;
+    if ($this->items[$field]) {
+      return l(t('Download'), $this->items[$field][$values->nid]);
+    }
+    return;
+  }
+
+}
