Git Product home page Git Product logo

anmp's People

Contributors

derselbst 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

Watchers

 avatar  avatar  avatar  avatar  avatar

anmp's Issues

dont seek beyond end of song

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?

fluidsynth reverb

read reverb from fludisynths dedicated fx channel, to avoid switching off reverb when muting voice 0

player callback

in Player class: provide callback function for playhead and currentSong changed by internal playback-thread

song inspector gui

right click a song > properties: open up a nice gui that gives all informations about the selected song:

  • metadata
  • loop points, i.e. visualize loop tree??
  • total playing time (with / without loops?)
  • total frames available
  • sample format, rate
  • which wrapper lib currently handles this file
  • edit available voices and their channel config
  • add/remove voice muting presets

dataChanged has no effect

Figure out why dataChanged in PlaylistModel doesnt cause calling PlaylistModel::data() to refresh cells and their styles and colors:

PlaylistModel.cpp:192

This would avoid resetting the whole model (and by that redrawing the whole view), just because the next song is played.

separate midi reader + synthesizer

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.

jack playback problems

that occur whenever JackBufSize > FramesToRender && JackSampleRate < SongSampleRate

  • delayed start of a song (fixed by 72dd1fc)
  • interrupted audio or no playback at all

portaudio trouble

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

may hear part of old song

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

Add custom PlaylistModel

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.)

catch exceptions

TestCases:

  • add file to playlist, remove file, play file
  • exception while parsing cue sheet

SFC_SET_SCALE_FLOAT_INT_READ is time consuming

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.

class Player

split all current public methods into public and private part, private part does actual job, public calls private and syncs with future

implement voice mute presets

a preset defines mute masks for voices, enabling easy switch between normal, cave or aquatic theme of a song.

implement voices

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).

handle channel layouts

create a way to configure the channel layout for a song. make sure it doesnt get overwritten by subsequent call to Song::open().

be able to mute specific channels

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

Song::open()

introduce bool useCached parameter to speed up file openings??

implement noise normalization

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

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.