Giter VIP home page Giter VIP logo

super-badmen-viper / nsmusics Goto Github PK

View Code? Open in Web Editor NEW
665.0 5.0 37.0 634.03 MB

NSMusicS,Multi platform Multi mode Music Software ,Electron+.net core+AI

License: GNU Affero General Public License v3.0

C# 86.16% HTML 0.08% Kotlin 0.01% Swift 0.06% Objective-C 0.01% Dart 3.02% CMake 0.64% C++ 0.80% C 0.05% Java 0.01% JavaScript 0.09% CSS 0.09% Python 0.28% TypeScript 0.85% Vue 7.87%
music music-player audio-player player audio multimodal deep-learning electron javascript machine-learning

nsmusics's Introduction

Hi there 👋 , Welcome to my Github space. Here is my readme

Anurag's GitHub stats

Mr. Xiang Cheng

  • Undergraduate students (3 year)(None temporarily professional title)
  • Nanjing University of Information Science & Technology (Home)
  • Computer Science and Technology
  • Email: [email protected] or [email protected]

Biography

  • None temporarily
  • Updating......

Research Interests

  • Maching Learning, Knowledge graph, Audio algorithm, software development, .NET ,
  • Updating......

Selected Awards

  • None temporarily
  • Updating......

Selected Papers

  • None temporarily
  • Updating......

nsmusics's People

Contributors

dependabot[bot] avatar super-badmen-viper 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

nsmusics's Issues

歌词逐字算法:终极Plus版:暂停音乐后再继续音乐,当前所在歌词行的歌词逐字动画不会继续

由于今日新升级的,歌词逐字算法,相比之前的算法更加复杂一点,所以目前无法对准确获取正在播放的动画

新算法已解决了不同语言字体之间不兼容的BUG(韩文等特殊字体,在UI展现上的系统BUG,此BUG并非为软件本身的问题)

新算法效果(最优解歌词逐字算法):(韩文+英文的场景)(韩文等特殊字体自带BUG)

image

旧算法效果:(韩文+英文的场景)(韩文等特殊字体自带BUG)

image

{开源,共建}当MZMusic播放超高比特率的无损音乐时,CurrentTime属性可能会出现异常跳动

CurrentTime属性出现异常跳动时,会导致歌词栏异常滚动一次,滚动到第1行。
设备内存越不足时,CurrentTime属性出现异常跳动的可能性越高。
可能是MZMusic播放超高比特率的无损音乐时所需要的内存开销很大,当设备内存不足以提供时出现CurrentTime属性可能会出现异常跳动。
需要优化超高比特率的无损音乐读取时的性能占用

{开源,共建}MZMusic内存占用优化

MZMusic随着使用时间的增加,从初始内存占用211M会增加到850M,且无法在运行过程中释放其多余的内存残余,需要优化的内存占用大小应为(当前占用的内存 减去 初始内存211M)

[ Probation/试用 ] 一些问题/lack of demo program

我在闲暇时稍微试用了一下Releases中的demo
发现如下:

  1. 点击歌曲缩略图后打开了动态播放的界面,这没问题。但!再次点击同一个地方无法退出该界面,必须点击远在左上角的>按钮
  2. 不能向主界面拖放歌曲文件及文件夹以添加歌曲
  3. 同上,甚至在添加歌曲的专用界面(那个很多文本框的界面)也不行!!
  4. 添加音乐时若保持默认设置,音乐会进入“我的收藏”,而所谓的“本地音乐”里没有出现(那难道刚才那首歌不存储在我的设备上了吗?这属于逻辑谬论)
  5. 进度条仅在点击时响应,拖动无效
  6. 最重要的,不能读取.MP3内嵌的歌词(我亲手写了150+份内嵌逐字时间轴歌词)
  7. 似乎 封面也不能内嵌
  8. 调节音量后不会自动收起,并且点击空白处不能收起音量控件
  9. 音量控件不支持点击快速静音
  10. 重新进入程序直接点击开始播放 无动作。此时检查播放列表为空(具体说就是不会记住上次运行的列表并且在列表为空时自动生成新表)
  11. 同上,重新进入程序直接点击开始播放 无动作,但播放按钮却已经变成正在播放的样式
  12. 不存在收起到任务栏右侧隐藏后台程序的功能(你可以理解为像挂QQ一样)

暂时以上,
加油

{开源,共建}歌词字同步算法中的UI及后端算法优化,减少性能开销,(算法版本当前为LrcLinearAnimationMrc,迭代为ByteAnimationMrc可解决,我已提供ByteAnimationMrc的思路,等待你的解决)

TextBlock中的Text内容如包括不同的字体(例如中文+韩文),UI渐变效果的起点将会不从歌词行起点开始,而是从各自字体的首字位置分别开始
使用LinearGradientBrush运用在TextBlock中的Foreground,当TextBlock的Text含有韩文和中文时,LinearGradientBrush渐变的动画起点会从设置的歌词行X:-0.5 Y:0 起点变成 各自字体的首字位置分别开始。
将LinearGradientBrush中的MappingMode设置为"Absolute",依然解决不了动画渐变的起点问题,这是语言字体不同导致的

