Coder Social home page Coder Social logo

polymeilex / neothesia Goto Github PK

View Code? Open in Web Editor NEW
848.0 21.0 54.0 45.5 MB

Flashy Synthesia Like Software For Linux,Windows and MacOs

License: GNU General Public License v3.0

Rust 92.91% Python 4.63% Makefile 0.09% WGSL 2.36%
synthesia midi rust wgpu

neothesia's Introduction

Neothesia Baner

Neothesia

Neothesia is a cross-platform MIDI visualizer, build completely in Rust. It helps people to quickly learn how to play piano. It takes music notes from a MIDI file as an input and displays them as colorful falling blocks on a virtual piano.

Opensource Synthesia was abandoned in favour of closed source commercial project
Goal of this project is to bring back Opensource Synthesia to live, and make it look and work as good (or even better) than commercial Synthesia.

If you have any questions, feel free to join my Discord

Discord

Screenshots

image

Video

settings track selection

Video

Download

Download on Flathub

Arch Linux (Unofficial AUR built from source, maintained by @zayn7lie): https://aur.archlinux.org/packages/neothesia

All binary releases: https://github.com/PolyMeilex/Neothesia/releases

FAQ

Video encoding

  • For Linux and Windows you can download neothesia-cli / recorder build from releasses
  • For macOS
    • To encode video you need to install rust
    • You also need to install ffmpeg
    • And compile the neothesia-cli, like so cargo build --release -p neothesia-cli (if you have make: make build-recorder)
    • It will compile neothesia-cli, from now on it is used as a cmomand line tool
  • To encode a test.mid file run ./target/release/neothesia-cli ./test.mid
  • Video will be outputted to ./out directory`

Thanks to

neothesia's People

Contributors

dependabot[bot] avatar dxrcy avatar katyo avatar liushuyu avatar othello777 avatar polymeilex avatar zayn7lie 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neothesia's Issues

[enhancement, needs investigation] Add customizable visual effects

Add customizable visual effects
First of all, I'm not familiar with the Rust programming language to say if this is out of the scope of the project in terms of difficulty or something, and I really don't have have experience programming alongside other outside of school assignments, so, excuse me if I come across as pushy or something, I don't really know how to suggest things apparently...

At risk to be compared to other similar software solutions like Synthesia, Linthesia, SeeMusic, PianoFromAbove, Musicove, Symphonium, Keysight, and many, many more.

Well, as the title says, my suggestion is adding a little bit of flare in the form of customizable visual effects, feature which in my humble opinion will grant this project a HUMUNGUS advantage over others, you see, SeeMusic and Keysight have some visual effects in them, but they are not fully customizable, they are somewhat predetermined by their respective developers, but, as any open source project, we (or more accurately, you, following my advice, as I said, I don't know much about Rust) can make that and more.

Suggestions about a possible implementation

  • Add a way to add custom GLSL shaders masked to the notes in 3 possible steps: as they enter in the screen, falling, and at keystroke (when they hit the piano keys), or at least in the last step only.
  • Tradeoffs: performance impact, can mess the debugging process, potentially duplicate the workload of the developing team. In exchange of: Greatly increase the appeal for the software, increase the engagement of the community around the project.
  • Caveats: You need to add a menu option to enable or disable the use of shaders and then a system to load said custom shaders. Also it's a good idea to have the option as the developers to include some basic shaders in the release package to inexperienced users be able to test/use the feature.
  • Considerations for the future: As the project develops users can share their custom shaders in a forum or in a dedicated repo or as a separate website, like in the case of the Godot Game Engine and GodotShaders (https://godotshaders.com/)

Without further ado, I put this to your kind consideration, farewell~

Chords are not played

Is it just me? I've tried playing several midi files, but the chords are represented by single, non-sustaining notes that are not played in the audio part, nor do they activate the key on the keyboard visually. The midi file I used was from an inline sequencer, but does work with other visualizers

Sorry if this was a bad summary first time on Github xP

Rendering issue

Hello,

I'm unable to render properly a midi song using cli. I'm on Ubuntu 22.04.

I compiled the application following the README commands:

cargo build --release --no-default-features --features record

Then I tried to render this file: la campanella

With this command:
./target/release/neothesia-cli ./campanella.mid

And here is the result:

image

This is the result in the console:

image

Settings page with proper design

Current settings page is just an amalgamation of random buttons that I needed to add. Let's do a proper design for that page.

Current state of settings page: image

Early SVG draft of what I'm aiming for so far:
Frame 30

This obviously tries to follow Gnome HIG for boxed lists

  • Note range section could be cleaner, not sure how yet.
  • Guidelines previews SVGs could look nicer, not sure how yet. Perhaps that should simply be removed?
  • Restore defaults button

Extra feature: File picker inside program

I have a library of 700+ midis and my default file picker is lagging like crazy when I try to load all of them. A native filepicker might be nice inside the application like synthesia has.

mac problem no audio output and no neothesia-cli

problem
no audio output

step

cd ~/Downloads
curl -LOC https://github.com/PolyMeilex/Neothesia/releases/download/v0.1.0/macos-artifact.zip
unzip macos-artifact.zip
open Neothesia.app
- select midi file
- select output = buildin synth and soundfont
- then play

problem no neothesia-cli
ls -la ~/Downloads/Neothesia.app/Contents/MacOS

expectation result

  • have audio output, when play the selected midi file
  • have neothesia-cli, so that users can make a video base on midi file

best regards

Neothesia can't start on Windows 7

I run neothesia.exe and the program opens for 0.5s then close immidiately, this is my log:


D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

D:\PortableApp\Synthesia>set RUST_BACKTRACE=1

D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe -h
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe /?
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe --help
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>neothesia.exe -help
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

D:\PortableApp\Synthesia>set RUST_BACKTRACE=full

D:\PortableApp\Synthesia>neothesia.exe -help
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
   0:        0x140461d9f - <unknown>
   1:        0x14047aefa - <unknown>
   2:        0x14045e9e9 - <unknown>
   3:        0x1404645bb - <unknown>
   4:        0x14046423b - <unknown>
   5:        0x140464b69 - <unknown>
   6:        0x140464a6d - <unknown>
   7:        0x140462727 - <unknown>
   8:        0x140464749 - <unknown>
   9:        0x1404a7ee5 - <unknown>
  10:        0x1404a7ff3 - <unknown>
  11:        0x13fea31fd - <unknown>
  12:        0x13fe8a7db - <unknown>
  13:        0x13fe59ea6 - <unknown>
  14:        0x13fe5bcfc - <unknown>
  15:        0x1404571b1 - <unknown>
  16:        0x13fe8acf7 - <unknown>
  17:        0x140482d50 - <unknown>
  18:         0x76b259cd - BaseThreadInitThunk
  19:         0x76d8383d - RtlUserThreadStart

D:\PortableApp\Synthesia>neothesia.exe
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:73:61
stack backtrace:
   0:        0x13f8e1d9f - <unknown>
   1:        0x13f8faefa - <unknown>
   2:        0x13f8de9e9 - <unknown>
   3:        0x13f8e45bb - <unknown>
   4:        0x13f8e423b - <unknown>
   5:        0x13f8e4b69 - <unknown>
   6:        0x13f8e4a6d - <unknown>
   7:        0x13f8e2727 - <unknown>
   8:        0x13f8e4749 - <unknown>
   9:        0x13f927ee5 - <unknown>
  10:        0x13f927ff3 - <unknown>
  11:        0x13f3231fd - <unknown>
  12:        0x13f30a7db - <unknown>
  13:        0x13f2d9ea6 - <unknown>
  14:        0x13f2dbcfc - <unknown>
  15:        0x13f8d71b1 - <unknown>
  16:        0x13f30acf7 - <unknown>
  17:        0x13f902d50 - <unknown>
  18:         0x76b259cd - BaseThreadInitThunk
  19:         0x76d8383d - RtlUserThreadStart

D:\PortableApp\Synthesia>

Build Error

I have rust 1.64, trying to build neothesia-cli from latest commit. This is my output:

$ make build-recorder
cargo build --release --no-default-features --features record
   Compiling autocfg v1.1.0
   Compiling cfg-if v1.0.0
   Compiling libc v0.2.132
   Compiling proc-macro2 v1.0.43
   Compiling quote v1.0.21
   Compiling unicode-ident v1.0.3
   Compiling pkg-config v0.3.25
   Compiling bitflags v1.3.2
   Compiling syn v1.0.99
   Compiling version_check v0.9.4
   Compiling once_cell v1.13.1
   Compiling log v0.4.17
   Compiling cc v1.0.73
   Compiling scopeguard v1.1.0
   Compiling memchr v2.5.0
   Compiling smallvec v1.9.0
   Compiling xml-rs v0.8.4
   Compiling crossbeam-utils v0.8.11
   Compiling lazy_static v1.4.0
   Compiling parking_lot_core v0.9.3
   Compiling cty v0.2.2
   Compiling rayon-core v1.9.3
   Compiling rustc-hash v1.1.0
   Compiling termcolor v1.1.3
   Compiling glob v0.3.0
   Compiling unicode-width v0.1.9
   Compiling crc32fast v1.3.2
   Compiling ash v0.37.0+1.3.209
   Compiling minimal-lexical v0.2.1
   Compiling scoped-tls v1.0.0
   Compiling khronos-egl v4.1.0
   Compiling downcast-rs v1.2.0
   Compiling bit-vec v0.6.3
   Compiling unicode-xid v0.2.3
   Compiling cfg_aliases v0.1.1
   Compiling adler32 v1.2.0
   Compiling hexf-parse v0.2.1
   Compiling byteorder v1.4.3
   Compiling adler v1.0.2
   Compiling regex-syntax v0.6.27
   Compiling strsim v0.8.0
   Compiling vec_map v0.8.2
   Compiling arrayref v0.3.6
   Compiling bindgen v0.58.1
   Compiling ttf-parser v0.15.2
   Compiling humantime v2.1.0
   Compiling foreign-types-shared v0.3.1
   Compiling ansi_term v0.12.1
   Compiling inplace_it v0.3.4
   Compiling glow v0.11.2
   Compiling renderdoc-sys v0.7.1
   Compiling profiling v1.0.6
   Compiling futures-core v0.3.23
   Compiling arrayvec v0.7.2
   Compiling either v1.8.0
   Compiling futures-channel v0.3.23
   Compiling ppv-lite86 v0.2.16
   Compiling shlex v1.1.0
   Compiling ab_glyph_rasterizer v0.1.5
   Compiling futures-task v0.3.23
   Compiling copyless v0.1.5
   Compiling arrayvec v0.5.2
   Compiling lazycell v1.3.0
   Compiling peeking_take_while v0.1.2
   Compiling futures-sink v0.3.23
   Compiling futures-util v0.3.23
   Compiling serde_derive v1.0.143
   Compiling xi-unicode v0.3.0
   Compiling pin-project-lite v0.2.9
   Compiling serde v1.0.143
   Compiling futures-io v0.3.23
   Compiling percent-encoding v2.1.0
   Compiling linked-hash-map v0.5.6
   Compiling pin-utils v0.1.0
   Compiling static_assertions v1.1.0
   Compiling memalloc v0.1.0
   Compiling base64 v0.13.0
   Compiling piano-math v0.1.0 (/home/matheus/Programs/Neothesia/piano-math)
   Compiling fps_ticker v1.0.0
   Compiling gpu-alloc-types v0.2.0
   Compiling gpu-descriptor-types v0.1.1
   Compiling wgpu-types v0.13.2
   Compiling libloading v0.7.3
   Compiling instant v0.1.12
   Compiling ahash v0.7.6
   Compiling slotmap v1.0.6
   Compiling nom v5.1.2
   Compiling memoffset v0.6.5
   Compiling num-traits v0.2.15
   Compiling crossbeam-epoch v0.9.10
   Compiling lock_api v0.4.7
   Compiling indexmap v1.9.1
   Compiling rayon v1.5.3
   Compiling num-integer v0.1.45
   Compiling slab v0.4.7
   Compiling num-bigint v0.4.3
   Compiling num-rational v0.4.1
   Compiling num-iter v0.1.43
   Compiling wayland-sys v0.29.4
   Compiling servo-fontconfig-sys v5.1.0
   Compiling crossfont v0.5.0
   Compiling smithay-client-toolkit v0.16.0
   Compiling x11-dl v2.20.0
   Compiling alsa-sys v0.3.1
   Compiling cmake v0.1.48
   Compiling raw-window-handle v0.4.3
   Compiling raw-window-handle v0.5.0
   Compiling codespan-reporting v0.11.1
   Compiling wgpu-core v0.13.2
   Compiling clang-sys v1.3.3
   Compiling bit-set v0.5.3
   Compiling deflate v1.0.0
   Compiling miniz_oxide v0.5.3
   Compiling textwrap v0.11.0
   Compiling fxhash v0.2.1
   Compiling owned_ttf_parser v0.15.1
   Compiling gpu-alloc v0.5.3
   Compiling dlib v0.5.0
   Compiling freetype-sys v0.13.1
   Compiling expat-sys v2.1.6
   Compiling ab_glyph v0.2.16
   Compiling nom v7.1.1
   Compiling aho-corasick v0.7.18
   Compiling png v0.17.5
   Compiling crossbeam-channel v0.5.6
   Compiling atty v0.2.14
   Compiling which v3.1.1
   Compiling num_cpus v1.13.1
   Compiling getrandom v0.2.7
   Compiling nix v0.22.3
   Compiling nix v0.24.2
   Compiling memmap2 v0.5.7
   Compiling nix v0.23.1
   Compiling mio v0.8.4
   Compiling regex v1.6.0
   Compiling spirv v0.2.0+1.5.4
   Compiling approx v0.5.1
   Compiling num-complex v0.4.2
   Compiling ordered-float v3.0.0
   Compiling clap v2.34.0
   Compiling xcursor v0.3.4
   Compiling rand_core v0.6.3
   Compiling cexpr v0.4.0
   Compiling crossbeam-deque v0.8.2
   Compiling parking_lot v0.12.1
   Compiling freetype-rs v0.26.0
   Compiling wayland-commons v0.29.4
   Compiling wayland-scanner v0.29.4
   Compiling env_logger v0.9.0
   Compiling alsa v0.6.0
   Compiling glyph_brush_layout v0.2.3
   Compiling env_logger v0.8.4
   Compiling hashbrown v0.12.3
   Compiling rand_chacha v0.3.1
   Compiling servo-fontconfig v0.5.1
   Compiling wayland-client v0.29.4
   Compiling wayland-protocols v0.29.4
   Compiling midir v0.8.0
   Compiling gpu-descriptor v0.2.3
   Compiling rand v0.8.5
   Compiling midi-io v0.1.0 (/home/matheus/Programs/Neothesia/midi-io)
   Compiling num v0.4.0
   Compiling thiserror-impl v1.0.32
   Compiling bytemuck_derive v1.2.1
   Compiling foreign-types-macros v0.2.2
   Compiling futures-macro v0.3.23
   Compiling midi v0.1.0
   Compiling twox-hash v1.6.3
   Compiling foreign-types v0.5.0
   Compiling bytemuck v1.12.1
   Compiling thiserror v1.0.32
   Compiling glyph_brush_draw_cache v0.1.5
   Compiling midly v0.5.2
   Compiling tiny-skia-path v0.7.0
   Compiling safe_arch v0.5.2
   Compiling naga v0.9.0
   Compiling calloop v0.10.1
   Compiling wayland-cursor v0.29.4
   Compiling ffmpeg-sys v4.3.3
   Compiling glyph_brush v0.7.5
   Compiling lib-midi v0.1.0 (/home/matheus/Programs/Neothesia/lib-midi)
   Compiling tiny-skia v0.7.0
   Compiling futures-executor v0.3.23
   Compiling wgpu-hal v0.13.2
   Compiling futures v0.3.23
   Compiling ron v0.8.0
   Compiling sctk-adwaita v0.4.2
   Compiling winit v0.27.2
   Compiling wgpu v0.13.1
   Compiling wgpu-jumpstart v0.1.0 (/home/matheus/Programs/Neothesia/wgpu-jumpstart)
   Compiling wgpu_glyph v0.17.0
   Compiling mpeg_encoder v0.2.1 (https://github.com/PolyMeilex/mpeg_encoder_next.git#0af42319)
error[E0432]: unresolved import `ffmpeg_sys::AVPicture`
  --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:16:77
   |
16 |     AVCodec, AVCodecContext, AVCodecID, AVFormatContext, AVFrame, AVPacket, AVPicture,
   |                                                                             ^^^^^^^^^ no `AVPicture` in the root

error[E0425]: cannot find function `av_register_all` in crate `ffmpeg_sys`
   --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:105:29
    |
105 |                 ffmpeg_sys::av_register_all();
    |                             ^^^^^^^^^^^^^^^ not found in `ffmpeg_sys`

error[E0425]: cannot find function `avpicture_fill` in crate `ffmpeg_sys`
   --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:213:33
    |
213 |             let _ = ffmpeg_sys::avpicture_fill(
    |                                 ^^^^^^^^^^^^^^ not found in `ffmpeg_sys`

error[E0425]: cannot find function `avcodec_encode_video2` in crate `ffmpeg_sys`
   --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:256:31
    |
256 |             ret = ffmpeg_sys::avcodec_encode_video2(
    |                               ^^^^^^^^^^^^^^^^^^^^^ not found in `ffmpeg_sys`

error[E0425]: cannot find function `av_free_packet` in crate `ffmpeg_sys`
     --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:271:29
      |
271   |                   ffmpeg_sys::av_free_packet(&mut pkt);
      |                               ^^^^^^^^^^^^^^ help: a function with a similar name exists: `av_get_packet`
      |
     ::: /home/matheus/Programs/Neothesia/target/release/build/ffmpeg-sys-de143891d3f506c6/out/bindings.rs:16999:5
      |
16999 | /     pub fn av_get_packet(s: *mut AVIOContext, pkt: *mut AVPacket, size: libc::c_int)
17000 | |         -> libc::c_int;
      | |______________________- similarly named function `av_get_packet` defined here

error[E0425]: cannot find function `avpicture_get_size` in crate `ffmpeg_sys`
   --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:490:44
    |
490 |             let nframe_bytes = ffmpeg_sys::avpicture_get_size(
    |                                            ^^^^^^^^^^^^^^^^^^ not found in `ffmpeg_sys`

error[E0425]: cannot find function `avpicture_fill` in crate `ffmpeg_sys`
   --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:500:33
    |
500 |             let _ = ffmpeg_sys::avpicture_fill(
    |                                 ^^^^^^^^^^^^^^ not found in `ffmpeg_sys`

error[E0425]: cannot find function `avcodec_encode_video2` in crate `ffmpeg_sys`
   --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:574:39
    |
574 |                     ret = ffmpeg_sys::avcodec_encode_video2(
    |                                       ^^^^^^^^^^^^^^^^^^^^^ not found in `ffmpeg_sys`

error[E0425]: cannot find function `av_free_packet` in crate `ffmpeg_sys`
     --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:590:37
      |
590   |                           ffmpeg_sys::av_free_packet(&mut pkt);
      |                                       ^^^^^^^^^^^^^^ help: a function with a similar name exists: `av_get_packet`
      |
     ::: /home/matheus/Programs/Neothesia/target/release/build/ffmpeg-sys-de143891d3f506c6/out/bindings.rs:16999:5
      |
16999 | /     pub fn av_get_packet(s: *mut AVIOContext, pkt: *mut AVPacket, size: libc::c_int)
17000 | |         -> libc::c_int;
      | |______________________- similarly named function `av_get_packet` defined here

   Compiling neothesia-pipelines v0.1.0 (/home/matheus/Programs/Neothesia/neothesia-pipelines)
error[E0308]: mismatched types
   --> /home/matheus/.cargo/git/checkouts/mpeg_encoder_next-5ec055f06f12982c/0af4231/src/lib.rs:332:21
    |
332 |             codec = ffmpeg_sys::avcodec_find_encoder((*fmt).video_codec);
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability
    |
    = note: expected raw pointer `*mut AVCodec`
               found raw pointer `*const AVCodec`

Some errors have detailed explanations: E0308, E0425, E0432.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `mpeg_encoder` due to 10 previous errors
warning: build failed, waiting for other jobs to finish...
make: *** [makefile:7: build-recorder] Error 101

Missing text on GUI

On master (d724865), the text on the GUI is missing, e.g. all the buttons, select menus but now the hints for what key plays what note. Therefore I guess, assuming that Neothesia renders the note hints, not iced, that this is an issue with iced.

The previous issue about this seems to have fixed this by switching to DX12. I am on Linux so this application should only be able to run on Vulkan on my system.

Screenshots of what it looks like:
image
image

This doesn't occur on 0.0.16 and for 1.0.0, I can't get it building in nixpkgs (NixOS/nixpkgs#256882).

Easy way to replay given measures

We need to have a way to replay given measure, without messing with manual rewind. So either add a way to rewind by measure, or introduce some sort of auto looping of given measures.

[Accessibility] Add buttons or keymap to UI

For accessibility and convenience, I think it would be good to either have on-screen buttons to perform the actions described in the FAQ, or at least a togglable panel that shows the keyboard shortcuts within the program.

In the same vein, if you could map the numpad Enter to do the same thing as the main Enter key, that would be really helpful for me since it’s easier to reach while I’m front of my midi keyboard next to the computer :)

build neothesia-cli error

environment
google colab
or
ubuntu (because the error is still on installation phase)

steps

!apt update
!apt install -y cargo ffmpeg
!git clone https://github.com/PolyMeilex/Neothesia
!cd Neothesia && cargo build --release -p neothesia-cli

result

error[E0658]: use of unstable library feature 'once_cell'
 --> midi-file/src/program_track.rs:2:33
  |
2 | use std::{collections::HashMap, sync::OnceLock, time::Duration};
  |                                 ^^^^^^^^^^^^^^
  |
  = note: see issue #74465 <https://github.com/rust-lang/rust/issues/74465> for more information

error[E0658]: use of unstable library feature 'once_cell'
 --> midi-file/src/program_track.rs:6:30
  |
6 |     static DEFAULT_PROGRAMS: OnceLock<HashMap<u8, u8>> = OnceLock::new();
  |                              ^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #74465 <https://github.com/rust-lang/rust/issues/74465> for more information

error[E0658]: use of unstable library feature 'once_cell'
 --> midi-file/src/program_track.rs:6:58
  |
6 |     static DEFAULT_PROGRAMS: OnceLock<HashMap<u8, u8>> = OnceLock::new();
  |                                                          ^^^^^^^^
  |
  = note: see issue #74465 <https://github.com/rust-lang/rust/issues/74465> for more information

error[E0658]: use of unstable library feature 'once_cell'
 --> midi-file/src/program_track.rs:6:58
  |
6 |     static DEFAULT_PROGRAMS: OnceLock<HashMap<u8, u8>> = OnceLock::new();
  |                                                          ^^^^^^^^^^^^^
  |
  = note: see issue #74465 <https://github.com/rust-lang/rust/issues/74465> for more information

error[E0658]: use of unstable library feature 'once_cell'
 --> midi-file/src/program_track.rs:7:22
  |
7 |     DEFAULT_PROGRAMS.get_or_init(|| (0..16).map(|ch| (ch, 0)).collect())
  |                      ^^^^^^^^^^^
  |
  = note: see issue #74465 <https://github.com/rust-lang/rust/issues/74465> for more information

For more information about this error, try `rustc --explain E0658`.
error: could not compile `midi-file` due to 5 previous errors
warning: build failed, waiting for other jobs to finish...

best regards

failed to compile the exe from source code since " failed to run custom build command for `ffmpeg-sys v4.3.3`"

run cargo build --release --no-default-features --features record, it turns:

   Compiling ffmpeg-sys v4.3.3
error: failed to run custom build command for `ffmpeg-sys v4.3.3`

Caused by:
  process didn't exit successfully: `C:\tridu33\mymidi\ReactMidiPlayers\Neothesia\target\release\build\ffmpeg-sys-84f31d4dbb84e5a1\build-script-build` (exit code: 101)
  --- stdout
  cargo:rustc-link-search=native=C:\tridu33\mymidi\ReactMidiPlayers\Neothesia\target\release\build\ffmpeg-sys-92a0d0343867013d\out\dist\lib
  cargo:rustc-link-lib=static=avcodec
  cargo:rustc-link-lib=static=avformat
  cargo:rustc-link-lib=static=avutil
  cargo:rustc-link-lib=static=swscale

  --- stderr
  Using stack size: Ok(3145728)
  Cloning into 'ffmpeg-4.3'...
Updating files: 100% (7327/7327), done.
  thread 'ffmpg-sys-build' panicked at '"C:\\tridu33\\mymidi\\ReactMidiPlayers\\Neothesia\\target\\release\\build\\ffmpeg-sys-92a0d0343867013d\\out\\ffmpeg-4.3\\configure" "--prefix=C:\\tridu33\\mymidi\\ReactMidiPlayers\\Neothesia\\target\\release\\build\\ffmpeg-sys-92a0d0343867013d\\out\\dist" "--enable-debug" "--disable-stripping" "--disable-optimizations" "--enable-static" "--disable-shared" "--enable-pic" "--disable-autodetect" "--disable-programs" "--disable-gpl" "--disable-version3" "--disable-nonfree" "--enable-avcodec" "--disable-avdevice" "--disable-avfilter" "--enable-avformat" "--disable-avresample" "--disable-postproc" "--disable-swresample" "--enable-swscale" failed', C:\Users\tridu33\.cargo\registry\src\github.com-1ecc6299db9ec823\ffmpeg-sys-4.3.3\build.rs:337:29
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Any { .. }', C:\Users\tridu33\.cargo\registry\src\github.com-1ecc6299db9ec823\ffmpeg-sys-4.3.3\build.rs:629:10

Text not showing

The program probably is missing the font file it needs. It might be due to me being on Windows 11 (21H2 build 22000.160)
image

Crash on loading soundfont.

PS C:\Users\Talos\Downloads> $env:RUST_BACKTRACE="full"
PS C:\Users\Talos\Downloads> ./neothesia
[2023-02-09T06:30:13Z INFO  neothesia::scene::menu_scene::iced_menu] File path = "E:\\Dev\\Orpheus GM Current Release\\Demos\\J. Williams - Star Wars OST.mid"
[2023-02-09T06:30:19Z INFO  neothesia::scene::menu_scene::iced_menu] Font path = "E:\\Dev\\Orpheus GM Current Release\\Orpheus_1.047e.sf2"
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ()', src\output_manager\synth_backend.rs:107:65
stack backtrace:
   0:     0x7ff6f2dd6c52 - <unknown>
   1:     0x7ff6f2df027b - <unknown>
   2:     0x7ff6f2dd35fa - <unknown>
   3:     0x7ff6f2dd699b - <unknown>
   4:     0x7ff6f2dd9329 - <unknown>
   5:     0x7ff6f2dd8faa - <unknown>
   6:     0x7ff6f2dd9bb1 - <unknown>
   7:     0x7ff6f2dd993d - <unknown>
   8:     0x7ff6f2dd767f - <unknown>
   9:     0x7ff6f2dd9600 - <unknown>
  10:     0x7ff6f2e1eee5 - <unknown>
  11:     0x7ff6f2e1f1f3 - <unknown>
  12:     0x7ff6f28bead4 - <unknown>
  13:     0x7ff6f2870724 - <unknown>
  14:     0x7ff6f28b505d - <unknown>
  15:     0x7ff6f2860421 - <unknown>
  16:     0x7ff6f289de72 - <unknown>
  17:     0x7ff6f286eea0 - <unknown>
  18:     0x7ff6f27b0aa8 - <unknown>
  19:     0x7ff6f27b426c - <unknown>
  20:     0x7ff6f27b265b - <unknown>
  21:     0x7ff6f27b1cce - <unknown>
  22:     0x7ff6f27b3b79 - <unknown>
  23:     0x7ff6f27b10ee - <unknown>
  24:     0x7ff6f27ac155 - <unknown>
  25:     0x7ffb2b63e7e8 - CallWindowProcW
  26:     0x7ffb2b63e36c - DispatchMessageW
  27:     0x7ffb2b650c23 - SendMessageTimeoutW
  28:     0x7ffb2d5f0ef4 - KiUserCallbackDispatcher
  29:     0x7ffb2acb1704 - NtUserDispatchMessage
  30:     0x7ffb2b63e27a - DispatchMessageW
  31:     0x7ff6f27aadc7 - <unknown>
  32:     0x7ff6f277ea21 - <unknown>
  33:     0x7ff6f2785b39 - <unknown>
  34:     0x7ff6f2773ee6 - <unknown>
  35:     0x7ff6f27ad14c - <unknown>
  36:     0x7ff6f2dcc97e - <unknown>
  37:     0x7ff6f27861ec - <unknown>
  38:     0x7ff6f2df92cc - <unknown>
  39:     0x7ffb2bce7614 - BaseThreadInitThunk
  40:     0x7ffb2d5a26a1 - RtlUserThreadStart
PS C:\Users\Talos\Downloads>

The soundfont, and midi can be downloaded here:
https://musical-artifacts.com/artifacts/1213

This issue seems to only occur with large soundfonts.

[Feature request] Support for e-drums (map midi)

Hi, I was wondering what the maintainers of Neothesia think about adding support for e-drums.
I assume is just recognising the correct track for drums on the mid, and adding a way to map the midi to determinate notes.

Regarding the interface, would only show a few "keys" which are used in drums.

Rewind doesn't seem to work

I can play along, when I don't press a note on time the music stops, when I press it then it continues to the next note... but how do I go backwards and rewind to practice a section again? I press the right cursor and it fast forwards, but the left seems to do nothing? Sorry if I missed something basic, thanks!

PS Look forward to the new version on Flathub, seems there has been quite a bit of work done since the last one.

Extremely Quiet.

I am using Arch Linux and have my Volume at 100% (Make that 150, I HAVE OVERAMPLICATION.)
The sound, Even if the .sf2 is different, Is very quiet. But dont worry, There is a small amount of sound.
Please fix this error!

[Feature request] Track selection

Thank you for making this! An option to turn off certain tracks would be great for midi files that include so many instruments that it’s impossible to follow just one :)

Crash when change to full screen

Using Flatpak version (0.0.11)

PC Specs:
Fedora Workstation 34
Ryzen 5 1600AF
Radeon RX 570

flatpak terminal output

[2021-10-25T04:50:09Z INFO  neothesia::wgpu_jumpstart::gpu] Using AMD RADV POLARIS10 (ACO) (Vulkan, Preferred Format: Some(Bgra8UnormSrgb))
[2021-10-25T04:50:12Z WARN  neothesia] Outdated
[2021-10-25T04:50:12Z WARN  neothesia] Outdated
[2021-10-25T04:50:12Z WARN  neothesia] Outdated

I will try to compile the program to give better feedback tomorrow

No sound

When I run the app, choose a midi and play it, I don't get any sound. Apart from #6 the visual part works just fine, just no audio.

On the sound settings of ubuntu I see ALSA plug-in [neothesia] so I would expect some sound. But nothing...

My ALSA usually works, when I run for testing aplay /usr/share/sounds/alsa/Front_Center.wav everything seems ok.

Any idea why I get no sound from neothesia?
I also tried different midi files and soundfonts, but no change.

OS: Ubuntu 20.04
I downloaded the 0.0.14. release (https://github.com/PolyMeilex/Neothesia/releases/download/v0.0.14/ubuntu-artifact.zip)

Many thanks in advance

Can't run Neothesia on Linux Mint / Ubuntu 18.04

The default neothesia package did not run on my machine, as I use Linux Mint 19.x which relies upon Ubuntu 18.04
I faced these errors:
lordeagle@le-T450s:~/Downloads$ ./neothesia ./neothesia: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29' not found (required by ./neothesia)`

