Coder Social home page Coder Social logo

bouzidanas / lyr-ix Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 2.0 16.18 MB

A component for displaying synced song lyrics.

Home Page: https://lyr-ix.vercel.app

License: MIT License

JavaScript 1.94% HTML 1.00% CSS 2.62% TypeScript 94.44%
lrc lyrics music reactjs typescript

lyr-ix's Introduction

Hi there, I'm Anas 👋

A little about me...

  • 🔭 I’m currently exploring the exciting realms of React and UI design, combining my passion for frontend development with creating beautiful and intuitive user interfaces.
  • 🌱 I’m currently learning about the various ways other creative minds are using threejs to create fresh and engaging user experiences.
  • 👯 I’m looking to collaborate on further developing rhp, a charting component library built entirely in React and designed with web devs in mind.
  • 💬 Ask me about designing and developing in-house and open-source tools for developers and scientists alike, with a focus on Data Visualization 📊.

Languages and tools I have used before (or am currently using) include...

Backend

Python Java C++ Node.js PHP Octave

Frontend

HTML5 CSS3 SASS TailwindCSS JavaScript TypeScript React Threejs Next JS Astro

Packaging

NPM RollupJS Webpack


My Github stats...

bouzidanas's Stats

bouzidanas's Streak

bouzidanas's Top Languages

lyr-ix's People

Contributors

bouzidanas avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

diarpu

lyr-ix's Issues

lyrics do not properly scroll to start position after mount

Scrolling to position works in after subsequent rerenders, but does not scroll to correct starting place right after component mounts.

The issue is likely related to changing dimensions. The only thing that comes to mind is the loading of fonts which can change div heights which can result in improper calculation of scroll distance.

Add a way to play/pause/goToLine from outside the component

The <Lyrics> component contains an internal timer that dictates the timing of the line-by-line highlighting. The component also has built-in interactivity and keyboard controls. However, there currently isnt any way to control the components line-by-line highlighting programmatically from outside the component.

This is an important feature that is required for actual syncing with music and thus, should to be implemented and tested before the first release.

Module '"lyr-ix"' has no exported member 'ActionsHandle'

image
somehow when I use npm install bouzidanas/lyr-ix to install and follow <LyrixCard> component in src/components/LyrixCard.js It's missing:

export type ActionsHandle = {
    play: () => void;
    pause: () => void;
    isPlaying: () => boolean;
  }

but in node-module: 
image

Although adding it solves the problem but it won't work in production. Can you have a check on it again?

stabilize inner timer

The logic around the handling of the inner timer needs to be improved.

Timer should be recreated/updated before every call of the timers play function. Since the timer needs to exist between renders, it will probably have to be stored in a ref. Note also, that the timer's delay needs to be updated to the next delay value before the execution of the next callback. The timing of this requirement is important and what poses a challenge.

The current approach is to recreate/update the timer on every render and prepare the delays for the next callback and the one after that. This ends up being problematic when the number of renders between timer callbacks varies. The latter has resulted in many conditionals surrounding the delay value.

Ultimately, I believe the best solution is neither of the above actually. I believe adding a couple of features to react-use-precision-timer will work best long term. The features to add are:

  • ability to pass an array for the delay prop
  • new starting index prop for the delay array whose value can be changed after creation of the timer.

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.