相关代码:

    <TextBlock x:Name="TextBlock_1"  HorizontalAlignment="Center" Text="科技源于生活,技术源于创新" 
                FontSize="36" Height="68" IsEnabled="False" FontWeight="Bold" VerticalAlignment="Top" >
        <TextBlock.Triggers>
            <EventTrigger RoutedEvent="UIElement.MouseLeftButtonDown">
                <BeginStoryboard>
                    <Storyboard x:Name="Text_Storyboard">
                        <DoubleAnimationUsingKeyFrames x:Name="Text_DoubleAnimation"
                                        Duration="0:0:6"
                                        Storyboard.TargetName="Trans" Storyboard.TargetProperty="X"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </TextBlock.Triggers>
        <TextBlock.Foreground>
            <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
                <LinearGradientBrush.RelativeTransform>
                    <TranslateTransform X="-0.5" x:Name="Trans"/>
                </LinearGradientBrush.RelativeTransform>
                <GradientStop Color="#FF00FFA2" Offset="0.49"/>
                <GradientStop Color="#FFF99F00" Offset="0.51"/>
            </LinearGradientBrush>
        </TextBlock.Foreground>
        ....
    </TextBlock>

Bug截图:
image
image

解决方案:
1.继续优化现有的UI机制LrcLinearAnimationMrc,将不同的语言字体融合为同一通用字体
2.算法与UI迭代升级为ByteAnimationMrc:假设歌词行含有10个字符,10个字符使用10个TextBlock分别存储,将每个TextBlock都设置当前字符的同步时间,触发第一个TextBlock的动画,将第一个TextBlock的动画complete事件设置为触发第二个TextBlock的动画,以此类推通过递归绑定动画complete事件算法,实现几乎100%的歌词字同步算法效果,同步每一个字符的歌词演唱进度,也解决了歌词同步动画渐变的起点问题

PS:
So,哪位老哥来实现这个ByteAnimationMrc[doge],我之前已经实现了这个方案的95%,卡在了动画绑定这最后一步上,我最近有其他的事情要解决,所以我暂时不能继续接下来的ByteAnimationMrc工作,交给你们了[doge]

{开源,共建}多歌手写真轮播UI动画优化,需要减少性能开销

此多歌手写真轮播UI动画会占用大量系统资源,显示的歌手写真像素越大则卡顿几率越大,需要精简优化,或者替换性能更好更美观的UI动画
相关代码:(代码位置在MoZhiMusicPlayer/mainwindows.xaml.cs中3282行)

    ObjectAnimationUsingKeyFrames oa;
    ObjectAnimationUsingKeyFrames oa_2;
    private void BgSwitch(string imgPath)
    {
        oa = bgstoryboard.Children.FirstOrDefault(c => c is ObjectAnimationUsingKeyFrames) as ObjectAnimationUsingKeyFrames;
        oa.KeyFrames[0].Value = new BitmapImage(new Uri(imgPath));
    }
    Storyboard bgstoryboard = null;
    private void BgSwitchIni()
    {
        //动画占用过高CPU及GPU
        //此动画效果为渲染所有的像素,效率过低
        //应更改为     多区块渲染过渡 / 线性渲染过渡 / 淡化渲染过渡 / 模糊重叠过渡渲染
        DoubleAnimationUsingKeyFrames da = new DoubleAnimationUsingKeyFrames();
        EasingDoubleKeyFrame sd = new EasingDoubleKeyFrame(0, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(200)));
        da.KeyFrames.Add(sd);
        Storyboard.SetTargetName(da, musicPlayer_Main_UserControl.Grid_down_Singer_Photo.Name);
        DependencyProperty[] propertyChain = new DependencyProperty[]
        {
                Panel.BackgroundProperty,
                Brush.OpacityProperty
        };
        Storyboard.SetTargetProperty(da, new PropertyPath("(0).(1)", propertyChain));

        ObjectAnimationUsingKeyFrames oa = new ObjectAnimationUsingKeyFrames();
        DiscreteObjectKeyFrame diso = new DiscreteObjectKeyFrame(new BitmapImage(new Uri(Path_App + @"\Button_Image_Ico\Space.png", UriKind.Absolute)), KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(10)));
        oa.KeyFrames.Add(diso);
        oa.BeginTime = new TimeSpan(0, 0, 0, 1, 0);
        Storyboard.SetTargetName(oa, musicPlayer_Main_UserControl.Grid_down_Singer_Photo.Name);
        DependencyProperty[] propertyChain2 = new DependencyProperty[]
        {
                Panel.BackgroundProperty,
                ImageBrush.ImageSourceProperty
        };
        Storyboard.SetTargetProperty(oa, new PropertyPath("(0).(1)", propertyChain2));

        DoubleAnimationUsingKeyFrames da2 = new DoubleAnimationUsingKeyFrames();
        da2.BeginTime = new TimeSpan(0, 0, 0, 1, 5);
        EasingDoubleKeyFrame sd2 = new EasingDoubleKeyFrame(1, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(200)));
        da2.KeyFrames.Add(sd2);
        Storyboard.SetTargetName(da2, musicPlayer_Main_UserControl.Grid_down_Singer_Photo.Name);
        Storyboard.SetTargetProperty(da2, new PropertyPath("(0).(1)", propertyChain));
     
        bgstoryboard.Children.Add(da);
        bgstoryboard.Children.Add(oa);
        bgstoryboard.Children.Add(da2);
    }

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.