However, having forked this repo and let the build run on a 'ubuntu-18.04' node I get a copy that can be run.
https://github.com/ivy-rew/Neothesia/actions/runs/1008613870

Now, I get the following error. Any ideas what's missing?

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src/lib.rs:52:61
stack backtrace:
   0:     0x565349af3e00 - std::backtrace_rs::backtrace::libunwind::trace::ha5edb8ba5c6b7a6c
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
   1:     0x565349af3e00 - std::backtrace_rs::backtrace::trace_unsynchronized::h0de86d320a827db2
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x565349af3e00 - std::sys_common::backtrace::_print_fmt::h97b9ad6f0a1380ff
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x565349af3e00 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h14be7eb08f97fe80
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x565349b1767f - core::fmt::write::h2ca8877d3e0e52de
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/core/src/fmt/mod.rs:1094:17
   5:     0x565349af1295 - std::io::Write::write_fmt::h64f5987220b618f4
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/io/mod.rs:1584:15
   6:     0x565349af5edb - std::sys_common::backtrace::_print::h7f1a4097308f2e0a
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x565349af5edb - std::sys_common::backtrace::print::h1f799fc2ca7f5035
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x565349af5edb - std::panicking::default_hook::{{closure}}::hf38436e8a3ce1071
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panicking.rs:208:50
   9:     0x565349af59ad - std::panicking::default_hook::he2f8f3fae11ed1dd
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panicking.rs:225:9
  10:     0x565349af64ed - std::panicking::rust_panic_with_hook::h79a18548bd90c7d4
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panicking.rs:591:17
  11:     0x565349af6087 - std::panicking::begin_panic_handler::{{closure}}::h212a72cc08e25126
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panicking.rs:497:13
  12:     0x565349af429c - std::sys_common::backtrace::__rust_end_short_backtrace::hbd6897dd42bc0fcd
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/sys_common/backtrace.rs:141:18
  13:     0x565349af5fe9 - rust_begin_unwind
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panicking.rs:493:5
  14:     0x565349328611 - core::panicking::panic_fmt::h77ecd04e9b1dd84d
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/core/src/panicking.rs:92:14
  15:     0x565349328703 - core::result::unwrap_failed::hcbdf25d28ce8f0ca
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/core/src/result.rs:1355:5
  16:     0x5653493c30c3 - neothesia::init::hf9facb0026966c11
  17:     0x56534938e2bf - neothesia::main::hca33bbc48aef2a0c
  18:     0x56534939cb83 - std::sys_common::backtrace::__rust_begin_short_backtrace::h14fb5189f438c54d
  19:     0x56534939cb99 - std::rt::lang_start::{{closure}}::h2ba87cd5fa13a1fa
  20:     0x565349af69ea - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hc4354216bf39217c
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/core/src/ops/function.rs:259:13
  21:     0x565349af69ea - std::panicking::try::do_call::hb68eb312780385cf
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panicking.rs:379:40
  22:     0x565349af69ea - std::panicking::try::h22b8e08595060b8b
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panicking.rs:343:19
  23:     0x565349af69ea - std::panic::catch_unwind::hc64f1a6a0e71b1fc
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panic.rs:431:14
  24:     0x565349af69ea - std::rt::lang_start_internal::h4461fc58637f04f8
                               at /rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/rt.rs:34:21
  25:     0x56534938e532 - main
  26:     0x7f7edac15bf7 - __libc_start_main
  27:     0x565349328d8a - _start
  28:                0x0 - <unknown>
