Alex Vong | 18 Dec 14:09 2015
Picon

emms manual is not accessible in emacs

Hi,

I notice the emms manual is not accessible in emacs from the info
buffer. I think it is because the emms manual has the file name `emms',
instead of `emms.info'. Can anyone confirm this?

Cheers,
Alex

Yoni Rabkin | 10 Dec 22:51 2015
Picon

Simplifying Emms setup


Emms currently has a unique configuration system. You require
`emms-setup' feature and then call one of the configuration levels, such
as (emms-all). This was originally envisioned as a setup where the
developers of the individual Emms packages would begin by placing their
code in the emms-devel configuration and then migrate them to emms-all
as the code matured. However, nobody really does this.

My plan is to merge the `emms-all', `emms-devel' and `emms-standard'
configuration levels so that they all load
everything. `emms-minimalistic' will remain the same.

The manual will advise to call `emms-all' and won't mention `emms-devel'
and `emms-standard'.

This shouldn't break anyone's existing setup.

--

-- 
   "Cut your own wood and it will warm you twice"

Alex Schröder | 9 Dec 17:48 2015
Picon
Gravatar

EMMS User Stories

Hi all

I just talked to yrk on #emacs and he said I should post my feedback to the mailing list. I'm a long-time Emacs user that's trying to get away from iTunes and Amazon Music.

One such issue:

I'm on Windows, so I installed mp3info and mpg123, no problem. Today I noticed that EMMS would skip over files in the folder c:/Users/asc/Music/Arvo Pärt. When I add the directory in question to the playlist, it looks fine (but no mp3 info, which I find hard to believe):

c:/Users/asc/Music/Arvo Pärt/Miserere/01-01- Miserere.mp3
c:/Users/asc/Music/Arvo Pärt/Miserere/01-02- Festina Lente.mp3
c:/Users/asc/Music/Arvo Pärt/Miserere/01-03- Sarah Was Ninety Years Old.mp3

When I want to play these tracks, they are all silently skipped.

It would be nice to get some feedback about the problem. File was added but cannot be read, perhaps? Or something even better. I'm assuming the "ä" in the directory is the problem?


Part of my Windows config:

(when (eq (window-system) 'w32)
  (setenv "LANG" "de_CH.UTF8")
  (prefer-coding-system 'utf-8)
  (setq default-file-name-coding-system 'cp1252))

Something about this is causing the problem, perhaps?


My EMMS config:

(dolist (dir '("C:/Program Files/mp3info-0.8.5-win"
      "C:/Program Files (x86)/mpg123-1.22.0-x86-64"))
  (when (file-directory-p dir)
    (add-to-list 'exec-path dir)))

(dolist (dir (list (concat (getenv "USERPROFILE") "/Music")
  "~/Music"))
  (when (file-directory-p dir)
    (setq emms-source-file-default-directory (expand-file-name dir))))

(run-with-idle-timer
 10 nil
 (lambda ()
   (require 'emms-setup)
   (emms-standard)
   (if (executable-find "mpg321")
       (setq emms-player-list '(emms-player-mpg321))
     (define-emms-simple-player mpg123 '(file url)
       (emms-player-simple-regexp "mp3" "mp2")
       "mpg123")
     (setq emms-player-list '(emms-player-mpg123)))))


Cheers
Alex
<div><div dir="ltr">Hi all<div><br></div>
<div>I just talked to yrk on #emacs and he said I should post my feedback to the mailing list. I'm a long-time Emacs user that's trying to get away from iTunes and Amazon Music.</div>
<div><br></div>
<div>One such issue:</div>
<div><br></div>
<div>I'm on Windows, so I installed mp3info and mpg123, no problem. Today I noticed that EMMS would skip over files in the folder&nbsp;c:/Users/asc/Music/Arvo P&auml;rt. When I add the directory in question to the playlist, it looks fine (but no mp3 info, which I find hard to believe):</div>
<div><br></div>
<div>
<div>c:/Users/asc/Music/Arvo P&auml;rt/Miserere/01-01- Miserere.mp3</div>
<div>c:/Users/asc/Music/Arvo P&auml;rt/Miserere/01-02- Festina Lente.mp3</div>
<div>c:/Users/asc/Music/Arvo P&auml;rt/Miserere/01-03- Sarah Was Ninety Years Old.mp3</div>
</div>
<div><br></div>
<div>When I want to play these tracks, they are all silently skipped.</div>
<div><br></div>
<div>It would be nice to get some feedback about the problem. File was added but cannot be read, perhaps? Or something even better. I'm assuming the "&auml;" in the directory is the problem?</div>
<div><br></div>
<div><br></div>
<div>Part of my Windows config:</div>
<div><br></div>
<div>
<div>(when (eq (window-system) 'w32)</div>
<div>&nbsp; (setenv "LANG" "de_CH.UTF8")</div>
<div>&nbsp; (prefer-coding-system 'utf-8)</div>
<div>&nbsp; (setq default-file-name-coding-system 'cp1252))</div>
</div>
<div><br></div>
<div>Something about this is causing the problem, perhaps?</div>
<div><br></div>
<div><br></div>
<div>My EMMS config:</div>
<div><br></div>
<div>
<div>(dolist (dir '("C:/Program Files/mp3info-0.8.5-win"</div>
<div>
<span class="">	</span> &nbsp; &nbsp; &nbsp; "C:/Program Files (x86)/mpg123-1.22.0-x86-64"))</div>
<div>&nbsp; (when (file-directory-p dir)</div>
<div>&nbsp; &nbsp; (add-to-list 'exec-path dir)))</div>
<div><br></div>
<div>(dolist (dir (list (concat (getenv "USERPROFILE") "/Music")</div>
<div>
<span class="">		</span> &nbsp; "~/Music"))</div>
<div>&nbsp; (when (file-directory-p dir)</div>
<div>&nbsp; &nbsp; (setq emms-source-file-default-directory (expand-file-name dir))))</div>
<div><br></div>
<div>(run-with-idle-timer</div>
<div>&nbsp;10 nil</div>
<div>&nbsp;(lambda ()</div>
<div>&nbsp; &nbsp;(require 'emms-setup)</div>
<div>&nbsp; &nbsp;(emms-standard)</div>
<div>&nbsp; &nbsp;(if (executable-find "mpg321")</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;(setq emms-player-list '(emms-player-mpg321))</div>
<div>&nbsp; &nbsp; &nbsp;(define-emms-simple-player mpg123 '(file url)</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;(emms-player-simple-regexp "mp3" "mp2")</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;"mpg123")</div>
<div>&nbsp; &nbsp; &nbsp;(setq emms-player-list '(emms-player-mpg123)))))</div>
</div>
<div><br></div>
<div><br></div>
<div>Cheers</div>
<div>Alex</div>
</div></div>
Petteri Hintsanen | 18 Oct 22:25 2015
Picon
Picon

[PATCH] New metadata extraction program

New program emms-print-taglib-metadata uses TagLib's C++ interface to
extract track information.
---
 AUTHORS                            |  1 +
 Makefile                           |  5 ++
 lisp/emms-info.el                  | 14 +++++-
 src/emms-print-taglib-metadata.cpp | 96 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 114 insertions(+), 2 deletions(-)
 create mode 100644 src/emms-print-taglib-metadata.cpp

diff --git a/AUTHORS b/AUTHORS
index 3111770..e84c4ab 100644
--- a/AUTHORS
+++ b/AUTHORS
 <at>  <at>  -27,6 +27,7  <at>  <at>  Ye Wenbin		 <wenbinye <at> gmail.com>
 Yoni (Johnathan) Rabkin  <yrk <at> gnu.org>
 mathias.dahl 		 <mathias.dahl>
 Rasmus Pank Roulund      <emacs <at> pank.eu>
+Petteri Hintsanen        <petterih <at> iki.fi>

 ;; Local variables:
 ;; coding: utf-8
diff --git a/Makefile b/Makefile
index c0846d6..dda3640 100644
--- a/Makefile
+++ b/Makefile
 <at>  <at>  -4,6 +4,8  <at>  <at>  DOCDIR=doc/
 LISPDIR=lisp
 SRCDIR=src

+CXXFLAGS=-std=c++11
+
 ALLSOURCE=$(wildcard $(LISPDIR)/*.el)
 ALLCOMPILED=$(wildcard $(LISPDIR)/*.elc)

 <at>  <at>  -37,6 +39,9  <at>  <at>  docs:
 emms-print-metadata: $(SRCDIR)/emms-print-metadata.c
 	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $(SRCDIR)/$ <at>  $< `taglib-config --cflags --libs` -ltag_c

+emms-print-taglib-metadata: $(SRCDIR)/emms-print-taglib-metadata.cpp
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $(SRCDIR)/$ <at>  $< `taglib-config --cflags --libs`
+
 install:
 	test -d $(SITELISP) || mkdir -p $(SITELISP)
 	test -d $(INFODIR) || install -d $(INFODIR)
diff --git a/lisp/emms-info.el b/lisp/emms-info.el
index cfc206b..46b8cd9 100644
--- a/lisp/emms-info.el
+++ b/lisp/emms-info.el
 <at>  <at>  -1,6 +1,6  <at>  <at> 
 ;;; emms-info.el --- Retrieving track information

-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation Inc.
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2015  Free Software Foundation Inc.

 ;; Author: Jorgen Schaefer <forcer <at> forcix.cx>

 <at>  <at>  -29,16 +29,26  <at>  <at> 
 ;; The code will add info symbols to the track. The following symbols
 ;; are defined:

-;; info-artist - string naming the artist
+;; info-albumartist - string naming the album artist
+;; info-albumartistsort - string key for album artist collation
+;; info-artist - string naming the track artist
+;; info-artistsort - string key for artist collation
 ;; info-composer - string naming the composer
+;; info-composersort - string key for composer collation
 ;; info-performer - string naming the performer
 ;; info-title - string naming the title of the song
+;; info-titlesort - string key for title collation
 ;; info-album - string naming the album
+;; info-albumsort - string key for album collation
 ;; info-tracknumber - string(?) naming the track number
 ;; info-discnumber - string naming the disc number
 ;; info-year - string naming the year
+;; info-originalyear - string naming the original release year
+;; info-date - string naming the release date
+;; info-originaldate - string naming the original release date
 ;; info-note - string of free-form entry
 ;; info-genre - string naming the genre
+;; info-label - string for the record label
 ;; info-playing-time - number giving the seconds of playtime

 ;;; Code:
diff --git a/src/emms-print-taglib-metadata.cpp b/src/emms-print-taglib-metadata.cpp
new file mode 100644
index 0000000..9e3f1d7
--- /dev/null
+++ b/src/emms-print-taglib-metadata.cpp
 <at>  <at>  -0,0 +1,96  <at>  <at> 
+/* emms-print-taglib-metadata.cpp --- Info function for TagLib
+   Copyright (C) 2015  Free Software Foundation, Inc.
+
+Author: Petteri Hintsanen <petterih <at> iki.fi>
+
+This file is part of EMMS.
+
+EMMS is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+EMMS is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with EMMS; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
+
+#include <taglib/fileref.h>
+#include <taglib/tag.h>
+#include <taglib/tpropertymap.h>
+#include <iostream>
+
+static const std::vector<std::string> tags_to_extract = {
+  "album",
+  "albumsort",
+  "albumartist",
+  "albumartistsort",
+  "artist",
+  "artistsort",
+  "composer",
+  "composersort",
+  "performer",
+  "year",
+  "originalyear",
+  "date",
+  "originaldate",
+  "genre",
+  "label",
+  "title",
+  "titlesort",
+  "tracknumber",
+  "discnumber"
+};
+
+void print_tag (const TagLib::PropertyMap& tags, const std::string& tag);
+
+int
+main (int argc, char* argv[])
+{
+  if (argc != 2)
+    {
+      std::cerr << "Usage: emms-print-metadata file.{mp3,ogg,flac}\n"
+        "Other formats may work as well.\n";
+      return 1;
+    }
+
+  TagLib::FileRef file (argv[1]);
+  if (file.isNull ()) return 1;
+
+  const auto tags = file.file ()->properties ();
+
+  for (const auto& tag : tags_to_extract)
+    {
+      print_tag (tags, tag);
+    }
+
+  int length = 0;
+  if (file.audioProperties ())
+    {
+      auto properties = file.audioProperties ();
+      length = properties->length ();
+    }
+  std::cout << "info-playing-time=" << length << std::endl;
+
+  return 0;
+}
+
+void
+print_tag (const TagLib::PropertyMap& tags, const std::string& tag)
+{
+  TagLib::StringList values = tags[tag];
+  if (!values.isEmpty ())
+    {
+      // TODO: Extract all values, not only the first one.  EMMS needs
+      // to be extended to handle such values.
+      auto value = values.front ();
+      std::cout << "info-" << tag << "=" << value.to8Bit (true) << std::endl;
+    }
+}
+
+/* emms-print-taglib-metadata.cpp ends here. */
--

-- 
2.1.4

Yoni Rabkin | 13 Sep 15:55 2015
Picon

Re: [emms-mode-line-cycle] integrate with emms-git (#2)


> If you wish you can maintain your file in the emms-repo.  That way it
> benefits all users of the development version of EMMS.  Further, we can
> make it available via (emms-devel).  Perhaps it may also make sense to
> integrate your changes further with the existing modeline functionality.
>
> Perhaps, I can review your file if you assign the copyright, though a
> quick skim suggest it's in good condition.

I agree with this assessment.

>> I think some feedback from users or download statistic will be needed
>> because only few days have passed since this package was registered with MELPA.
>
> As you prefer.

I have no problem with including this in Emms, pending the copyright
paperwork.

It would need to be disabled by default, but easily enabled with
something like (emms-scrolling t). Finally, please ask for a user manual
entry to go along with it.

Thanks!

--

-- 
   "Cut your own wood and it will warm you twice"

Rasmus | 24 May 14:58 2015
Picon

[patch] move tracks in playlist

Hi,

This patch adds support for moving tracks in the playlist.

Since I change other playlist functions (not user-visible, I think), I'll
wait a couple of days before merging to see if anybody is opposed to any
changes.

A small rant:

The playlist is a mess.  Faces differ depending on how they were inserted
into the buffer.  The displayed string depends on how it was inserted.
The indentation is also a function of insertion method.

One thing I would be cool would be use tabulated list (like packaged mode)
and have /one/ format-string that controls how items look and are aligned.
I'd have to check if cover art can work with this.

Rasmus

-- 
Together we will make the possible totalllly impossible!
Hi,

This patch adds support for moving tracks in the playlist.

Since I change other playlist functions (not user-visible, I think), I'll
wait a couple of days before merging to see if anybody is opposed to any
changes.

A small rant:

The playlist is a mess.  Faces differ depending on how they were inserted
into the buffer.  The displayed string depends on how it was inserted.
The indentation is also a function of insertion method.

One thing I would be cool would be use tabulated list (like packaged mode)
and have /one/ format-string that controls how items look and are aligned.
I'd have to check if cover art can work with this.

Rasmus

--

-- 
Together we will make the possible totalllly impossible!
İsmail Döner | 10 Apr 17:53 2015
Picon

playing 24bit with emms-mplayer

emms with mplayer plays most flac files just fine but no sound on some other flac files. without emms, mplayer plays all of them.
with the suggestions of "yrk" (on #emacs) i was able to play those too.

it seems emms falls back to other players when the flac is 24bit (i had emms-player-list set to '(emms-player-mplayer emms-player-ogg123 emms-player-mpg321)", so i removed other players from the list and now it plays those files as well.

thank you.
<div><div dir="ltr">
<div>
<div>emms with mplayer plays most flac files just fine but no sound on some other flac files. without emms, mplayer plays all of them.<br>
</div>with the suggestions of "yrk" (on #emacs) i was able to play those too.<br><br>it seems emms falls back to other players when the flac is 24bit (i had emms-player-list set to '(emms-player-mplayer emms-player-ogg123 emms-player-mpg321)", so i removed other players from the list and now it plays those files as well.<br><br>
</div>thank you. <br>
</div></div>
Sebastian Soderqvist | 29 Mar 19:57 2015
Picon

Problem with emms-librefm-stream - bad HTTP server reponse

Hey list,

On my quest to find a media player and new interesting music i found
emms and libre.fm, i am now trying to stream music from libre.fm using
the emms-librefm-stream function but i am unsuccessful. The function
returns "bad HTTP server reponse". Allow me to describe my current
configuration.

emms version: 4.0

External players installed:
 * mpg321
 * ogg123
 * mplayer

Configuration in .emacs.el:

 (add-to-list 'load-path "~/.emacs.d/emms/lisp")
 (require 'emms-setup)
 (emms-devel)
 (emms-default-players)

 (setq emms-librefm-scrobbler-username "USERNAME"
       emms-librefm-scrobbler-password "PASSWORD")

Looking at emms-librefm-stream.el i see that "bad HTTP server reponse"
is thrown when the stream server does not respond with a "200 OK". After
i have tried to start the stream i see that the varible
emms-librefm-stream-debug is set to:

"HTTP/1.1 302
https://libre.fm/radio/handshake.php?version=1.3.0.58&platform=linux&username=USERNAME&passwordmd5=89d023a1beae58cb6e1a0d966d952d13&language=en\nServer:
Varnish\nLocation:
https://libre.fm/radio/handshake.php?version=1.3.0.58&platform=linux&username=USERNAME&passwordmd5=89d022a1beae48cb6e2a0d966d951d13&language=en\nAccept-Ranges:
bytes\nDate: Sun, 29 Mar 2015 17:16:45 GMT\nX-Varnish: 1351847855\nAge: 0\nVia: 1.1
varnish\nConnection: close\n\n"

This is where i am stuck, any help i can get i appreciated. And if this
is not the correct place for these kinds of questions i do apologies.

--

-- 

Sebastian Soderqvist

Dieter Deyke | 22 Mar 12:52 2015
Picon
Gravatar

emms-volume now requires emms-browser to be loaded


Loading emms-volume without first loading emms-browser now errors out:

Debugger entered--Lisp error: (void-variable emms-browser-mode-map)
  (define-key emms-browser-mode-map (kbd "+") (quote emms-volume-raise))
  eval-buffer()  ; Reading at buffer position 3158
  funcall-interactively(eval-buffer)
  call-interactively(eval-buffer record nil)
  command-execute(eval-buffer record)
  execute-extended-command(nil "eval-buffer" nil)
  funcall-interactively(execute-extended-command nil "eval-buffer" nil)
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)

My setup:

; ---------- EMMS ----------

(require 'emms-setup)
(emms-minimalistic)
(eval-and-compile
  (require 'emms-playlist-mode)
  (require 'emms-metaplaylist-mode)
  (require 'emms-volume))
(setq emms-playlist-default-major-mode 'emms-playlist-mode)
(setq emms-player-list '(emms-player-vlc))
(setq emms-stream-default-action "play")

--

-- 
Dieter Deyke
mailto:dieter.deyke <at> gmail.com
Get my Gnupg key:
gpg --keyserver keys.gnupg.net --recv-keys B116EA20

Rasmus | 15 Mar 03:52 2015
Face
Picon

[bug?] libre.fm scrobbing when offline

Hi,

I was working at a cafe today.  EMMS doesn't behave nicely when there's no
internet.  In particular I got the message

    open-network-stream: turtle.libre.fm/80 Name or service not known

and I had to call emms-smart-browse twice to open the browser.

At the very least EMMS should catch the error and write out a message or
something, but otherwise ignore the error.  Even better would be start the
EMMS scrobber in offline-mode, where played songs and times are stored and
uploaded on next connection.  Bonus points if it will eventually also be
able to upload the scrobbled-log from my Rockbox music player.

—Rasmus

--

-- 
Hooray!

_______________________________________________
Emms-help mailing list
Emms-help <at> gnu.org
https://lists.gnu.org/mailman/listinfo/emms-help
Rasmus | 13 Mar 01:18 2015
Face
Picon

[patch] PulseAudio volume

Hi,

I added support for the awesome¹ volume control of PuleAudio.  It would be
great if somebody with more advance PA setup would test it before I push
it.  ATM it increases the *system volume*, but in principal it could be
used to change the volume of whatever EMMS uses for playing.  Let me know
if you think this something that EMMS should do (I don't know how to
actually do this via the terminal).

Thanks,
Rasmus

Footnotes: 
¹ Why is PA awesome?  Because it can set an arbitrary volume, e.g.  200%
  which is great for laptops.

-- 
I hear there's rumors on the, uh, Internets. . .
Hi,

I added support for the awesome¹ volume control of PuleAudio.  It would be
great if somebody with more advance PA setup would test it before I push
it.  ATM it increases the *system volume*, but in principal it could be
used to change the volume of whatever EMMS uses for playing.  Let me know
if you think this something that EMMS should do (I don't know how to
actually do this via the terminal).

Thanks,
Rasmus

Footnotes: 
¹ Why is PA awesome?  Because it can set an arbitrary volume, e.g.  200%
  which is great for laptops.

--

-- 
I hear there's rumors on the, uh, Internets. . .

Gmane