derselbst / anmp Goto Github PK
View Code? Open in Web Editor NEWmulti-channel loopable video game music player for nerds and audiophiles
License: GNU General Public License v2.0
multi-channel loopable video game music player for nerds and audiophiles
License: GNU General Public License v2.0
for crossplatform
via dbus. therefore write a launcher
dont let the user trigger the next song by seeking beyond the end of the current song. just as one cannot seek beyond its beginning. catch that case within GUI?
reproduce:
read reverb from fludisynths dedicated fx channel, to avoid switching off reverb when muting voice 0
in Player class: provide callback function for playhead and currentSong changed by internal playback-thread
right click a song > properties: open up a nice gui that gives all informations about the selected song:
Figure out why dataChanged in PlaylistModel doesnt cause calling PlaylistModel::data() to refresh cells and their styles and colors:
This would avoid resetting the whole model (and by that redrawing the whole view), just because the next song is played.
therefore steal the code from madplay
implement a custom midi player so that individual track can be looped as here:
http://level42.ca/projects/ultra64/Documentation/man/pro-man/pro20/index20.5.html
FluidsynthWrapper becomes LibSMFWrapper, holding an arbitrary singleton of class Synthesizer (or so) which is solely responsible for synthesizing. Fluidsynth is a derivative of this class.
currently only works when rendering whole song active
that occur whenever JackBufSize > FramesToRender && JackSampleRate < SongSampleRate
currently doesnt work at all
use qsplitter and dock widgets
instead of sample peak as soon as libeubr128 got rid of speex dependency
PlaylistFactory: no try and error with modplug, solely it by fileextension
e.g.: for one decode do noise normalization + wave output
when playing next file, probably due to resetting the model
Expression 'res' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3497
Expression 'PaAlsaStreamComponent_EndProcessing( &self->playback, numFrames, &xrun )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3596
Expression 'PaAlsaStream_EndProcessing( stream, framesGot, &xrun )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 4462
Expression 'res' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3497
Expression 'PaAlsaStreamComponent_EndProcessing( &self->playback, numFrames, &xrun )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3596
Expression 'PaAlsaStream_EndProcessing( stream, framesGot, &xrun )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 4462
esp. for vgmstream: play song A, play next song B
B may use pcm buffer of A. if vgmstream isnt ready yet, one will hear very first part of song A
--> introduce additional sync variable at VGMStreamWrapper.cpp:67
implement a class PlaylistModel that derives from QAbstractTableModel. This class the songs that are added by the user (i.e. it holds an instance of IPlaylist). It will also be used to display the songs in a tableView, allowing it to edit the playingorder, retrieving information of the song that are in the playlist (e.g. SampleRate, Metadata, FileFormat, Filepath, looppoints, etc.)
TestCases:
having big wave files (>2.5 GiB) containing pcm as floats, this command may take up to 15 seconds to process. unacceptable! therefore, make the sample format generated by sndfile depend on the sample format of the input files, i.e. if we get an audio file with floats or doubles, output them as floats; if we get a file containing integers, output them as int32.
for playlist model and disable songs if false
split all current public methods into public and private part, private part does actual job, public calls private and syncs with future
like ffplay uses
a preset defines mute masks for voices, enabling easy switch between normal, cave or aquatic theme of a song.
The Song
class has to provide several voices, that may be mixed or muted by IAudioOutput. Every voice itself may play on a mono, stereo, surround or whatever n-channel. For simplicity this configuration must be the same for every voice (illegal that one voices plays on mono channel, while another has a stereo channel).
introduced in 0cd5ebd
create a way to configure the channel layout for a song. make sure it doesnt get overwritten by subsequent call to Song::open().
esp. usefull for libgme: when playing spc we should get 8 stereo channels from the DSP. by using bitmask become able to play only specific channels.
best way to do this to use Song::data as two-dim array, like
pcm_t data[Song::Format::Channels][Song::getFrames()]
by that we also get rid of Song::count
in this case dont hold whole song in memory but only Config::FramesToRender frames
... in order to display exceptions
create lamdba and calculate volume in callback function
introduce bool useCached
parameter to speed up file openings??
and compare samplerate and format explicitly
use ReplayGain or loudness-scanner to achieve a noise normalization for all audio format (even those, which dont support taking in such loudness-metadata)
possible solution: write loudness info to (hidden) text files
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.