lordeagle@le-T450s:~/Downloads$ neofetch
MMMMMMMMMMMMMMMMMMMMMMMMMmds+.        lordeagle@le-T450s 
MMm----::-://////////////oymNMd+`     ------------------ 
MMd      /++                -sNMd:    OS: Linux Mint 19.3 Tricia x86_64 
MMNso/`  dMM    `.::-. .-::.` .hMN:   Host: 20BWS02D00 ThinkPad T450s 
ddddMMh  dMM   :hNMNMNhNMNMNh: `NMm   Kernel: 5.4.0-77-generic 
    NMm  dMM  .NMN/-+MMM+-/NMN` dMM   Uptime: 9 days, 11 hours, 4 mins 
    NMm  dMM  -MMm  `MMM   dMM. dMM   Packages: 2785 
    NMm  dMM  -MMm  `MMM   dMM. dMM   Shell: bash 4.4.20 
    NMm  dMM  .mmd  `mmm   yMM. dMM   Resolution: 1920x1080 
    NMm  dMM`  ..`   ...   ydm. dMM   DE: Cinnamon 4.4.8 
    hMM- +MMd/-------...-:sdds  dMM   WM: Mutter (Muffin) 
    -NMm- :hNMNNNmdddddddddy/`  dMM   WM Theme: Mint-Y-Dark-Sand (Mint-Y) 
     -dMNs-``-::::-------.``    dMM   Theme: Mint-Y-Darker-Grey [GTK2/3] 
      `/dMNmy+/:-------------:/yMMM   Icons: Mint-Y-Grey [GTK2/3] 
         ./ydNMMMMMMMMMMMMMMMMMMMMM   Terminal: gnome-terminal 
            .MMMMMMMMMMMMMMMMMMM      CPU: Intel i7-5600U (4) @ 3.200GHz 
                                      GPU: Intel HD Graphics 5500 
                                      Memory: 6700MiB / 11881MiB 

                                                              

