Code Monkey home page Code Monkey logo

org-music's Introduction

Org-Music

Usage

  1. Install Org-Music by following instructions below
  2. Open sample.org in Emacs
  3. M-x org-music-mode
  4. Press speed-key o on a song to play it

Demo

./sample/play-org-music-demo.gif

Setup

Straight.el

  • Add below snippet to your Emacs init.el
    ;; Org-Music Mode
    (use-package org-music
      :straight (org-music :type git :host github :repo "debanjum/org-music")
      :after (org emms)
      :init (progn
              (setq
               org-music-file "~/Notes/Music.org"
               org-music-media-directory "~/Music/OrgMusic/"
               org-music-operating-system "linux")
              (add-hook
               'org-mode-hook
               (lambda()
                 (if (equal buffer-file-name (expand-file-name org-music-file))
                     (org-music-mode))))))
        

Basic

  1. Install below dependencies
  2. Copy org-music.el to your Emacs load-path
  3. Add below minimal snippet to your Emacs init.el
    ;; Org-Music Mode
    (use-package org-music
      :load-path "lisp/org-music.el" ; relative path to org-music.el on your local device
      :init (progn
              (setq
               org-music-file "~/Notes/Music.org"
               org-music-media-directory "~/Music/OrgMusic/"
               org-music-operating-system "linux")))
        
  4. M-x load-file RET init.el

Dependencies

  1. youtube-dl: For downloading songs from youtube.
  2. emms: For playing songs on emacs

Why was this tool created?

I was sick of the ad-hoc ephemerality of my music collection. I loved the simple sturdiness of plain-text, emacs and org-mode. Who wants to lose songs, playlists and discover the latest in clunky search interfaces when you can flow in plaintext with emacs and org-mode forever?

Where are all the features?

  • It’s plain text so you get versioning, syncing, full-text search with your tool of choice out of the box
  • It’s an org-mode file so you get tags, semantic search, dynamic playlists
  • It’s Emacs so you get to play, interact and extend your library (and org-music) without ever leaving Emacs
  • Arrange your music collection the way you like it. Let your music library reflect the path dependent nature of it’s creation or convert it into a sanitary, homogenized artist/album/song library. You can choose to do whatever you want with it.
  • Don’t let you playlists be locked away on someone else’s cloud. Carry or sync your music collection everywhere. It’s a text file after all.

Where is the actual music?

The org file is just metadata about your media collection.

  1. Org-music maintains a local cache directory where recently played media files reside
  2. If the song is not available in the cache directory it downloads music from Youtube by default
  3. The user can also explicitly specify the data source and query to search and stream music. Currently Youtube (default), nextcloud and local storage are supported as data sources. It can be easily extended to work with other data sources.

When was this tool actually created?

It has been in non-continuous development for way longer than I’d care to admit (or remember). It’s been my primary music library since 2014 and primary music player since 2018.

It started of as a soft-linked ghost replica of my then music library. I’d click the file, that’d call a shell script, that’d search on Duckduckgo for a Youtube url of the clicked filename, that VLC would then stream from Youtube! The setup has become a bit more civilized since then.

org-music's People

Contributors

albd avatar debanjum avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

albd

org-music's Issues

if: Setting file times

Hello,

I wanted to try this package, but I couldn't get it to work.

The configuration (after loading the package) :

(setq
org-music-file "/home/user/Testdedossier/orgMusic/Music.org
org-music-media-directory "/home/user/Testdedossier/orgMusic/orgMusic")
org-music-operating-system "linux")

I copy and past the sample.org into Music.org. I do the command org-music-play-random-song, and have this error :

if: Setting file times: No such file or folder, /home/user/Testdedossier/orgMusic/orgMusicRam Narayan - Raag Kirwani Alap.m4a

In addition, the user has access to commands with "--", they are supposed to be private.

Thanks you in advance for your futur answer.

Finally, I haven't managed to play a single piece of music :( with any of the commands

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.