You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(25) |
Jul
(288) |
Aug
(119) |
Sep
(31) |
Oct
(59) |
Nov
(458) |
Dec
(359) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
(268) |
Feb
(26) |
Mar
(36) |
Apr
(48) |
May
(119) |
Jun
(37) |
Jul
(173) |
Aug
(429) |
Sep
(137) |
Oct
(156) |
Nov
(59) |
Dec
(45) |
| 2011 |
Jan
(398) |
Feb
(257) |
Mar
(49) |
Apr
(5) |
May
(34) |
Jun
(11) |
Jul
(38) |
Aug
(12) |
Sep
(1) |
Oct
(49) |
Nov
(5) |
Dec
(10) |
| 2012 |
Jan
(21) |
Feb
(32) |
Mar
(20) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(173) |
Aug
|
Sep
(25) |
Oct
(6) |
Nov
(44) |
Dec
|
|
From: Yoda-JM <yo...@us...> - 2009-08-18 11:35:18
|
Module: performous
Branch: master
Commit: 5f132b1204cba432b7bbfe7ec40136b6704310ce
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Aug 18 13:34:45 2009 +0200
Added instrument detection in screen songs
---
game/notes.hh | 9 ++++++++
game/screen_songs.cc | 57 ++++++++++++++++++++++++++++++++++++++++++++++++-
game/screen_songs.hh | 2 +-
3 files changed, 65 insertions(+), 3 deletions(-)
diff --git a/game/notes.hh b/game/notes.hh
index 1e4bb79..29f22f5 100644
--- a/game/notes.hh
+++ b/game/notes.hh
@@ -53,6 +53,15 @@ struct Track {
typedef std::vector<Track> Tracks;
+namespace {
+ bool isTrackInside(Tracks &_tracks, std::string _name) {
+ for( Tracks::iterator it = _tracks.begin() ; it != _tracks.end() ; ++it ) {
+ if(it->name == _name) return true;
+ }
+ return false;
+ }
+}
+
// TODO: Make Note use Duration
/// note read from songfile
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index f2723d4..1689062 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -21,7 +21,7 @@ void ScreenSongs::enter() {
m_emptyCover.reset(new Surface(getThemePath("no_cover.svg")));
m_instrumentCover.reset(new Surface(getThemePath("instrument_cover.svg")));
m_bandCover.reset(new Surface(getThemePath("band_cover.svg")));
- m_instrumentList.reset(new Surface(getThemePath("instruments.svg")));
+ m_instrumentList.reset(new Texture(getThemePath("instruments.svg")));
m_search.text.clear();
m_songs.setFilter(m_search.text);
m_audio.fadeout();
@@ -219,7 +219,60 @@ void ScreenSongs::draw() {
s.dimensions.top(y + 0.2 * diff); s.tex = TexCoords(0, 1, 1, 0); glColor4f(1.0, 1.0, 1.0, 0.4); s.draw();
s.tex = TexCoords(); glColor3f(1.0, 1.0, 1.0); // Restore default attributes
// Draw the intruments
- m_instrumentList->dimensions.middle(-0.2 + 0.17 * (i - shift)).bottom(y - (0.14+diff) - 0.2 * diff).fitInside(0.14 + diff, 0.14 + diff); m_instrumentList->draw();
+ {
+ UseTexture tex(*m_instrumentList);
+ Dimensions dim = Dimensions(m_instrumentList->ar()).middle(-0.2 + 0.17 * (i - shift)).bottom(y - (0.14+diff) - 0.2 * diff).fitInside(0.14 + diff, 0.14 + diff);
+ double x;
+ float alpha;
+ {
+ // vocals
+ alpha = (song_display.notes.size()) ? 1.00 : 0.25;
+ glutil::Begin block(GL_TRIANGLE_STRIP);
+ glColor4f(1.0, 1.0, 1.0, alpha);
+ x = dim.x1()+0.00*(dim.x2()-dim.x1());
+ glTexCoord2f(0.00f, 0.0f); glVertex2f(x, dim.y1());
+ glTexCoord2f(0.00f, 1.0f); glVertex2f(x, dim.y2());
+ x = dim.x1()+0.25*(dim.x2()-dim.x1());
+ glTexCoord2f(0.25f, 0.0f); glVertex2f(x, dim.y1());
+ glTexCoord2f(0.25f, 1.0f); glVertex2f(x, dim.y2());
+ }
+ {
+ // guitar
+ alpha = (isTrackInside(song_display.tracks,"guitar")) ? 1.00 : 0.25;
+ glutil::Begin block(GL_TRIANGLE_STRIP);
+ glColor4f(1.0, 1.0, 1.0, alpha);
+ x = dim.x1()+0.25*(dim.x2()-dim.x1());
+ glTexCoord2f(0.25f, 0.0f); glVertex2f(x, dim.y1());
+ glTexCoord2f(0.25f, 1.0f); glVertex2f(x, dim.y2());
+ x = dim.x1()+0.50*(dim.x2()-dim.x1());
+ glTexCoord2f(0.50f, 0.0f); glVertex2f(x, dim.y1());
+ glTexCoord2f(0.50f, 1.0f); glVertex2f(x, dim.y2());
+ }
+ {
+ // bass
+ alpha = (isTrackInside(song_display.tracks,"bass")) ? 1.00 : 0.25;
+ glutil::Begin block(GL_TRIANGLE_STRIP);
+ glColor4f(1.0, 1.0, 1.0, alpha);
+ x = dim.x1()+0.50*(dim.x2()-dim.x1());
+ glTexCoord2f(0.50f, 0.0f); glVertex2f(x, dim.y1());
+ glTexCoord2f(0.50f, 1.0f); glVertex2f(x, dim.y2());
+ x = dim.x1()+0.75*(dim.x2()-dim.x1());
+ glTexCoord2f(0.75f, 0.0f); glVertex2f(x, dim.y1());
+ glTexCoord2f(0.75f, 1.0f); glVertex2f(x, dim.y2());
+ }
+ {
+ // drums
+ alpha = (isTrackInside(song_display.tracks,"drums")) ? 1.00 : 0.25;
+ glutil::Begin block(GL_TRIANGLE_STRIP);
+ glColor4f(1.0, 1.0, 1.0, alpha);
+ x = dim.x1()+0.75*(dim.x2()-dim.x1());
+ glTexCoord2f(0.75f, 0.0f); glVertex2f(x, dim.y1());
+ glTexCoord2f(0.75f, 1.0f); glVertex2f(x, dim.y2());
+ x = dim.x1()+1.00*(dim.x2()-dim.x1());
+ glTexCoord2f(1.00f, 0.0f); glVertex2f(x, dim.y1());
+ glTexCoord2f(1.00f, 1.0f); glVertex2f(x, dim.y2());
+ }
+ }
}
}
if (!song.music.empty()) music = song.music;
diff --git a/game/screen_songs.hh b/game/screen_songs.hh
index b15cba8..ab81f9c 100644
--- a/game/screen_songs.hh
+++ b/game/screen_songs.hh
@@ -40,7 +40,7 @@ class ScreenSongs : public Screen {
boost::scoped_ptr<Surface> m_emptyCover;
boost::scoped_ptr<Surface> m_instrumentCover;
boost::scoped_ptr<Surface> m_bandCover;
- boost::scoped_ptr<Surface> m_instrumentList;
+ boost::scoped_ptr<Texture> m_instrumentList;
Cachemap<std::string, Surface> m_covers;
bool m_jukebox;
};
|
|
From: Yoda-JM <yo...@us...> - 2009-08-18 10:31:40
|
Module: performous Branch: master Commit: 2a11df567787bcec9e14162a3e4b7b51375ea72a Author: Vincent Le Ligeour <yo...@us...> Date: Tue Aug 18 12:31:03 2009 +0200 Added instrument in a song in songs screen (WIP) --- game/screen_songs.cc | 4 + game/screen_songs.hh | 1 + themes/default/instruments.svg | 124 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 0 deletions(-) |
|
From: Yoda-JM <yo...@us...> - 2009-08-18 08:50:40
|
Module: performous
Branch: master
Commit: 58aca37d82a3db03a75742944509a69d9f93c50d
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Aug 18 10:49:55 2009 +0200
Used Sing layout when no instrument is used anymore
---
game/screen_sing.cc | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index d9f254a..9640093 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -226,7 +226,7 @@ void ScreenSing::draw() {
theme->bg_top.draw();
}
- if( m_song->tracks.empty() ) {
+ if( m_instruments.empty() ) {
m_layout_singer->draw(time, LayoutSinger::BOTTOM);
} else {
instrumentLayout(time);
|
|
From: Yoda-JM <yo...@us...> - 2009-08-18 08:23:08
|
Module: performous
Branch: master
Commit: f057711cc8c26430dbfbbb58240e2fc6c7cf0bc9
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Aug 18 10:22:21 2009 +0200
Added k/K key in screen sing to enable/disable vocals audio track
---
game/audio.cc | 22 +++++++++++-----------
game/audio.hh | 4 ++--
game/guitargraph.cc | 6 +++---
game/screen_sing.cc | 14 ++++++++++++--
game/songparser-ini.cc | 11 +++++++----
5 files changed, 35 insertions(+), 22 deletions(-)
diff --git a/game/audio.cc b/game/audio.cc
index 083f7da..3e0ace5 100644
--- a/game/audio.cc
+++ b/game/audio.cc
@@ -85,7 +85,7 @@ void Audio::playMusic(std::map<std::string,std::string> const& filenames, bool p
for(std::map<std::string,std::string>::const_iterator it = filenames.begin() ; it != filenames.end() ; ++it ) {
try {
boost::shared_ptr<Stream> s(new Stream(it->second, m_rs.rate()));
- m_streams.push_back(s);
+ m_streams[it->first] = s;
ch->add(da::shared_ref(s));
s->seek(startPos);
} catch (std::runtime_error& e) {
@@ -122,31 +122,30 @@ void Audio::fadeout(double fadeTime) {
double Audio::getPosition() const {
da::lock_holder l = m_mixer.lock();
- return m_streams.empty() ? getNaN() : m_streams.front()->pos();
+ return m_streams.empty() ? getNaN() : m_streams.begin()->second->pos();
}
double Audio::getLength() const {
da::lock_holder l = m_mixer.lock();
- return m_streams.empty() ? getNaN() : m_streams.front()->duration();
+ return m_streams.empty() ? getNaN() : m_streams.begin()->second->duration();
}
bool Audio::isPlaying() const {
da::lock_holder l = m_mixer.lock();
- return m_streams.empty() ? false : !m_streams.front()->eof();
+ return m_streams.empty() ? false : !m_streams.begin()->second->eof();
}
void Audio::seek(double offset) {
da::lock_holder l = m_mixer.lock();
- for (size_t i = 0; i < m_streams.size(); ++i) {
- Stream& s = *m_streams[i];
- s.seek(clamp(s.pos() + offset, 0.0, s.duration()));
- }
+ for(std::map<std::string,boost::shared_ptr<Stream> >::iterator it = m_streams.begin() ; it != m_streams.end() ; ++it)
+ it->second->seek(clamp(it->second->pos() + offset, 0.0, it->second->duration()));
pause(false);
}
void Audio::seekPos(double pos) {
da::lock_holder l = m_mixer.lock();
- for (size_t i = 0; i < m_streams.size(); ++i) m_streams[i]->seek(pos);
+ for(std::map<std::string,boost::shared_ptr<Stream> >::iterator it = m_streams.begin() ; it != m_streams.end() ; ++it)
+ it->second->seek(pos);
pause(false);
}
@@ -156,8 +155,9 @@ void Audio::pause(bool state) {
m_mixer.pause(m_paused);
}
-void Audio::streamFade(unsigned num, double level) {
+void Audio::streamFade(std::string stream_id, double level) {
da::lock_holder l = m_mixer.lock();
- m_streams.at(num)->fade = level;
+ std::map<std::string,boost::shared_ptr<Stream> >::iterator it = m_streams.find(stream_id);
+ if( it != m_streams.end() ) it->second->fade = level;
}
diff --git a/game/audio.hh b/game/audio.hh
index 9432cd7..e7ed18e 100644
--- a/game/audio.hh
+++ b/game/audio.hh
@@ -98,7 +98,7 @@ class Audio {
void pause(bool state = true);
/// toggles synth playback (F4)
void toggleSynth(Notes const& notes) { m_notes = (m_notes ? NULL : ¬es); }
- void streamFade(unsigned num, double level);
+ void streamFade(std::string stream_id, double level);
unsigned int getSR() const { return m_rs.rate(); }
private:
bool m_paused;
@@ -106,7 +106,7 @@ class Audio {
da::settings m_rs;
da::volume m_volume;
da::mixer m_mixer;
- std::vector<boost::shared_ptr<Stream> > m_streams;
+ std::map<std::string,boost::shared_ptr<Stream> > m_streams;
std::string m_volumeSetting;
};
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 358cf36..379f8e7 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -70,10 +70,10 @@ GuitarGraph::GuitarGraph(Audio& audio, Song const& song, bool drums, unsigned tr
g_samplesG.push_back(Sample(getDataPath("sounds/guitar_fail6.ogg"), sr));
}
for (Tracks::const_iterator it = m_song.tracks.begin(); it != m_song.tracks.end(); ++it) {
- if (drums != (it->name == "DRUMS")) continue;
+ if (drums != (it->name == "drums")) continue;
m_tracks.push_back(&*it);
- if (it->name == "DRUMS") m_necks.push_back(new Texture("drumneck.svg"));
- else if (it->name == "BASS") m_necks.push_back(new Texture("bassneck.svg"));
+ if (it->name == "drums") m_necks.push_back(new Texture("drumneck.svg"));
+ else if (it->name == "bass") m_necks.push_back(new Texture("bassneck.svg"));
else m_necks.push_back(new Texture("guitarneck.svg"));
}
for (int i = 0; i < 6; ++i) m_hit[i].setRate(5.0);
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index 1a85d41..d9f254a 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -55,7 +55,7 @@ void ScreenSing::instrumentLayout(double time) {
m_instruments[i].position((0.5 + i - 0.5 * s) * iw, iw);
}
typedef std::pair<unsigned, double> CountSum;
- std::map<unsigned, CountSum> volume; // stream number to (count, sum)
+ std::map<unsigned, CountSum> volume; // stream id to (count, sum)
for (Instruments::iterator it = m_instruments.begin(); it != m_instruments.end(); ++it) {
it->engine();
CountSum& cs = volume[it->stream() + 1];
@@ -73,8 +73,16 @@ void ScreenSing::instrumentLayout(double time) {
double level = 1.0;
CountSum cs = volume[i];
if (cs.first > 0) level = cs.second / cs.first;
- m_audio.streamFade(i, level); // +1 because 0 is bg
+ //m_audio.streamFade(i, level); // +1 because 0 is bg
}
+ /*
+ for( std::map<std::string,std::string>::iterator it = m_song->music.begin() ; it != m_song->music.end() ; ++it ) {
+ double level = 1.0;
+ CountSum cs = volume[it->first];
+ if (cs.first > 0) level = cs.second / cs.first;
+ m_audio.streamFade(it->first, level);
+ }
+ */
}
void ScreenSing::exit() {
@@ -161,6 +169,8 @@ void ScreenSing::manageEvent(SDL_Event event) {
else if (key == SDLK_RIGHT) m_audio.seek(5.0);
else if (key == SDLK_UP) m_audio.seek(30.0);
else if (key == SDLK_DOWN) { m_audio.seek(-30.0); seekback = true; }
+ else if (key == SDLK_k && event.key.keysym.mod & KMOD_SHIFT) { m_audio.streamFade("vocals", 1.0); }
+ else if (key == SDLK_k && !(event.key.keysym.mod & KMOD_SHIFT)) { m_audio.streamFade("vocals", 0.0); }
else if (key == SDLK_r && event.key.keysym.mod & KMOD_CTRL) {
exit(); m_song->reload(); enter();
m_audio.seek(time);
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index 9a495cb..74a99b1 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -73,15 +73,18 @@ void SongParser::iniParse() {
for (MidiFileParser::Tracks::const_iterator it = midi.tracks.begin(); it != midi.tracks.end(); ++it) {
// Figure out the track name
std::string name = it->name;
- if (midi.tracks.size() == 1) name = "GUITAR"; // Original (old) FoF songs only have one track
- else if (name == "T1 GEMS") name = "GUITAR"; // Some old MIDI files have a track named T1 GEMS
+ if (midi.tracks.size() == 1) name = "guitar"; // Original (old) FoF songs only have one track
+ else if (name == "T1 GEMS") name = "guitar"; // Some old MIDI files have a track named T1 GEMS
else if (name.substr(0, 5) != "PART ") continue;
else name.erase(0, 5);
if (name == "GUITAR COOP") continue; // TODO: do something with these? They don't work in current version
- if (name == "DRUM") name = "DRUMS";
+ if (name == "DRUM") name = "drums";
+ if (name == "DRUMS") name = "drums";
+ if (name == "BASS") name = "bass";
+ if (name == "GUITAR") name = "guitar";
// Process non-vocal tracks
if (name != "VOCALS") {
- bool drums = (name == "DRUMS");
+ bool drums = (name == "drums");
s.tracks.push_back(Track(name));
NoteMap& nm = s.tracks.back().nm;
for (MidiFileParser::NoteMap::const_iterator it2 = it->notes.begin(); it2 != it->notes.end(); ++it2) {
|
|
From: Yoda-JM <yo...@us...> - 2009-08-18 07:02:41
|
Module: performous
Branch: master
Commit: 129bc5cdbf8b0b727e7742da042369f2d97a24c9
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Aug 18 09:02:04 2009 +0200
Changed song music vector to map
---
game/audio.cc | 12 +++++++-----
game/audio.hh | 2 +-
game/screen_songs.cc | 2 +-
game/screen_songs.hh | 4 ++--
game/song.hh | 2 +-
game/songparser-ini.cc | 26 ++++++++++++++++++++------
game/songparser-txt.cc | 4 ++--
7 files changed, 34 insertions(+), 18 deletions(-)
diff --git a/game/audio.cc b/game/audio.cc
index 0b4171b..083f7da 100644
--- a/game/audio.cc
+++ b/game/audio.cc
@@ -77,19 +77,19 @@ void Audio::play(Sample const& s, std::string const& volumeSetting) {
m_mixer.add(da::shared_ref(acc));
}
-void Audio::playMusic(std::vector<std::string> const& filenames, bool preview, double fadeTime, double startPos) {
+void Audio::playMusic(std::map<std::string,std::string> const& filenames, bool preview, double fadeTime, double startPos) {
if (!isOpen()) return;
da::lock_holder l = m_mixer.lock();
fadeout(fadeTime);
boost::shared_ptr<da::chain> ch(new da::chain());
- for(std::vector<std::string>::const_iterator it = filenames.begin() ; it != filenames.end() ; ++it ) {
+ for(std::map<std::string,std::string>::const_iterator it = filenames.begin() ; it != filenames.end() ; ++it ) {
try {
- boost::shared_ptr<Stream> s(new Stream(*it, m_rs.rate()));
+ boost::shared_ptr<Stream> s(new Stream(it->second, m_rs.rate()));
m_streams.push_back(s);
ch->add(da::shared_ref(s));
s->seek(startPos);
} catch (std::runtime_error& e) {
- std::cerr << "Error loading " << *it << " (" << e.what() << ")" << std::endl;
+ std::cerr << "Error loading " << it->second << " (" << e.what() << ")" << std::endl;
continue;
}
}
@@ -101,7 +101,9 @@ void Audio::playMusic(std::vector<std::string> const& filenames, bool preview, d
}
void Audio::playMusic(std::string const& filename, bool preview, double fadeTime, double startPos) {
- playMusic(std::vector<std::string>(1, filename), preview, fadeTime, startPos);
+ std::map<std::string,std::string> tmp;
+ tmp["unidentified"] = filename;
+ playMusic(tmp, preview, fadeTime, startPos);
}
void Audio::stopMusic() {
diff --git a/game/audio.hh b/game/audio.hh
index 5c8f093..9432cd7 100644
--- a/game/audio.hh
+++ b/game/audio.hh
@@ -67,7 +67,7 @@ class Audio {
*/
void playMusic(std::string const& filename, bool preview = false, double fadeTime = 0.5, double startPos = -0.2);
/// plays a list of songs
- void playMusic(std::vector<std::string> const& filenames, bool preview = false, double fadeTime = 0.5, double startPos = -0.2);
+ void playMusic(std::map<std::string,std::string> const& filenames, bool preview = false, double fadeTime = 0.5, double startPos = -0.2);
/// plays a sample
void play(Sample const& s, std::string const& volumeSetting);
/// get pause status
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index df89a53..eb9d27c 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -170,7 +170,7 @@ void ScreenSongs::draw() {
if (m_video.get()) m_video->render(time);
if (!m_jukebox) theme->bg.draw();
std::string songbg, video;
- std::vector<std::string> music;
+ std::map<std::string,std::string> music;
double videoGap = 0.0;
std::ostringstream oss_song, oss_order;
// Test if there are no songs
diff --git a/game/screen_songs.hh b/game/screen_songs.hh
index 5e9a6b9..f314455 100644
--- a/game/screen_songs.hh
+++ b/game/screen_songs.hh
@@ -33,8 +33,8 @@ class ScreenSongs : public Screen {
boost::scoped_ptr<Surface> m_songbg;
boost::scoped_ptr<Video> m_video;
boost::scoped_ptr<ThemeSongs> theme;
- std::vector<std::string> m_playing;
- std::vector<std::string> m_playReq;
+ std::map<std::string,std::string> m_playing;
+ std::map<std::string,std::string> m_playReq;
AnimValue m_playTimer;
TextInput m_search;
boost::scoped_ptr<Surface> m_emptyCover;
diff --git a/game/song.hh b/game/song.hh
index 677cd62..968c889 100644
--- a/game/song.hh
+++ b/game/song.hh
@@ -52,7 +52,7 @@ class Song: boost::noncopyable {
std::string text; ///< songtext
std::string creator; ///< creator
std::string language; ///< language
- std::vector<std::string> music; ///< music files (background, guitar, rhythm/bass, drums, vocals)
+ std::map<std::string,std::string> music; ///< music files (background, guitar, rhythm/bass, drums, vocals)
std::string cover; ///< cd cover
std::string background; ///< background image
std::string video; ///< video
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index c61196d..9a495cb 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -16,9 +16,9 @@ namespace {
void eraseLast(std::string& s, char ch = ' ') {
if (!s.empty() && *s.rbegin() == ch) s.erase(s.size() - 1);
}
- void testAndAdd(Song& s, std::string const& filename) {
+ void testAndAdd(Song& s, std::string const& trackid, std::string const& filename) {
std::string f = s.path + filename;
- if (boost::filesystem::exists(f)) s.music.push_back(f);
+ if (boost::filesystem::exists(f)) s.music[trackid] = f;
}
}
@@ -39,7 +39,12 @@ void SongParser::iniParse() {
if (s.title.empty() || s.artist.empty()) throw std::runtime_error("Required header fields missing");
boost::regex midifile("(.*\\.mid)$", boost::regex_constants::icase);
- boost::regex audiofile("(.*\\.ogg)$", boost::regex_constants::icase);
+ boost::regex audiofile_background("(song\\.ogg)$", boost::regex_constants::icase);
+ boost::regex audiofile_guitar("(guitar\\.ogg)$", boost::regex_constants::icase);
+ boost::regex audiofile_drums("(drums\\.ogg)$", boost::regex_constants::icase);
+ boost::regex audiofile_bass("(rhythm\\.ogg)$", boost::regex_constants::icase);
+ boost::regex audiofile_vocals("(vocals\\.ogg)$", boost::regex_constants::icase);
+ boost::regex audiofile_other("(.*\\.ogg)$", boost::regex_constants::icase);
boost::cmatch match;
std::string midifilename("notes.mid");
@@ -48,9 +53,18 @@ void SongParser::iniParse() {
std::string name = p.leaf(); // File basename (notes.txt)
if (regex_match(name.c_str(), match, midifile)) {
midifilename = name;
- }
- if (regex_match(name.c_str(), match, audiofile)) {
- testAndAdd(s, name);
+ } else if (regex_match(name.c_str(), match, audiofile_background)) {
+ testAndAdd(s, "background", name);
+ } else if (regex_match(name.c_str(), match, audiofile_guitar)) {
+ testAndAdd(s, "guitar", name);
+ } else if (regex_match(name.c_str(), match, audiofile_bass)) {
+ testAndAdd(s, "bass", name);
+ } else if (regex_match(name.c_str(), match, audiofile_drums)) {
+ testAndAdd(s, "drums", name);
+ } else if (regex_match(name.c_str(), match, audiofile_vocals)) {
+ testAndAdd(s, "vocals", name);
+ } else if (regex_match(name.c_str(), match, audiofile_other)) {
+ std::cout << "Found unknown ogg file: " << name << std::endl;
}
}
diff --git a/game/songparser-txt.cc b/game/songparser-txt.cc
index cd8743b..93ff15f 100644
--- a/game/songparser-txt.cc
+++ b/game/songparser-txt.cc
@@ -53,8 +53,8 @@ bool SongParser::txtParseField(std::string const& line) {
else if (key == "GENRE") m_song.genre = value.substr(value.find_first_not_of(" "));
else if (key == "CREATOR") m_song.creator = value.substr(value.find_first_not_of(" "));
else if (key == "COVER") m_song.cover = value;
- else if (key == "MP3") m_song.music.push_back(m_song.path + value);
- else if (key == "VOCALS") m_song.music.push_back(m_song.path + value);
+ else if (key == "MP3") m_song.music["background"] = m_song.path + value;
+ else if (key == "VOCALS") m_song.music["vocals"] = m_song.path + value;
else if (key == "VIDEO") m_song.video = value;
else if (key == "BACKGROUND") m_song.background = value;
else if (key == "START") assign(m_song.start, value);
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-18 04:09:18
|
Module: performous
Branch: master
Commit: 0a636e0564678d4d27b263d9bfce65781c32024b
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 18 07:08:25 2009 +0300
New commandline parsing for ss_extract (partially implemented).
---
tools/CMakeLists.txt | 2 +-
tools/ss_extract.cpp | 40 ++++++++++++++++++++++++++++++++++------
2 files changed, 35 insertions(+), 7 deletions(-)
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 8793b5b..9a26670 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.6)
include_directories(${CMAKE_SOURCE_DIR}/libda)
-find_package(Boost 1.34 REQUIRED COMPONENTS filesystem)
+find_package(Boost 1.34 REQUIRED COMPONENTS filesystem program_options)
include_directories(${Boost_INCLUDE_DIRS})
# Find all the libs that don't require extra parameters
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index 338b592..b9ac5f9 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -15,6 +15,7 @@
#include <boost/filesystem.hpp>
#include <boost/lexical_cast.hpp>
+#include <boost/program_options.hpp>
#include "pak.h"
#include "ipuconv.hh"
@@ -486,11 +487,35 @@ struct FindSongs {
};
int main( int argc, char **argv) {
- if (argc < 2 || argc > 3) {
- std::cerr << "Usage: " << argv[0] << " dvdPath [track id or name]" << std::endl;
- return EXIT_FAILURE;
+ std::string video, audio, song;
+ namespace po = boost::program_options;
+ po::options_description opt("Options");
+ opt.add_options()
+ ("help,h", "you are viewing it")
+ ("dvd", po::value<std::string>(&dvdPath), "path to Singstar DVD root")
+ ("list,l", "list tracks only")
+ ("song", po::value<std::string>(&song), "only extract the given track (ID or partial name)")
+ ("video", po::value<std::string>(&video)->default_value("mkv"), "specify video format (none, mkv, mpeg2)")
+ ("audio", po::value<std::string>(&audio)->default_value("ogg"), "specify audio format (none, ogg, wav)")
+ ;
+ // Process the first flagless option as dvd, the second as song
+ po::positional_options_description pos;
+ pos.add("dvd", 1);
+ pos.add("song", 1);
+ po::options_description cmdline;
+ cmdline.add(opt);
+ po::variables_map vm;
+ // Load the arguments
+ try {
+ po::store(po::command_line_parser(argc, argv).options(opt).positional(pos).run(), vm);
+ po::notify(vm);
+ if (dvdPath.empty()) throw std::runtime_error("No Singstar DVD path specified. Enter a path to a folder with pack_ee.pak in it.");
+ // TODO: process audio and video options and throw if they have incorrect values
+ } catch (std::exception& e) {
+ std::cout << cmdline << std::endl;
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
}
- dvdPath = argv[1];
std::string pack_ee = dvdPath + "/pack_ee.pak"; // Note: lower case (ISO-9660)
if (!fs::exists(pack_ee)) {
if (fs::exists(dvdPath + "/Pack_EE.PAK")) { // Note: capitalization (UDF)
@@ -504,8 +529,11 @@ int main( int argc, char **argv) {
}
nsmap["ss"] = "http://www.singstargame.com";
Pak p(pack_ee);
- FindSongs f = std::for_each(p.files().begin(), p.files().end(), FindSongs(argc > 2 ? argv[2] : ""));
+ FindSongs f = std::for_each(p.files().begin(), p.files().end(), FindSongs(song));
std::cerr << f.songs.size() << " songs found" << std::endl;
- std::for_each(f.songs.begin(), f.songs.end(), Process(p));
+ if (vm.count("list")) {
+ // TODO: dump list of songs
+ }
+ else std::for_each(f.songs.begin(), f.songs.end(), Process(p));
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-18 04:09:16
|
Module: performous
Branch: master
Commit: 5e0ea4076ee9431506f43c64a4415268d4b75348
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 18 06:37:59 2009 +0300
Rename & from et to and, as that form is far more common.
---
tools/ss_extract.cpp | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index a64d98c..338b592 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -88,7 +88,7 @@ Filename_ safename(Glib::ustring const& str) {
if (*it >= 0x7F && *it < 0xA0) continue; // Additional control characters
if (first && *it == '.') continue;
if (first && *it == '-') continue;
- if (*it == '&') { ret += " et "; continue; }
+ if (*it == '&') { ret += " and "; continue; }
if (*it == '%') { ret += " percent "; continue; }
if (*it == '$') { ret += " dollar "; continue; }
if (forbidden.find(*it) != Glib::ustring::npos) { ret += "_"; continue; }
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-18 03:36:04
|
Module: performous
Branch: master
Commit: 2c8d540da7b1b3096946ee9cbe60aabb8ab83d1d
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 18 06:35:04 2009 +0300
Make Engine::kill block until the thread has terminated to avoid a crash in
the new score dialog code.
---
game/engine.hh | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/game/engine.hh b/game/engine.hh
index 19c91ef..0160c44 100644
--- a/game/engine.hh
+++ b/game/engine.hh
@@ -56,9 +56,9 @@ class Engine {
for (std::list<Player>::iterator it = m_players.cur.begin(); it != m_players.cur.end(); ++it, ++player) it->m_color = playerColors[player % playerColorsSize];
m_thread.reset(new boost::thread(boost::ref(*this)));
}
- ~Engine() { kill(); m_thread->join(); }
+ ~Engine() { kill(); }
/// Terminates processing
- void kill() { m_quit = true; }
+ void kill() { m_quit = true; m_thread->join(); }
/** Used internally for boost::thread. Do not call this yourself. (boost::thread requires this to be public). **/
void operator()() {
while (!m_quit) {
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-18 03:36:02
|
Module: performous
Branch: master
Commit: 0f39ecec3d8226e31101bebc2c5f44f2dfc38c4d
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 18 05:08:33 2009 +0300
Fix typo in ss_extract usage message.
---
tools/ss_extract.cpp | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index c8a2cee..a64d98c 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -498,7 +498,7 @@ int main( int argc, char **argv) {
"Singstar DVDs have UDF and ISO-9660 filesystems on them. Your disc is mounted\n"
"as UDF and this causes some garbled data files, making ripping it impossible.\n\n"
"Please remount the disc as ISO-9660 and try again. E.g. on Linux:\n"
- "# mount -t iso9600 /dev/cdrom " << dvdPath << std::endl;
+ "# mount -t iso9660 /dev/cdrom " << dvdPath << std::endl;
} else std::cerr << "No Singstar DVD found. Enter a path to a folder with pack_ee.pak in it." << std::endl;
return EXIT_FAILURE;
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-18 02:04:12
|
Module: performous
Branch: master
Commit: 5a1fff4445a2e546ba2bcedf586495853cf627c4
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 18 05:03:17 2009 +0300
No tappable notes for drums (was causing rendering bug).
---
game/guitargraph.cc | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index ee525f7..358cf36 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -476,7 +476,8 @@ void GuitarGraph::updateChords() {
++c.polyphony;
++pos[fret];
}
- if (c.polyphony == 1) {
+ // Check if the chord is tappable
+ if (!m_drums && c.polyphony == 1) {
c.tappable = true;
if (m_chords.empty() || m_chords.back().fret[tapfret]) c.tappable = false;
if (lastEnd + tapMaxDelay < t) c.tappable = false;
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-17 19:52:44
|
Module: performous
Branch: master
Commit: e13150f952e4b7c8ea9580abdbf124bca0908882
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 17 22:19:42 2009 +0300
Commandline option simplification. Only kept options that need to be
configurable on command line.
Removed support for performous.conf in favor of the new XML-based config.
---
game/main.cc | 52 +++++++++++++++++++++-------------------------------
1 files changed, 21 insertions(+), 31 deletions(-)
diff --git a/game/main.cc b/game/main.cc
index 729e813..424054c 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -197,39 +197,32 @@ int main(int argc, char** argv) {
po::options_description opt1("Generic options");
opt1.add_options()
("help,h", "you are viewing it")
- ("version,v", "display version number");
+ ("version,v", "display version number")
+ ("songlist", po::value<std::string>(&songlist), "save a list of songs in the specified folder");
po::options_description opt2("Configuration options");
opt2.add_options()
- ("theme,t", po::value<std::string>(), "set theme (name or absolute path)")
- ("fs,f", "enable full screen mode")
- ("fps", "benchmark rendering speed\n also disable 100 FPS limit")
- ("songlist", po::value<std::string>(&songlist), "save a list of songs in the specified folder")
+ ("fs", po::value<bool>()->implicit_value(true), "start in full screen mode\n --fs=0 for windowed mode")
("width,W", po::value<int>(), "set horizontal resolution")
("height,H", po::value<int>(), "set vertical resolution")
- ("fs-width", po::value<int>(), "set fullscreen horizontal resolution")
- ("fs-height", po::value<int>(), "set fullscreen vertical resolution")
- ("michelp", "detailed help for --mics and a list of available audio devices")
- ("mics", po::value<std::vector<std::string> >(&mics)->composing(), "specify microphones to use")
- ("pdevhelp", "detailed help for --pdev and a list of available audio devices")
- ("pdev", po::value<std::vector<std::string> >(&pdevs)->composing(), "specify a playback device")
- ("songdir,s", po::value<std::vector<std::string> >(&songdirs)->composing(), "additional song folders to scan\n may be specified without -s or -songdir too");
+ ("mics", po::value<std::vector<std::string> >(&mics)->composing(), "specify the microphones to use")
+ ("pdev", po::value<std::vector<std::string> >(&pdevs)->composing(), "specify the playback device")
+ ("michelp", "detailed help and device list for --mics")
+ ("pdevhelp", "detailed help and device list for --pdev")
+ ("theme", po::value<std::string>(), "set theme (name or absolute path)");
+ po::options_description opt3("Hidden options");
+ opt3.add_options()
+ ("songdir", po::value<std::vector<std::string> >(&songdirs)->composing(), "");
// Process flagless options as songdirs
po::positional_options_description p;
p.add("songdir", -1);
po::options_description cmdline;
cmdline.add(opt1).add(opt2);
po::variables_map vm;
- // Load more arguments from performous.conf files
+ // Load the arguments
try {
- po::store(po::command_line_parser(argc, argv).options(cmdline).positional(p).run(), vm);
- {
- std::ifstream conf((getHomeDir() / ".config" / "performous.conf").string().c_str());
- po::store(po::parse_config_file(conf, opt2), vm);
- }
- {
- std::ifstream conf("/etc/performous.conf");
- po::store(po::parse_config_file(conf, opt2), vm);
- }
+ po::options_description allopts(cmdline);
+ allopts.add(opt3);
+ po::store(po::command_line_parser(argc, argv).options(allopts).positional(p).run(), vm);
} catch (std::exception& e) {
std::cout << cmdline << std::endl;
std::cout << "ERROR: " << e.what() << std::endl;
@@ -241,7 +234,7 @@ int main(int argc, char** argv) {
return 0;
}
if (vm.count("help")) {
- std::cout << cmdline << std::endl;
+ std::cout << cmdline << " any arguments without a switch are interpreted as song folders.\n" << std::endl;
return 0;
}
// Initialize audio for pdevhelp, michelp and the rest of the program
@@ -269,7 +262,7 @@ int main(int argc, char** argv) {
" Note: only the first four at most will be used\n"
" --mics channels=1,rate=44100 One mic; will try to get 44100 Hz if available\n\n"
"Multiple --mics options may be specified and all the successfully opened inputs\n"
- "are be assigned as players until the maximum of four players are configured.\n" << std::endl;
+ "are assigned as players until the maximum of four players are configured.\n" << std::endl;
std::cout << "Capture devices available:" << std::endl;
for (da::record::devlist_t::const_iterator it = l.begin(); it != l.end(); ++it) {
std::cout << boost::format(" %1% %|10t|%2%\n") % it->name() % it->desc();
@@ -286,13 +279,10 @@ int main(int argc, char** argv) {
return EXIT_FAILURE;
}
// Override XML config for options that were specified from commandline or performous.conf
- if (vm.count("width")) config["graphic/window_width"].i() = vm["width"].as<int>();
- if (vm.count("height")) config["graphic/window_height"].i() = vm["height"].as<int>();
- if (vm.count("fs-width")) config["graphic/fs_width"].i() = vm["fs-width"].as<int>();
- if (vm.count("fs-height")) config["graphic/fs_height"].i() = vm["fs-height"].as<int>();
- if (vm.count("theme")) config["game/theme"].s() = vm["theme"].as<std::string>();
- if (vm.count("fs")) config["graphic/fullscreen"].b() = true;
- if (vm.count("fps")) config["graphic/fps"].b() = true;
+ if (vm.count("fs")) config["graphic/fullscreen"].b() = vm["fs"].as<bool>();
+ std::string graphic = config["graphic/fullscreen"].b() ? "graphic/fs_" : "graphic/window_";
+ if (vm.count("width")) config[graphic + "width"].i() = vm["width"].as<int>();
+ if (vm.count("height")) config[graphic + "height"].i() = vm["height"].as<int>();
confOverride(songdirs, "system/path_songs");
confOverride(mics, "audio/capture");
confOverride(pdevs, "audio/playback");
|
|
From: Yoda-JM <yo...@us...> - 2009-08-17 18:24:35
|
Module: performous
Branch: master
Commit: 155fdbfa776eeeb3699b90202bb0313f589a5b1a
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Aug 17 20:19:22 2009 +0200
Used SingStarCover class inside ss_extract
---
tools/CMakeLists.txt | 26 +++++++++++++++-----------
tools/ss_extract.cpp | 8 ++++++--
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 3f457d2..8793b5b 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -25,22 +25,26 @@ endif(CMAKE_COMPILER_IS_GNUCXX)
if (LibXML++_FOUND)
if (Boost_FOUND)
- add_executable(ss_extract ss_extract.cpp pak.cpp ipu_conv.cpp)
- target_link_libraries(ss_extract ${LibXML++_LIBRARIES} ${Boost_LIBRARIES})
- set(targets ${targets} ss_extract)
+ if (Magick++_FOUND)
+ add_executable(ss_extract ss_extract.cpp pak.cpp ipu_conv.cpp ss_cover.cpp)
+ target_link_libraries(ss_extract ${LibXML++_LIBRARIES} ${Boost_LIBRARIES} ${Magick++_LIBRARIES})
+ set(targets ${targets} ss_extract)
+ else (Magick++_FOUND)
+ message("No Magick++ found, not building ss_extract")
+ endif (Magick++_FOUND)
else (Boost_FOUND)
- message("Boost.Filesystem not found, not building ss_extract")
+ message("No Boost.Filesystem found, not building ss_extract")
endif (Boost_FOUND)
- if (Magick++_FOUND)
- add_executable(ss_cover_conv cover_conv.cpp pak.cpp ss_cover.cpp)
- target_link_libraries(ss_cover_conv ${Magick++_LIBRARIES} ${LibXML++_LIBRARIES})
+ if (Magick++_FOUND)
+ add_executable(ss_cover_conv cover_conv.cpp pak.cpp ss_cover.cpp)
+ target_link_libraries(ss_cover_conv ${Magick++_LIBRARIES} ${LibXML++_LIBRARIES})
set(targets ${targets} ss_cover_conv)
- else (Magick++_FOUND)
- message("No Magick++ found, not building ss_cover_conv")
- endif (Magick++_FOUND)
+ else (Magick++_FOUND)
+ message("No Magick++ found, not building ss_cover_conv")
+ endif (Magick++_FOUND)
else (LibXML++_FOUND)
- message("No LibXML++ found, not building ss_extract nor ss_cover_conv")
+ message("No LibXML++ found, not building ss_extract nor ss_cover_conv")
endif (LibXML++_FOUND)
if (Boost_FOUND)
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index 83e7699..c8a2cee 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -14,9 +14,11 @@
#include <libxml++/libxml++.h>
#include <boost/filesystem.hpp>
+#include <boost/lexical_cast.hpp>
#include "pak.h"
#include "ipuconv.hh"
+#include "ss_cover.hh"
namespace fs = boost::filesystem;
@@ -318,8 +320,10 @@ struct Process {
}
}
std::cerr << ">>> Extracting cover image" << std::endl;
- // FIXME: use internally instead of separate program
- std::system(("ss_cover_conv \"" + dvdPath + "/pack_ee.pak\" " + id + " \"" + path.string() + "/cover.jpg\"").c_str());
+ try {
+ SingstarCover c = SingstarCover(dvdPath + "/pack_ee.pak", boost::lexical_cast<unsigned int>(id));
+ c.write(path.string() + "/cover.jpg");
+ } catch (...) {}
remove = "";
if (video) {
std::cerr << ">>> Extracting video" << std::endl;
|
|
From: Yoda-JM <yo...@us...> - 2009-08-17 17:42:28
|
Module: performous
Branch: master
Commit: 7c7b394fd27491db5e87e6371f6805ad7ea49d89
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Aug 17 19:41:37 2009 +0200
Used regexp for instrument midi/audio files
---
game/songparser-ini.cc | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index cb74918..c61196d 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -1,6 +1,7 @@
#include "songparser.hh"
#include <boost/filesystem.hpp>
+#include <boost/regex.hpp>
#include "midifile.hh"
/// @file
@@ -36,12 +37,24 @@ void SongParser::iniParse() {
else if (key == "artist") s.artist = value;
}
if (s.title.empty() || s.artist.empty()) throw std::runtime_error("Required header fields missing");
- testAndAdd(s, "song.ogg");
- testAndAdd(s, "guitar.ogg");
- testAndAdd(s, "rhythm.ogg");
- testAndAdd(s, "drums.ogg");
- testAndAdd(s, "vocals.ogg");
- MidiFileParser midi(s.path + "/notes.mid");
+
+ boost::regex midifile("(.*\\.mid)$", boost::regex_constants::icase);
+ boost::regex audiofile("(.*\\.ogg)$", boost::regex_constants::icase);
+ boost::cmatch match;
+ std::string midifilename("notes.mid");
+
+ for (boost::filesystem::directory_iterator dirIt(s.path), dirEnd; dirIt != dirEnd; ++dirIt) {
+ boost::filesystem::path p = dirIt->path();
+ std::string name = p.leaf(); // File basename (notes.txt)
+ if (regex_match(name.c_str(), match, midifile)) {
+ midifilename = name;
+ }
+ if (regex_match(name.c_str(), match, audiofile)) {
+ testAndAdd(s, name);
+ }
+ }
+
+ MidiFileParser midi(s.path + "/" + midifilename);
for (uint32_t ts = 0, end = midi.ts_last + midi.division; ts < end; ts += midi.division) s.beats.push_back(midi.get_seconds(ts));
for (MidiFileParser::Tracks::const_iterator it = midi.tracks.begin(); it != midi.tracks.end(); ++it) {
// Figure out the track name
|
|
From: Yoda-JM <yo...@us...> - 2009-08-17 16:23:12
|
Module: performous
Branch: master
Commit: 120228edbce06a0a18138cfddf6d86a1517174b0
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Aug 17 18:22:42 2009 +0200
Added language display when ordering by language
---
game/songs.cc | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/game/songs.cc b/game/songs.cc
index 7b4126c..8414e44 100644
--- a/game/songs.cc
+++ b/game/songs.cc
@@ -215,6 +215,7 @@ std::string Songs::sortDesc() const {
if (m_order == 3) str += " (" + current().edition + ")";
if (m_order == 4) str += " (" + current().genre + ")";
if (m_order == 5) str += " (" + pathtrim(current().path) + ")";
+ if (m_order == 6) str += " (" + current().language + ")";
}
return str;
}
|
|
From: Yoda-JM <yo...@us...> - 2009-08-17 16:00:14
|
Module: performous Branch: master Commit: 24b4b6bb77ad587020715aa619d6486adf6c5db1 Author: Vincent Le Ligeour <yo...@us...> Date: Mon Aug 17 17:59:34 2009 +0200 Made class for cover extraction --- tools/CMakeLists.txt | 2 +- tools/cover_conv.cpp | 182 +------------------------------------------------ tools/ss_cover.cpp | 125 ++++++++++++++++++++++++++++++++++ tools/ss_cover.hh | 14 ++++ 4 files changed, 144 insertions(+), 179 deletions(-) |
|
From: Yoda-JM <yo...@us...> - 2009-08-17 14:13:46
|
Module: performous
Branch: master
Commit: 4ca4995ee33da96ef2cb7b48c70a626126ff80d9
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Aug 17 15:08:56 2009 +0200
Added #VOCALS parsing (always play it when present)
---
game/songparser-txt.cc | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/game/songparser-txt.cc b/game/songparser-txt.cc
index 721f167..cd8743b 100644
--- a/game/songparser-txt.cc
+++ b/game/songparser-txt.cc
@@ -54,6 +54,7 @@ bool SongParser::txtParseField(std::string const& line) {
else if (key == "CREATOR") m_song.creator = value.substr(value.find_first_not_of(" "));
else if (key == "COVER") m_song.cover = value;
else if (key == "MP3") m_song.music.push_back(m_song.path + value);
+ else if (key == "VOCALS") m_song.music.push_back(m_song.path + value);
else if (key == "VIDEO") m_song.video = value;
else if (key == "BACKGROUND") m_song.background = value;
else if (key == "START") assign(m_song.start, value);
|
|
From: Yoda-JM <yo...@us...> - 2009-08-16 14:05:25
|
Module: performous
Branch: master
Commit: 71635ad684e0636672f58a71618f9cd8b0bfad4c
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 16 16:04:00 2009 +0200
Fixed missing quotes
---
tools/ss_extract.cpp | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index a27132c..83e7699 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -335,7 +335,7 @@ struct Process {
if (std::system(cmd.c_str()) == 0) { // FIXME: std::system return value is not portable
fs::remove(path / "music.wav");
}
- cmd = "oggenc \"" + (path / "vocals.wav").string();
+ cmd = "oggenc \"" + (path / "vocals.wav").string() + "\"";
std::cerr << cmd << std::endl;
if (std::system(cmd.c_str()) == 0) { // FIXME: std::system return value is not portable
fs::remove(path / "vocals.wav");
|
|
From: Yoda-JM <yo...@us...> - 2009-08-16 14:01:09
|
Module: performous
Branch: master
Commit: d73909740544ff77323adf15184db58a486592f7
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 16 15:59:26 2009 +0200
Added multiple track extract
Added audio ogg encoding
Added support for ffmpeg 0.5 metadata options
---
tools/ss_extract.cpp | 105 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 77 insertions(+), 28 deletions(-)
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index 2f68132..a27132c 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -27,7 +27,8 @@ int sleepts = -1;
xmlpp::Node::PrefixNsMap nsmap;
std::string ns;
const bool video = true;
-const bool mkvcompress = false;
+const bool mkvcompress = true;
+const bool oggcompress = true;
// LibXML2 logging facility
extern "C" void xmlLogger(void* logger, char const* msg, ...) { if (logger) *(std::ostream*)logger << msg; }
@@ -185,9 +186,13 @@ void music(Song& song, PakFile const& dataFile, PakFile const& headerFile, fs::p
if (l2 != 0 || r2 != 0) karaoke = true;
}
}
- std::string ext = ".wav";
- writeMusic(song.music = outPath / ("music" + ext), pcm[0], sr);
- if (karaoke) writeMusic(song.vocals = outPath / ("vocals" + ext), pcm[1], sr);
+ std::string ext;
+ writeMusic(song.music = outPath / ("music.wav"), pcm[0], sr);
+ if (karaoke) writeMusic(song.vocals = outPath / ("vocals.wav"), pcm[1], sr);
+ if( oggcompress ) {
+ song.music = outPath / ("music.ogg");
+ if (karaoke) song.vocals = outPath / ("vocals.ogg");
+ }
}
struct Match {
@@ -210,6 +215,42 @@ std::string xmlFix(std::vector<char> const& data) {
std::string filename(boost::filesystem::path const& p) { return *--p.end(); }
+void saveTxtFile(xmlpp::NodeSet &sentence, const fs::path &path, const Song &song, const std::string singer = "") {
+ fs::path file_path;
+
+ if( singer.empty() ) {
+ file_path = path / "notes.txt";
+ } else {
+ file_path = path;
+ file_path /= safename(std::string("notes") + " (" + singer + ")" + ".txt");
+ }
+ txtfile.open(file_path.string().c_str());
+ if( singer.empty() )
+ txtfile << "#TITLE:" << song.title << std::endl;
+ else
+ txtfile << "#TITLE:" << song.title << " (" << singer << ")" << std::endl;
+ txtfile << "#ARTIST:" << song.artist << std::endl;
+ if (!song.genre.empty()) txtfile << "#GENRE:" << song.genre << std::endl;
+ if (!song.year.empty()) txtfile << "#YEAR:" << song.year << std::endl;
+ if (!song.edition.empty()) txtfile << "#EDITION:" << song.edition << std::endl;
+ //txtfile << "#LANGUAGE:English" << std::endl; // Detect instead of hardcoding?
+ if (!song.music.empty()) txtfile << "#MP3:" << filename(song.music) << std::endl;
+ if (!song.vocals.empty()) txtfile << "#VOCALS:" << filename(song.vocals) << std::endl;
+ if (video && mkvcompress) {
+ txtfile << "#VIDEO:video.m4v" << std::endl;
+ } else {
+ txtfile << "#VIDEO:video.mpg" << std::endl;
+ }
+ txtfile << "#COVER:cover.jpg" << std::endl;
+ //txtfile << "#BACKGROUND:background.jpg" << std::endl;
+ txtfile << "#BPM:" << song.tempo << std::endl;
+ ts = 0;
+ sleepts = -1;
+ std::for_each(sentence.begin(), sentence.end(), parseSentence);
+ txtfile << 'E' << std::endl;
+ txtfile.close();
+}
+
struct Process {
Pak const& pak;
Process(Pak const& p): pak(p) {}
@@ -256,31 +297,26 @@ struct Process {
Pak dataPak(song.dataPakName);
std::cerr << ">>> Extracting and decoding music" << std::endl;
music(song, dataPak[id + "/music.mib"], pak["export/" + id + "/music.mih"], path);
- txtfile.open((path / "notes.txt").string().c_str());
- txtfile << "#TITLE:" << song.title << std::endl;
- txtfile << "#ARTIST:" << song.artist << std::endl;
- if (!song.genre.empty()) txtfile << "#GENRE:" << song.genre << std::endl;
- if (!song.year.empty()) txtfile << "#YEAR:" << song.year << std::endl;
- if (!song.edition.empty()) txtfile << "#EDITION:" << song.edition << std::endl;
- //txtfile << "#LANGUAGE:English" << std::endl; // Detect instead of hardcoding?
- if (!song.music.empty()) txtfile << "#MP3:" << filename(song.music) << std::endl;
- if (!song.vocals.empty()) txtfile << "#VOCALS:" << filename(song.vocals) << std::endl;
- if (video && mkvcompress) {
- txtfile << "#VIDEO:video.m4v" << std::endl;
+ std::cerr << ">>> Extracting lyrics" << std::endl;
+ xmlpp::NodeSet sentences = dom.get_document()->get_root_node()->find("/" + ns + "MELODY/" + ns + "SENTENCE", nsmap);
+ if(!sentences.empty()) {
+ // Sentences not inside tracks (normal songs)
+ std::cerr << " >>> Solo track" << std::endl;
+ saveTxtFile(sentences, path, song);
} else {
- txtfile << "#VIDEO:video.mpg" << std::endl;
+ xmlpp::NodeSet tracks = dom.get_document()->get_root_node()->find("/" + ns + "MELODY/" + ns + "TRACK", nsmap);
+ if( !tracks.empty()) {
+ for( xmlpp::NodeSet::iterator it = tracks.begin() ; it != tracks.end() ; ++it ) {
+ xmlpp::Element& elem = dynamic_cast<xmlpp::Element&>(**it);
+ std::string singer = elem.get_attribute("Artist")->get_value();
+ std::cerr << " >>> Track from " << singer << std::endl;
+ sentences = dom.get_document()->get_root_node()->find((*it)->get_path() + "/" + ns + "SENTENCE", nsmap);
+ saveTxtFile(sentences, path, song, singer);
+ }
+ } else {
+ throw std::runtime_error("Unable to find any sentences in melody XML");
+ }
}
- txtfile << "#COVER:cover.jpg" << std::endl;
- //txtfile << "#BACKGROUND:background.jpg" << std::endl;
- txtfile << "#BPM:" << song.tempo << std::endl;
- ts = 0;
- sleepts = -1;
- xmlpp::NodeSet n = dom.get_document()->get_root_node()->find("/" + ns + "MELODY/" + ns + "SENTENCE", nsmap); // Sentences not inside tracks (normal songs)
- if (n.empty()) n = dom.get_document()->get_root_node()->find("/" + ns + "MELODY/" + ns + "TRACK[1]/" + ns + "SENTENCE", nsmap); // Try to get the first track (duet songs?)
- if (n.empty()) throw std::runtime_error("Unable to find any sentences in melody XML");
- std::for_each(n.begin(), n.end(), parseSentence);
- txtfile << 'E' << std::endl;
- txtfile.close();
std::cerr << ">>> Extracting cover image" << std::endl;
// FIXME: use internally instead of separate program
std::system(("ss_cover_conv \"" + dvdPath + "/pack_ee.pak\" " + id + " \"" + path.string() + "/cover.jpg\"").c_str());
@@ -292,9 +328,22 @@ struct Process {
std::cerr << ">>> Converting video" << std::endl;
IPUConv(ipudata, (path / "video.mpg").string());
// FIXME: use some library (preferrably ffmpeg):
+ if (oggcompress) {
+ std::cerr << ">>> Compressing audio into music.ogg/vocals.ogg" << std::endl;
+ std::string cmd = "oggenc \"" + (path / "music.wav").string() + "\"";
+ std::cerr << cmd << std::endl;
+ if (std::system(cmd.c_str()) == 0) { // FIXME: std::system return value is not portable
+ fs::remove(path / "music.wav");
+ }
+ cmd = "oggenc \"" + (path / "vocals.wav").string();
+ std::cerr << cmd << std::endl;
+ if (std::system(cmd.c_str()) == 0) { // FIXME: std::system return value is not portable
+ fs::remove(path / "vocals.wav");
+ }
+ }
if (mkvcompress) {
std::cerr << ">>> Compressing video and audio into music.mkv" << std::endl;
- std::string cmd = "ffmpeg -i \"" + (path / "video.mpg").string() + "\" -vcodec libx264 -vpre hq -crf 25 -threads 0 -album \"" + song.edition + "\" -author \"" + song.artist + "\" -comment \"" + song.genre + "\" -title \"" + song.title + "\" \"" + (path / "video.m4v\"").string();
+ std::string cmd = "ffmpeg -i \"" + (path / "video.mpg").string() + "\" -vcodec libx264 -vpre hq -crf 25 -threads 0 -metadata album=\"" + song.edition + "\" -metadata author=\"" + song.artist + "\" -metadata comment=\"" + song.genre + "\" -metadata title=\"" + song.title + "\" \"" + (path / "video.m4v\"").string();
std::cerr << cmd << std::endl;
if (std::system(cmd.c_str()) == 0) { // FIXME: std::system return value is not portable
fs::remove(path / "video.mpg");
|
|
From: Yoda-JM <yo...@us...> - 2009-08-13 21:31:35
|
Module: performous
Branch: master
Commit: 3ef0d3add973fec5a743d3abfa6788dc303c69ef
Author: Vincent Le Ligeour <yo...@us...>
Date: Thu Aug 13 23:29:39 2009 +0200
Fixed joystick/keyboard config
---
game/joystick.cc | 16 ++++++----------
game/joystick.hh | 2 ++
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/game/joystick.cc b/game/joystick.cc
index f9cdcca..7a89245 100644
--- a/game/joystick.cc
+++ b/game/joystick.cc
@@ -163,14 +163,10 @@ void input::SDL::init() {
// Here we should send an event to have correct state buttons
init_devices();
// Adding keyboard instrument
- if( config["game/keyboard_guitar"].b() ) {
- std::cout << "Id: " << UINT_MAX << std::endl;
- std::cout << " Name: Keyboard (emulated guitar)" << std::endl;
- input::SDL::sdl_devices[UINT_MAX] = NULL;
- input::Private::devices[UINT_MAX] = input::Private::InputDevPrivate(input::Private::GUITAR_GH);
- } else {
- std::cout << "Keyboard as guitar disable" << std::endl;
- }
+ std::cout << "Id: " << input::Private::KEYBOARD_ID << std::endl;
+ std::cout << " Name: Keyboard (emulated guitar): " << (config["game/keyboard_guitar"].b() ? "disabled":"enabled") << std::endl;
+ input::SDL::sdl_devices[input::Private::KEYBOARD_ID] = NULL;
+ input::Private::devices[input::Private::KEYBOARD_ID] = input::Private::InputDevPrivate(input::Private::GUITAR_GH);
}
bool input::SDL::pushEvent(SDL_Event _e) {
@@ -184,7 +180,7 @@ bool input::SDL::pushEvent(SDL_Event _e) {
case SDL_KEYDOWN: {
if( !config["game/keyboard_guitar"].b() ) return false;
int button = 0;
- joy_id = UINT_MAX;
+ joy_id = input::Private::KEYBOARD_ID;
if(!devices[joy_id].assigned()) return false;
switch(_e.key.keysym.sym) {
case SDLK_RETURN:
@@ -233,7 +229,7 @@ bool input::SDL::pushEvent(SDL_Event _e) {
case SDL_KEYUP: {
if( !config["game/keyboard_guitar"].b() ) return false;
int button = 0;
- joy_id = UINT_MAX;
+ joy_id = input::Private::KEYBOARD_ID;
if(!devices[joy_id].assigned()) return false;
switch(_e.key.keysym.sym) {
case SDLK_RETURN: pickPressed[0] = false; return true;
diff --git a/game/joystick.hh b/game/joystick.hh
index e7260f7..3d51591 100644
--- a/game/joystick.hh
+++ b/game/joystick.hh
@@ -19,6 +19,7 @@ namespace input {
namespace Private {
enum Type {GUITAR_RB, DRUMS_RB, GUITAR_GH, DRUMS_GH};
+ static unsigned int KEYBOARD_ID = UINT_MAX;
class InputDevPrivate {
public:
InputDevPrivate() : m_assigned(false), m_type(input::Private::DRUMS_GH) {
@@ -94,6 +95,7 @@ namespace input {
std::cout << "Request acquiring GUITAR" << std::endl;
if( devices.size() == 0 ) throw std::runtime_error("No InputDev available");
for(InputDevs::iterator it = devices.begin() ; it != devices.end() ; ++it) {
+ if( it->first == input::Private::KEYBOARD_ID && !config["game/keyboard_guitar"].b()) continue;
if( !it->second.assigned() && it->second.type_match(_type) ) {
std::cout << "Found @" << it->first << std::endl;
m_device_id = it->first;
|
|
From: Yoda-JM <yo...@us...> - 2009-08-13 21:31:30
|
Module: performous
Branch: master
Commit: 7cca711838558867c5b1753813c7aca9adc99210
Author: Vincent Le Ligeour <yo...@us...>
Date: Thu Aug 13 23:30:26 2009 +0200
Added Guilhem patch to support sorting by language
---
game/song.hh | 1 +
game/songparser-txt.cc | 1 +
game/songs.cc | 4 +++-
3 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/game/song.hh b/game/song.hh
index 39e58d1..677cd62 100644
--- a/game/song.hh
+++ b/game/song.hh
@@ -51,6 +51,7 @@ class Song: boost::noncopyable {
std::string artist; ///< artist
std::string text; ///< songtext
std::string creator; ///< creator
+ std::string language; ///< language
std::vector<std::string> music; ///< music files (background, guitar, rhythm/bass, drums, vocals)
std::string cover; ///< cd cover
std::string background; ///< background image
diff --git a/game/songparser-txt.cc b/game/songparser-txt.cc
index 3c83b58..721f167 100644
--- a/game/songparser-txt.cc
+++ b/game/songparser-txt.cc
@@ -61,6 +61,7 @@ bool SongParser::txtParseField(std::string const& line) {
else if (key == "RELATIVE") assign(m_relative, value);
else if (key == "GAP") { assign(m_gap, value); m_gap *= 1e-3; }
else if (key == "BPM") assign(m_bpm, value);
+ else if (key == "LANGUAGE") m_song.language= value.substr(value.find_first_not_of(" "));
return true;
}
diff --git a/game/songs.cc b/game/songs.cc
index 7f2504f..7b4126c 100644
--- a/game/songs.cc
+++ b/game/songs.cc
@@ -201,7 +201,8 @@ namespace {
"by artist",
"by edition",
"by genre",
- "by path"
+ "by path",
+ "by language"
};
static const int orders = sizeof(order) / sizeof(*order);
@@ -237,6 +238,7 @@ void Songs::sort_internal() {
case 3: std::sort(m_filtered.begin(), m_filtered.end(), comparator(&Song::edition)); break;
case 4: std::sort(m_filtered.begin(), m_filtered.end(), comparator(&Song::genre)); break;
case 5: std::sort(m_filtered.begin(), m_filtered.end(), comparator(&Song::path)); break;
+ case 6: std::sort(m_filtered.begin(), m_filtered.end(), comparator(&Song::language)); break;
default: throw std::logic_error("Internal error: unknown sort order in Songs::sortChange");
}
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-13 20:44:29
|
Module: performous
Branch: master
Commit: 12ac22f3d0955328116bcb5d35e14aed28f07637
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 8 19:38:49 2009 +0300
Party changes.
---
game/ffmpeg.cc | 2 +-
game/guitargraph.cc | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/game/ffmpeg.cc b/game/ffmpeg.cc
index 98a7bc6..1c167f4 100644
--- a/game/ffmpeg.cc
+++ b/game/ffmpeg.cc
@@ -12,7 +12,7 @@ extern "C" {
#include SWSCALE_INCLUDE
}
-#define USE_FFMPEG_CRASH_RECOVERY
+// #define USE_FFMPEG_CRASH_RECOVERY
#define AUDIO_CHANNELS 2
/*static*/ boost::mutex FFmpeg::s_avcodec_mutex;
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 215975d..ee525f7 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -278,11 +278,11 @@ bool GuitarGraph::difficulty(Difficulty level) {
glutil::Color const& GuitarGraph::color(int fret) const {
static glutil::Color fretColors[5] = {
- glutil::Color(0.0f, 1.0f, 0.0f),
- glutil::Color(1.0f, 0.0f, 0.0f),
- glutil::Color(1.0f, 1.0f, 0.0f),
+ glutil::Color(0.0f, 0.9f, 0.0f),
+ glutil::Color(0.9f, 0.0f, 0.0f),
+ glutil::Color(0.8f, 0.8f, 0.0f),
glutil::Color(0.0f, 0.0f, 1.0f),
- glutil::Color(1.0f, 0.5f, 0.0f)
+ glutil::Color(0.8f, 0.4f, 0.0f)
};
if (fret < 0 || fret > 4) throw std::logic_error("Invalid fret number in GuitarGraph::getColor");
if (m_drums) {
|
|
From: Yoda-JM <yo...@us...> - 2009-08-11 12:56:47
|
Module: performous
Branch: master
Commit: 3d2b463b55a1c53d7ba27d00a89179c2ad643476
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Aug 11 14:56:19 2009 +0200
Fixed linking problem on some archs
---
game/CMakeLists.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt
index ab46873..7f078f6 100644
--- a/game/CMakeLists.txt
+++ b/game/CMakeLists.txt
@@ -14,7 +14,7 @@ include_directories(${Boost_INCLUDE_DIRS})
set(LIBS ${LIBS} ${Boost_LIBRARIES})
# Find all the libs that don't require extra parameters
-foreach(lib SDL PangoCairo LibRSVG LibXML++ Magick++ GLEW AVFormat SWScale)
+foreach(lib SDL PangoCairo LibRSVG LibXML++ Magick++ GLEW AVFormat SWScale OpenGL)
find_package(${lib} REQUIRED)
include_directories(${${lib}_INCLUDE_DIRS})
set(LIBS ${LIBS} ${${lib}_LIBRARIES})
|
|
From: Yoda-JM <yo...@us...> - 2009-08-08 10:34:17
|
Module: performous
Branch: master
Commit: 5e5f94b8901c1cfb3d090e1302bcbdcd6708515f
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 8 12:33:18 2009 +0200
Added quick fix to avoid some sing/band bugs
---
game/screen_sing.cc | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index 63ac03a..1a85d41 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -33,13 +33,15 @@ void ScreenSing::enter() {
m_engine.reset(new Engine(m_audio, *m_song, analyzers.begin(), analyzers.end(), m_players));
m_layout_singer.reset(new LayoutSinger(*m_song, m_players, theme));
// I know some purists would hang me for this loop
- bool drums = false;
- for (int num = 0; true; ++num) {
- try {
- Instruments::iterator it = m_instruments.end();
- if (drums && m_instruments.size() > 1) it = m_instruments.begin() + 1; // Drums go after the first guitar
- m_instruments.insert(it, new GuitarGraph(m_audio, *m_song, drums, num));
- } catch (std::runtime_error&) { if (drums) break; drums = true; }
+ if( !m_song->tracks.empty() ) {
+ bool drums = false;
+ for (int num = 0; true; ++num) {
+ try {
+ Instruments::iterator it = m_instruments.end();
+ if (drums && m_instruments.size() > 1) it = m_instruments.begin() + 1; // Drums go after the first guitar
+ m_instruments.insert(it, new GuitarGraph(m_audio, *m_song, drums, num));
+ } catch (std::runtime_error&) { if (drums) break; drums = true; }
+ }
}
m_audio.playMusic(m_song->music, false, 0.0, m_instruments.empty() ? -1.0 : -8.0); // Startup delay for instruments is longer than for singing only
}
@@ -214,11 +216,10 @@ void ScreenSing::draw() {
theme->bg_top.draw();
}
- instrumentLayout(time);
-
if( m_song->tracks.empty() ) {
m_layout_singer->draw(time, LayoutSinger::BOTTOM);
} else {
+ instrumentLayout(time);
m_layout_singer->draw(time, LayoutSinger::MIDDLE);
}
|
|
From: Yoda-JM <yo...@us...> - 2009-08-07 08:06:47
|
Module: performous
Branch: master
Commit: 5ee73bb0602aae4ff4dbb3723dd322333f101262
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Aug 7 10:05:42 2009 +0200
Changed joystick control buttons (use START/SELECT instead of CROSS/CIRCLE)
---
game/screen_configuration.cc | 2 +-
game/screen_intro.cc | 4 ++--
game/screen_practice.cc | 2 +-
game/screen_sing.cc | 3 +++
game/screen_songs.cc | 4 ++--
5 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/game/screen_configuration.cc b/game/screen_configuration.cc
index 83eb90b..66c551d 100644
--- a/game/screen_configuration.cc
+++ b/game/screen_configuration.cc
@@ -34,7 +34,7 @@ void ScreenConfiguration::manageEvent(SDL_Event event) {
else if (key == SDLK_s && modifier & KMOD_CTRL) writeConfig();
} else if (event.type == SDL_JOYBUTTONDOWN) {
int button = event.jbutton.button;
- if (button == 2) sm->activateScreen("Intro");
+ if (button == 8) sm->activateScreen("Intro");
} else if (event.type == SDL_JOYAXISMOTION) {
int axis = event.jaxis.axis;
int value = event.jaxis.value;
diff --git a/game/screen_intro.cc b/game/screen_intro.cc
index a1a63f5..051a263 100644
--- a/game/screen_intro.cc
+++ b/game/screen_intro.cc
@@ -29,8 +29,8 @@ void ScreenIntro::manageEvent(SDL_Event event) {
else if (key == SDLK_SPACE || key == SDLK_PAUSE) m_audio.togglePause();
} else if (event.type == SDL_JOYBUTTONDOWN) {
int button = event.jbutton.button;
- if (button == 1) sm->activateScreen("Songs");
- else if (button == 2) sm->finished();
+ if (button == 9) sm->activateScreen("Songs");
+ else if (button == 8) sm->finished();
}
}
diff --git a/game/screen_practice.cc b/game/screen_practice.cc
index d738b0c..788f966 100644
--- a/game/screen_practice.cc
+++ b/game/screen_practice.cc
@@ -50,7 +50,7 @@ void ScreenPractice::manageEvent(SDL_Event event) {
}
} else if (event.type == SDL_JOYBUTTONDOWN) {
int button = event.jbutton.button;
- if (button == 2) sm->activateScreen("Intro");
+ if (button == 8) sm->activateScreen("Intro");
}
}
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index 43a2275..63ac03a 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -167,6 +167,9 @@ void ScreenSing::manageEvent(SDL_Event event) {
if (seekback) {
m_layout_singer->reset();
}
+ } else if (event.type == SDL_JOYBUTTONDOWN) {
+ int button = event.jbutton.button;
+ if (button == 8 || button == 9) m_audio.togglePause();
}
}
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index b0c2203..df89a53 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -98,14 +98,14 @@ void ScreenSongs::manageEvent(SDL_Event event) {
else manageSharedKey(key, mod);
} else if (event.type == SDL_JOYBUTTONDOWN) {
int button = event.jbutton.button;
- if (button == 1) {
+ if (button == 9) {
ScreenManager* sm = ScreenManager::getSingletonPtr();
Screen* s = sm->getScreen("Sing");
ScreenSing* ss = dynamic_cast<ScreenSing*> (s);
assert(ss);
ss->setSong(m_songs.currentPtr());
sm->activateScreen("Sing");
- } else if (button == 2) {
+ } else if (button == 8) {
if (m_jukebox) {
m_jukebox = false;
} else {
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-06 22:27:01
|
commit ad5f3125d31971c1592e9c8bb0cd7176c7c103cc
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 22:35:17 2009 +0300
Fix drum rendering issues.
commit 29db751613ac477ca90012a604ef01d0972b966f
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 12:58:02 2009 +0300
Fix endhold in another place..
commit 7ace85fd02f23d6b0cc06866a1a8b4887f9744a7
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 12:32:42 2009 +0300
Add instrument help.
commit 22f08c3b63fb879e68f75cf2da0de98fc56185c5
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 11:38:08 2009 +0300
Fixed borders manually (maybe was messed by git merge).
commit 69ef775c4ad1e07d61fff5e8307d31f4df7e4d2b
Merge: 7ca39093ca6cd1c2961c2ff08af683448d81f52c 2fe80f406d8a0066f80ce90eb143223cdaffcd17
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 11:30:31 2009 +0300
Merge branch 'master' of ssh://zi.fi/performous
commit 7ca39093ca6cd1c2961c2ff08af683448d81f52c
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 11:08:19 2009 +0300
Add find module for libprojectM.
commit 93536871a18c2d80ffb03460f619bae2da2e386c
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 03:55:36 2009 +0300
More score for holds.
commit c13984866aaf3f09e62bb5f86e563dd53a6c3486
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 02:52:27 2009 +0300
Fixed note rendering. Reverted hilights back to old style because there isn't enough time to do additive hilights.
commit 8b05fb53c3f6aaa059620fe8f2fcf7819a9adf6d
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 02:51:38 2009 +0300
Changed button_l dimensions: end rounding is the last 1/4 only.
Removed logo because it is painted separately.
commit 2fe80f406d8a0066f80ce90eb143223cdaffcd17
Author: knittl <knittl@kbook.(none)>
Date: Thu Aug 6 00:02:27 2009 +0200
fit drawings into page
commit 781da3e43763fdbbf7e13c397878dc82630248af
Author: knittl <knittl@kbook.(none)>
Date: Wed Aug 5 23:50:37 2009 +0200
flares for bassneck
tronic liked it, so I copied them here
commit c450cfcb72d7e2ef5012b89207e948f7b2bb6114
Author: knittl <knittl@kbook.(none)>
Date: Wed Aug 5 23:06:13 2009 +0200
little redo on guitar and bassneck
red gradient background for guitar, moved the "flares" behind it
commit f1a1db3ab7bd715de1b663d70695a6a5e7cc13ae
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 00:22:44 2009 +0300
Fix endHold on pick.
commit c157142cb95b5b1972bc3b2e02353ef826e492a0
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Aug 6 00:03:50 2009 +0300
Round the score.
commit bc99768b8848b338cb6af30739fe3d516222fa5a
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 23:03:30 2009 +0200
Fixed long button
commit e21847a23f9bc4b0f6b2e08a06fec46b20e1f638
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 23:27:05 2009 +0300
Support holds.
commit 03a7d6934497295b492689dda382d8e5f6e05929
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 23:26:39 2009 +0300
Joystick menu control for others than GH guitar too :P
commit 91cab025d54fc36feb4d5aa7cdcf4b12dcb65b33
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 22:00:47 2009 +0200
Added new long button for instruments
commit 17c05f697854b15cba426e58fc080be1ef945bf9
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 21:08:38 2009 +0300
-6 dB level adjustment for guitar fail sounds and now uses the sixth sound too.
commit 9dd2e9d6e27534a9014c5b9b46ac54e275847f19
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 19:31:30 2009 +0300
Disable pulse driver by default as it appears to be buggy.
commit ff7d38a740c127af6e32b856fae521c8bd26dd71
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 19:30:17 2009 +0300
Bump version number to 0.4-pre3.
commit cb5f74f9745c1badaf5ec8e1aa79d526f53156d0
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 19:24:07 2009 +0300
Simple additive blending for note hilight.
commit 97a48f9d056c3bd0d36f6cd05f07371d153dfbb4
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 17:41:23 2009 +0200
Inserted all joystick SDL specific code inside a namespace
commit ce11251b839fea3e90147c8bf2e52d44bc707b89
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 18:34:41 2009 +0300
A hack to avoid reloading samples and more importantly avoid unloading them (because that is slow).
commit 21a447bc5495164775811035d9c3b354900c08ab
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 14:52:51 2009 +0300
Enable anisotropic filtering.
commit cf8dad7f1637f220959715eaa1628318b0081ee7
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 13:23:50 2009 +0200
Fixed leaking
commit 364d818509822f6589725aeee048498036630953
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 5 14:12:34 2009 +0300
Add -pthread on GCC. Might be required for stdlib (malloc etc) thread-safety.
commit 2e7a218fd11b1d2dedbac206b6cca36c03cf27c6
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 13:11:02 2009 +0200
Changed drum fails sample order
commit b7196e4818df29e644e2018fb62e8644fff13609
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 12:41:12 2009 +0200
Added play sample in practice screen
commit adec0b0744ff0160e68959c452c63d11b7f48a0b
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 12:05:02 2009 +0200
Added forcing instrument type
commit 9affcbeec809065db7db32d656c8ee05c6a02a92
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 11:17:47 2009 +0200
Added performous command via instrument/joystick
Fixed some joystick events wrongly catch by the input device API
commit 8c5dd84b5b3ae762d05cae47545c1b4a8f5c9740
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 5 10:36:24 2009 +0200
Added configuration switch to enable/disable keyboard as guitar
commit ab1e234ab016b9802efd0cf251977ea558c24cac
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 4 22:36:35 2009 +0300
Add volume control for fail sounds.
Increase audio decoding buffer size.
commit a4dcf93365f29a0cb4962c58457d749a3c4913fa
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 4 21:19:21 2009 +0300
Sample support + play samples when fail.
commit 6bd7b9ba3468659ef7e7e3d928ca0571047fae95
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 4 18:29:25 2009 +0300
Fix audio level on guitar.
commit 7a0c1c915ada99401b4404074b63c8526f8053e9
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 4 03:47:10 2009 +0300
Drum&guitar logic redesign and fixes.
commit 3d0f0ebf0440f2594351363df9726d1a94e98c39
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 4 01:19:51 2009 +0300
Enable mipmapping for textures (needs testing especially on OpenGL 1.x).
commit 23930092f5738c1c9c2e9cec72ec4d8921ca4215
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 04:39:48 2009 +0300
Slightly better score calculators.
commit b3491d88aaad064a8a2fd0eae4ef15b772f94669
Author: knittl <knittl@kbook.(none)>
Date: Mon Aug 3 10:49:29 2009 +0200
strings look now like a spiral
gradient on bass
commit 5bc2476e08a8401ee50fe412821fbf3fc96254b7
Author: knittl <knittl@kbook.(none)>
Date: Mon Aug 3 10:38:49 2009 +0200
new guitar and bass neck graphics
guitar "flash" still needs some work
commit 6ae148f285e8b0c1bbdaaf61e4af7809d35519af
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 03:54:41 2009 +0300
Fix repeating enter/shift causing extra pick events.
commit d53bd632d8d4f01f2ca632f9ee0edc3c86121a6d
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 03:46:36 2009 +0300
Improved dead instrument handling.
Experimental event system for tracking strums etc.
commit 6dbbb2f9f27d4cabccbcefdea5e3927b363e3eff
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 02:59:27 2009 +0300
Prevent RB guitar orientation sensor from being detected as green fret.
commit 92b69931658a60989a9b47e012d1eddb47d2f848
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 02:54:49 2009 +0300
Keyboard now accepts numbers 1-5 too.
Guitars no longer report whammy and other controls as pick.
Events trapped actually get trapped and don't reach the screens.
commit 2f91c1f6e9d44268d776ae0daf99f1a236af6bcf
Merge: 176f92b8a382069b0c926b3aa986ccee4db183f9 17026d20a40faf00f86b738d828cc58d5d6d350e
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 02:34:26 2009 +0300
Merge branch 'master' of ssh://zi.fi/performous
commit 176f92b8a382069b0c926b3aa986ccee4db183f9
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 02:22:25 2009 +0300
Ignore GUITAR COOP tracks.
commit 17026d20a40faf00f86b738d828cc58d5d6d350e
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Aug 3 00:05:40 2009 +0200
Fixed typo
Added shift picking
commit 95e75b2b96aeafd3af44e96d373c6040b9734c22
Merge: 547b2818a6c79dd914206462be6c1b1f4ca231f1 03cfbe49f9f5618f025cf292b846f2a02d7ce371
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 00:59:19 2009 +0300
Merge branch 'master' of ssh://zi.fi/performous
commit 03cfbe49f9f5618f025cf292b846f2a02d7ce371
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 2 23:58:22 2009 +0200
Added keyboard guitar
commit 547b2818a6c79dd914206462be6c1b1f4ca231f1
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Aug 3 00:58:18 2009 +0300
Tapping modifications and fixes for better FoF compatibility.
Tolerance increased.
commit b79176c8812ce93764b8178dc57e1057be33db2c
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 2 21:45:05 2009 +0300
Fade out streams when played incorrectly.
commit 879f2ac3970cf11ddab71061853f9413bd21f3cc
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 2 20:19:11 2009 +0300
Miss = -50 points now (was -100).
commit dcb84457404ca9648ec7a0c66ae235a752621f5e
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 2 15:14:34 2009 +0300
Automatically remove inactive instruments.
commit 5c54d33b441a898db2b912cd43cbf0c9a71cd769
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 2 14:23:46 2009 +0300
Update instruments.txt with Rock Band instruments.
commit 601fc3c47fa3c7ac689cc4b8878c9a9400ef142d
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 2 13:47:22 2009 +0300
Cursor fix.
commit e568f5201dbef9495ca169f1da9bc457ecb1b3ad
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 2 13:39:22 2009 +0300
Fix/improve cursor.
commit c34814f6702d4fa37a3c29ca06c8aebb881b64a2
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 2 11:58:58 2009 +0200
Removed debug messages
commit 123019acdee6580a8a2d4041712cd5c46f11b543
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 2 12:19:41 2009 +0300
Remove Silky Strings.
commit 381f0492d2f6b80ad94c8493043cc092391ced30
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 2 11:15:35 2009 +0300
Rewritten drum code. Rendering fixes.
commit 6c0398aa68526e3cc4044c1ac5ce14a18cdadcd9
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 23:24:26 2009 +0300
Use tap.svg for buttonpressed hilight.
Subdivide long notes into shorter pieces to make the alpha correct (and to allow wave effects later).
commit dba1ca178d40f064370f78544dddf00765632104
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 22:55:44 2009 +0300
Update TODO.txt with some bugs that cannot be fixed easily :/
commit 4145b20588ce7c7fc5fe9af3d5a092eb6cc597b3
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 22:31:22 2009 +0300
Fix guitar gameplay.
commit a7efbab3998c33875dde313a198134fb4a511279
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 22:30:58 2009 +0300
Minor fix for FPS calculator.
commit 0e748f7eafb6bb2f5bc3d3d52f1015fe8dd95ad4
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 21:44:51 2009 +0300
More flexibility for instrument perspective.
commit 7f923d8438b1a0721c6629f44ffa144c8f060e73
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 21:14:57 2009 +0300
Better perspective (kinda hacky).
commit 01921d405676ce1fbf856ed8a5c199a23a3a0e0f
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 21:12:05 2009 +0300
Fix reversed guitar and bass graphics.
commit ffc699c1a721333d75a9c94c13284871b75a548e
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 21:07:25 2009 +0300
Kinda correct guitar rendering in multiplayer (separate perspective points). Looks weird, needs some hacking?
commit 89c2d8377b55f66526e8a0c2c271610d172fa233
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 20:28:51 2009 +0300
Fix tracks named "PART DRUM" to DRUMS as they should be.
commit 9998cb35dc94b45fa5de44c9ec29eff50e024660
Merge: 4e9c499c37363cfe6bdb726768e231d94ebd1bb3 f2768aeb127ae5cda3900e414ad923f73b56502b
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 20:05:59 2009 +0300
Merge branch 'master' of ssh://zi.fi/performous
commit 4e9c499c37363cfe6bdb726768e231d94ebd1bb3
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 20:04:41 2009 +0300
Proper instrument selection by controller type.
Automatic instrument selection (instead of everybody being guitar).
Drums go in the middle.
commit f2768aeb127ae5cda3900e414ad923f73b56502b
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 18:58:13 2009 +0200
Added some comments
commit 58e8b8bada7e4eb6421397aa9605a5bb5cae6c4c
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 19:35:48 2009 +0300
Fix off-by-one error in array boundary check.
commit 68fc8b52fd2edc2d9e00c7513f3077e354da9834
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 19:28:00 2009 +0300
Multiple instrument support.
commit 2f88cdb319a4fd1d933cc709b629c53d03897dd4
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 18:12:49 2009 +0200
Made it work except if you press a button before starting performous
commit 68ce777bcb78b9f11a672aab08fbbb92ac20d8e6
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 18:10:18 2009 +0200
Tried to fix initialization of button states
commit 05b678e6dada0a38af37e4f92386e5408adee747
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 17:57:23 2009 +0200
Added input with event
commit 76d8bb952ea3a0a24fc3d6ffc8847d3b74cf367c
Merge: 26ce43f4167a7cf7feeb55e18498257e73a081f4 f1a97897ece494bb563679560250ea10f8f81227
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 18:36:39 2009 +0300
Merge branch 'master' of ssh://zi.fi/performous
commit 26ce43f4167a7cf7feeb55e18498257e73a081f4
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 18:34:41 2009 +0300
GuitarGraph cleanup.
commit f1a97897ece494bb563679560250ea10f8f81227
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 17:27:17 2009 +0200
Added pick events
commit 8ad7c65bfa0b5485942cfe01e8a2e2f3f09ad414
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 17:12:02 2009 +0200
Removed old joystick code
Fixed segfault on practice exit
Added some comment to see InputDev aquired/relesed
commit b96ec107fd1a4d178374648ba86809610877ca86
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 16:31:16 2009 +0200
Fixed compilation errors
commit 0efcf1019bcf5894ec080561be767ca5d69ecf55
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 16:20:34 2009 +0200
Fixed compilation errors
Moved practice screen to new intrument management
commit 9653a81f69ed1c696502bfc486025d292efaf30f
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 17:27:43 2009 +0300
GuitarGraph hacked so that it compiles on the new input system.
commit edc7575e4e5a68e9c14aa10c1d7a8c5817f571ab
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 16:11:31 2009 +0200
Renames InputDevEvent into Event
commit bc368146609b9bf157af69186607ff9075bc678d
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 15:52:44 2009 +0200
Fixed compilation error inside joystick.hh
commit f083cb30d165d72d453ef66d87a9feb45174aae5
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 16:46:58 2009 +0300
Harmonix instrument IDs.
commit 4c21d93f9770926e134af7f90d105c829b015a32
Merge: a7a5cb4d1eee8eab2718697eab4133b37fc1ce33 bc182d9b09e50414410e820b7266e9af27adfe76
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 16:42:46 2009 +0300
Merge branch 'master' of ssh://zi.fi/performous
commit a7a5cb4d1eee8eab2718697eab4133b37fc1ce33
Merge: 9cac693cae7d7a12628ec96e6e793a2d1c4d0729 2fbfc307c4007f07cdef7160d3e685810fc4bd8d
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 16:42:31 2009 +0300
Merge branch 'master' of ssh://zi.fi/performous
Conflicts:
game/joystick.hh
commit bc182d9b09e50414410e820b7266e9af27adfe76
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 15:42:22 2009 +0200
Added GH3/GH4 instrument matching
commit 9cac693cae7d7a12628ec96e6e793a2d1c4d0729
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 16:40:18 2009 +0300
Started GuitarGraph conversion to new input framework.
Button mapping code added to joystick.cc.
commit 2fbfc307c4007f07cdef7160d3e685810fc4bd8d
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 15:38:39 2009 +0200
Changed API .... again
commit 09ca599cbbdc96fdcaed5269903b9172228f93cd
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 15:20:21 2009 +0200
Added InputDev constructor
commit 659a9e44d603c3ac6f33f3c8a7e6f7bb4cd5d58d
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 15:03:02 2009 +0200
Added some init stuffs when changing instrument type
commit f387273d15defbfdcb4b9bd2c3226648de5a1831
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 14:35:12 2009 +0200
Finished InputDevPrivate and add init event to have right button state at start
commit a6e4540d55d7509db31e5959e530f8f13bd15930
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 14:09:51 2009 +0200
Merged toward a good InputDev implementation
commit 68c975c9cb77eb8049caabe8e10089f50779dd56
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 13:32:51 2009 +0200
Changed clear event position
commit 95c1aaa3caab99be5098b7758dcf90698511cce3
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 13:25:30 2009 +0200
Fixed API
commit 376141d58e60d6913c44a84b13e7957766c8bf4e
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 13:01:46 2009 +0200
Added a new stable InputDev version
commit a194165a0895eac4a2b99f9486ea47331621e207
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 12:40:57 2009 +0200
Started new input device implementation (keeping joystick api compatibility)
Fixed manpage section
commit 4b80466f6680c00831b8a834cce7181add00bdb6
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 12:57:50 2009 +0300
Document InputDev button numbers.
commit ca3b30cbeed6be14dd2959af91112e361f7920c9
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 12:48:17 2009 +0300
Drafting InputDev API.
commit 768f19b467b2c036041d8f995f123717539339ae
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 11:34:51 2009 +0200
Added some Input Event stuffs
commit 5242395bd81f9ebd0228b03892f50caec9037de4
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 11:16:53 2009 +0200
New API for event
commit b13e8fd4d7f1779f6bd823a838e430c657430ddd
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 1 10:56:49 2009 +0200
Added new input device API
commit 75f8cf567d81ec30ee8896cb38993b851c85c171
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 1 10:47:50 2009 +0300
Most stuff rewritten with chords. Drums still use old logic.
Visuals for tappable notes.
Almost perfect hammering logic.
commit b01db5d540f8ebe69e6680cf53143efdfedb8401
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jul 31 23:23:40 2009 +0300
Making chords.
commit cbeff9c5671d3570ff3cd562c89fda03a03efc16
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Jul 31 19:58:13 2009 +0200
Fixed GHWT drumkit button mapping
commit baf0f4fd8d057af44707e6d451347e7eda4b357b
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jul 31 20:09:20 2009 +0300
New instrument button mapping.
commit a7c6f3f5e2f1e3643cd6d57e814637fc77dbf2ed
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jul 31 19:12:35 2009 +0300
New drumboard.
commit 1c8e8e2cb70b3027e9799a8ad50f929ba7378018
Merge: 77a31d239c1388f2bc0ddce6cec900025d49233a 9e4d772c0d91ad2a6f5b7f1b26241bed6d943dcc
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jul 31 18:36:48 2009 +0300
Merge branch 'master' of ssh://tronic@performous.git.sourceforge.net/gitroot/performous
commit 77a31d239c1388f2bc0ddce6cec900025d49233a
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jul 31 13:21:04 2009 +0300
Initial work on the chord-based guitar engine.
commit 9f92443635116d999b6361a433be7044bb16fdd7
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jul 31 09:28:17 2009 +0300
Basic hammering support, not very good, but code needs cleanup now.
commit f2898c5e6ed13a80377043d161c2a7ba7c4f2be8
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jul 31 07:49:25 2009 +0300
Increase GF compatibility.
commit fc07860cd127193852054449c26a0cf0a52a3743
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Jul 30 23:49:05 2009 +0300
Proper gameplay for drums, improved gameplay for guitar.
Mistakes reduce the score now.
commit b3e89650089d9f6b3a8ea0a4268fdc898c90ca09
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Jul 30 22:33:41 2009 +0300
Drum graphics and partial handling.
|