Neothesia crashes at start

Hello, I tried running Neothesia on my computer it crashes everytime, I even compiled it myself, it still crashes
The window decorations show for like half a second then it closes
I tried running the windows version on wine, it crashes at the start too

My system:
AMD Ryzen 5 2500U
Radeon Vega Mobile Gfx (8)
Ubuntu 20.04 with KDE on x11
Kernel: 5.12.0-051200-lowlatency
Mesa 21.1.0

The error message:

[2021-07-13T03:03:19Z INFO  neothesia::wgpu_jumpstart::gpu] Using AMD RADV RAVEN (ACO) (Vulkan, Prefered Format: Some(Bgra8UnormSrgb))
wgpu error: Validation Error

Caused by:
    In a RenderPass
      note: encoder = `<CommandBuffer-(0, 2, Vulkan)>`
    In a set_scissor_rect command
    Invalid ScissorRect parameters


thread 'main' panicked at 'Handling wgpu errors as fatal by default', /home/boris/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.8.1/src/backend/direct.rs:1955:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Segmentation fault

The error I get on wine running the Windows version:

55:err:vkd3d_load_vk_instance_procs: Could not get instance proc addr for 'vkGetPhysicalDeviceFragmentShadingRatesKHR'.
55:err:vkd3d_instance_init: Failed to load instance procs, hr 0x80004005.
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: AdapterRequest', src\lib.rs:50:61
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I dont know what additional info to submit or how to run neothesia with RUST_BACKTRACE=1 environment variable

