vibbro-dev / v4m Goto Github PK
View Code? Open in Web Editor NEWv4m Qt player/mixer
v4m Qt player/mixer
The music player should be able to access the spotify API
to access spotify
's streaming services.
In the current development
branch, both players are the same - they are twice the copy of the same Player
object sitting in player.cpp
.
A second, stripped-down version of a QMediaPlayer
(or possibly a QAudioDecoder
class - which may be more useful) should be worked out so that it can play only the given set of built-in frequencies which should become basic sample arrays (see #3). This player class should be called FrequencyPlayer
and its sources should reside in frequency_player.h
and in frequency_player.cpp
.
In the end, the DoublePlayer
class (in double_player.cpp
) should contain one Player
class and one FrequencyPlayer
class.
The current music locator
solves the problem but it is probably sub-optimal. A better solution finding portable file indexing services on every platform should be searched and implemented.
As a simplification matter for now, there should be a set of arrays of samples which should contain all the needed (stereo) samples of specific frequencies required by the vibed
app. This would allow the FrequencyPlayer
(see #2) to play those frequencies without too much hassle.
This should be done like this:
audio/build
directory should be createdcsound
.orc/.sco
(multi-)pair of files should be created to synthesize these soundsoctave
(or python, or ruby, or whatever) script should be created to convert the wave files into c++ arrays to be included into a Frequencies
object in the code.The player must be able to play both music and frequencies also when app runs in background
The playlist should be able to access Apple Music
services
Regression testing for correct TDD development should be set up (on a specially created testing
branch) for most calls along with mocks, fixtures, etc.
The music player Player
object currently is missing the straight/shuffle
toggle button. The default should be straight
, and when tapping it it should randomize the playlist (or the music repository if the playlist is non existant) with a common no-twice-in-a-row randomization algorithm. If tapped again it should go back to straight
listening from the piece where it is onwards.
The music player should be able to access the Youtube Music
API
There is a functional solution in the testing code. It should be implemented in the startup of the Playlist
object.
While we wait to solve #13 we use a plan B of a closed set of 20 or so music pieces that we distribute along with the app and that should fill up the playlist. We must make sure that the directory with the music is app-relative and that it gets distributed along with the app (a bit like if it was the notification sounds or something like that).
Currently, the whole codebase has hard-wired graphics. We should shift graphics to QML, possibly to v-play.
Playlist should support at least: .aac, .ac3, .aiff, .aif, .mp3, .m4a, .wav, .wma, .ogg, .ogv
The QStandardPaths
class (http://doc.qt.io/qt-5/qstandardpaths.html) does not work as advertised. In particular, it will not set the proper Music folder on IOS
, Android
and for that matter, anywhere else.
As a result, this piece of code in player.cpp
in the current development
branch:
233 fileDialog.setDirectory(QStandardPaths::standardLocations(QStandardPaths::MusicLocation).value(0, QDir::homePath()));
234 qInfo() << "Music Directory: " << QStandardPaths::displayName(QStandardPaths::MusicLocation);
does not work properly (no music folder is opened, no music is displayed). Ideally, there shouldn't be an open
button, the playlist field should fill itself automatically from the Music folder.
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.