Giter Site home page Giter Site logo

geoxor / amethyst Goto Github PK

View Code? Open in Web Editor NEW
149.0 7.0 35.0 127.37 MB

A cross-platform music player made with Typescript

Home Page: https://amethyst-geoxor.vercel.app/

License: MIT License

TypeScript 30.41% Vue 65.04% HTML 0.29% CSS 1.03% GLSL 0.20% Shell 0.42% JavaScript 2.28% Java 0.34%
music-player electron vue audio flac music audio-player cross-platform node-graph typescript

amethyst's Introduction

Discord GitHub repo size

English | 简体中文 | Русский | Polski | Türkçe | Français

Amethyst

Amethyst is an Electron-based cross-platform audio player with a node-based audio routing system, the main goal of this project is to make a music player in TypeScript to see how far the language can be stretched to prove it's possible to provide pro-level features as most DAWs / DAEs, while also providing useful tools and customizability to the end-user.

Amethyst

📝 Contributing

  • Use Node.js v19.1.0
  • Use the recommended extensions
  • Have libvips installed for linux
  • Have yarn installed

⌨️ Coding

  • Install dependencies with yarn
  • Develop with yarn dev
  • Compile with yarn package, compiled files will be in the release/build folder

amethyst's People

Contributors

bluskript avatar busteanhan avatar cimok2000 avatar citrizon avatar daev69 avatar dependabot[bot] avatar geoxor avatar henry-lang avatar imnicolasthedev avatar irdkwmnsb avatar its-treason avatar jacuniadev avatar layreboi avatar lazigoz avatar lilyshenpai avatar monsterdomosed avatar n1ko23 avatar niek-o avatar niron3206 avatar nofated095 avatar norelockk avatar okawaffles avatar otiskujawa avatar realimtv avatar smjsgaming avatar splairs avatar subtlyy avatar yukiiro-nite avatar zkian1 avatar zphrus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

amethyst's Issues

Darkmode

Add a darkmode option or even better a config file where you can choose settings.

Resizeable queue?

queue that can be resized using mouse
small enhancement
people will be able to see name of long files
image
or change to fit smaller names
image

Unable to Play Apple Audio Codecs + Issues with Detection of Apple Codecs

What?

Inability to Play ALAC or AIFF

It is not possible to play audio files in either ALAC or AIFF formats.

(see screenshots №1 and №3)

Detection of Apple* Audio Codecs

Amethyst does not show if the file in M4A container is ALAC, AAC or other codec.

(see screenshots №1 and №2)

Why?

If Amethyst is trying to compete with Foobar2000 and other players, I believe it should support majority of the codecs too.

Foobar2000 will play Apple Lossless files
(according to Wikipedia)

How?

One probable solution would be to use libavcodec, but I have no idea how one could use it with Electron (probably either bindings to the ffmpeg, or something like libav.js).

Screenshots

The file being opened is in ALAC format in M4A container; does not play
AAC audio file in M4A container; does play
AIFF file causes uncaught exception; does not play

Enhancement: Support for metadata in playerctl and other song status showing tools

Controlling songs with playerctl works fine, but it can't tell what track is playing
This is how it looks:

$ playerctl metadata
chromium mpris:length              205139592
chromium mpris:trackid             '/org/chromium/MediaPlayer2/TrackList/TrackA3056D73A5E9766EEAE31E9CEB2D948D'
chromium xesam:artist              
chromium xesam:title               /home/otiskujawa/Downloads/Geoxor_-_Kill_Aura.mp3

And how it works on other music players:

$ playerctl metadata
spotify mpris:trackid             /com/spotify/track/1lz2rkoZbAexSOoc75hG48
spotify mpris:length              205090000
spotify mpris:artUrl              https://i.scdn.co/image/ab67616d0000b27317cea63719c243091d319b54
spotify xesam:album               Kill Aura
spotify xesam:albumArtist         Geoxor
spotify xesam:artist              Geoxor
spotify xesam:autoRating          0.48999999999999999
spotify xesam:discNumber          1
spotify xesam:title               Kill Aura
spotify xesam:trackNumber         1
spotify xesam:url                 https://open.spotify.com/track/1lz2rkoZbAexSOoc75hG48