Key visualizations not loading

Hi, When I load the midi file, the key visualizations are not loading. All I can see is a black screen. I can still connect to my keybaord and play the keys though. I'm using Mac OS Monterey 12.6.3.

Screenshot 2023-02-17 at 10 45 16 AM

[Feature request] Display measures

It would be really nice to have the option to display a horizontal separator after each measure, as well as a number of that measure.

jack support

continue from #166 . if we enable jack feature in midir. it will use jack backend at all, and dont deal anything with alsa

blocked by Boddlnagg/midir#4

Crash when minimalize the window.

Everytime when minimalize the window, it crash.
Here are the outputs from the terminal:

thread 'main' panicked at 'Error in Surface::configure: Both `Surface` width and height must be non-zero. Wait to recreate the `Surface` until the window has non-zero area.', C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\wgpu-0.14.2\src\backend\direct.rs:274:9

MIDI Controller input not detected

Hi,

Is there support for MIDI Controller Keyboard? I wish to use the keys on my midi controller to interact with the midi in the program- is this possible? For reference, I am trying to achieve this with Arturia MiniLab MK2

Just go the web way

To really make Neothesia accessible to everyone, I think it should just live in the browser, we could forget about weird cross platform issues, GPU specific bugs, and just harness the power of plain old HTML + WebGL.

Imagine if you could share a midi file with just a special Neothesia player link.

  • Now that fluidsynth got replaced with rust oxisynth compiling the audio part of the project to wasm should just be single click operation.
  • WGPU should be able to run on the web via WebGL backend, if not it should be easy to rewrite it to WebGL.
  • Iced UI could be dropped in favor of rich HTML ecosystem
  • This should be easy to prototype without affecting the native builds, by using just notes rendering pipelines, like neothesia recorder cli already does.
  • This gives us Android and IOS version for free as well.

Allow to only show the amount of keys needed for given song

Optional Feature: Different songs use a different amount of the piano. no point in showing all 88 keys if the song doesn't use it all. some such as myself may see it as a waste of screen real estate. Would be a cool feature to have it show "Only song keys" + a user defined number of padding keys or to next C.

Crash when playing a song

C:\Users\Honoka\Downloads>neothesia.exe
[2022-09-23T02:54:52Z INFO  neothesia::scene::menu_scene::iced_menu] File path = "C:\\Users\\Honoka\\Downloads\\KiRa-KiRa Sensation!.mid"
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src\scene\menu_scene\iced_menu.rs:202:75
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Version 0.0.13

Extra feature: Play-along mode

The best thing would be if there was a play-along mode where you can play and the midi waits for you, just like in synthesia. I might eventually learn ruby to help you program this, but I don't have a lot of time and I'm more comfortable with Python (in which I wrote my own cli midi player)

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.