Why i need this:
It will allow me to add amethyst to my first arch rice :yay:

image

UI unreadable sometimes

As shown in the image, with some covers the text on the bottom right is unreadable. Windows has this readability thing in the accent color menu. You cant pick some colors there, because they would cause unreadability. Maybe something like that would help?

image

Discord RPC Song Name Integration Is Broken

The hell?

Most of the times files display the full file path instead of file name or "artist + name" in Discord Rich Presence Integrations.

Screenshots

File №1

The displayed song name in RPC contains the full path to the file.

The Discord Rich Presence integration on the opened file The opened file in Amethyst; all metadata is present and displayed correct

File №2

The artist name displayed in RPC is Various Artists instead of Geoxor.

The Discord Rich Presence integration on the opened file The opened file in Amethyst; all metadata is present and displayed correct

File №3

The displayed song name in RPC contains the full path to the file.

The Discord Rich Presence integration on the opened file The opened file in Amethyst; all metadata is present and displayed correct

File №4

Everything is fine.

The Discord Rich Presence integration on the opened file The opened file in Amethyst; all metadata is present and displayed correct

Other Information

  • App Version: v1.2.9 as of commit ada27a
  • Desktop Environment: macOS 12.4

Song Restarting Bug

Current song restarts when the it has been paused and the window has been minimized for a period of time

Stop media button starts first song

When i do playerctl stop(click stop button) amethyst starts playing first song (even if it was paused)
If first song is playing or paused, it ignores it

Song Names Are Shown Incorrectly on macOS

*at least on macOS; haven't tested on other OS, unfortunately

Description

When opening a folder (or any other file) the song name in the queue list is displaying the full path to that file on the computer, however the intended behaviour is, as far as I understand, to display filenames (with a file extension).

Screenshots

Screenshot of the Amethyst app (v1.1.9) on macOS
The audio file clearly has metadata tags and Amethyst shows them correctly, however the songs on the left-side bar are displaying full path to the file instead of a filename or "artist + title" name

Other Information

  • App Version: v1.1.9 (as of df0711e commit) built for arm64
  • Environment: macOS 12.3

Shuffling problem

when shuffling your list of songs while playing a song it shuffles but shows you are playing the song at the same index so if the song you were listening was the 5th one and you shuffle it shows you are playing whatever gets put as the 5th one even though its not.

Figure out why the DbMeter isn't properly displaying stereo signals

As you can see its basically mono but not really

The current implementation has this line:
https://github.com/amethyst-px/amethyst/blob/master/src/renderer/components/DbMeter.vue#L47

for (let i = 0; i < sampleBuffer.length; i += CHANNELS) {
	const powerLeft = sampleBuffer[i] ** 2;
	const powerRight = sampleBuffer[i + 1] ** 2;
}

That does i + 1 to get the next bit which i assumed would be the next bit for the next channel, but apparently this just resulted into giving me 2 bars one which is 1 sample ahead of the other one

I don't understand what the skill issue is here but i hope to resolve this :forgor:

image

some songs cant play because the url generated has fucked unicode

example :
file:///G:/Soul%20Seek/complete/sTlx/Feryquitous/[2020.05.01]%20Feryquitous%20%E2%80%94%20Ideal%20%EF%BC%9A%20sub%20works%20collection%20%7Bno%20cat#}%20[WEB-FLAC]\04.%20Feryquitous%20%E2%80%94%20%E8%BB%A2%E7%9E%AC.flac

while it should be :
file:///G:/Soul%20Seek/complete/sTlx/Feryquitous/[2020.05.01]%20Feryquitous%20%E2%80%94%20Ideal%20%EF%BC%9A%20sub%20works%20collection%20%7Bno%20cat%23%7D%20[WEB-FLAC]/04.%20Feryquitous%20%E2%80%94%20%E8%BB%A2%E7%9E%AC.flac

the difference is failing to convert #} into %23%7D

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.