nouveaux sons
This commit is contained in:
parent
5c65b99604
commit
4bbdbfe6e4
62 changed files with 51 additions and 67 deletions
|
@ -25,67 +25,70 @@ AudioEmitter::AudioEmitter() {
|
|||
system.reset(rawSystem);
|
||||
ERRCHECK(system->init(512, FMOD_INIT_NORMAL, nullptr));
|
||||
|
||||
std::vector<FMOD::Sound *> rawChords(7);
|
||||
ERRCHECK(system->createSound("media/accords/do.wav", FMOD_LOOP_OFF, nullptr,
|
||||
std::vector<FMOD::Sound *> rawChords(14);
|
||||
printf("coucou\n");
|
||||
ERRCHECK(system->createSound("media/chords/variation1/C.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[0]));
|
||||
ERRCHECK(system->createSound("media/accords/re.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/chords/variation1/D.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[1]));
|
||||
ERRCHECK(system->createSound("media/accords/mi.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/chords/variation1/E.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[2]));
|
||||
ERRCHECK(system->createSound("media/accords/fa.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/chords/variation1/F.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[3]));
|
||||
ERRCHECK(system->createSound("media/accords/sol.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/chords/variation1/G.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[4]));
|
||||
ERRCHECK(system->createSound("media/accords/la.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/chords/variation1/A.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[5]));
|
||||
ERRCHECK(system->createSound("media/accords/si.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/chords/variation1/B.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[6]));
|
||||
for (int i = 0; i < 7; i += 1) {
|
||||
ERRCHECK(system->createSound("media/chords/variation2/C.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[7]));
|
||||
ERRCHECK(system->createSound("media/chords/variation2/D.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[8]));
|
||||
ERRCHECK(system->createSound("media/chords/variation2/E.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[9]));
|
||||
ERRCHECK(system->createSound("media/chords/variation2/F.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[10]));
|
||||
ERRCHECK(system->createSound("media/chords/variation2/G.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[11]));
|
||||
ERRCHECK(system->createSound("media/chords/variation2/A.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[12]));
|
||||
ERRCHECK(system->createSound("media/chords/variation2/B.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawChords[13]));
|
||||
for (int i = 0; i < 14; i += 1) {
|
||||
chords.push_back(std::unique_ptr<FMOD::Sound>(rawChords[i]));
|
||||
}
|
||||
|
||||
int nbr_drums = 3;
|
||||
std::vector<FMOD::Sound *> rawDrums(nbr_drums);
|
||||
ERRCHECK(system->createSound("media/percussions/drums1.wav", FMOD_LOOP_OFF,
|
||||
nullptr, &rawDrums[0]));
|
||||
ERRCHECK(system->createSound("media/percussions/drums2.wav", FMOD_LOOP_OFF,
|
||||
nullptr, &rawDrums[1]));
|
||||
ERRCHECK(system->createSound("media/percussions/drums3.wav", FMOD_LOOP_OFF,
|
||||
nullptr, &rawDrums[2]));
|
||||
for (int i = 0; i < nbr_drums; i += 1) {
|
||||
drums.push_back(std::unique_ptr<FMOD::Sound>(rawDrums[i]));
|
||||
}
|
||||
|
||||
std::vector<FMOD::Sound *> rawNotes(15);
|
||||
ERRCHECK(system->createSound("media/notes/A1.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/A1.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[0]));
|
||||
ERRCHECK(system->createSound("media/notes/B1.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/B1.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[1]));
|
||||
ERRCHECK(system->createSound("media/notes/C1.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/C1.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[2]));
|
||||
ERRCHECK(system->createSound("media/notes/D1.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/D1.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[3]));
|
||||
ERRCHECK(system->createSound("media/notes/E1.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/E1.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[4]));
|
||||
ERRCHECK(system->createSound("media/notes/F1.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/F1.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[5]));
|
||||
ERRCHECK(system->createSound("media/notes/G1.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/G1.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[6]));
|
||||
ERRCHECK(system->createSound("media/notes/A2.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/A2.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[7]));
|
||||
ERRCHECK(system->createSound("media/notes/B2.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/B2.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[8]));
|
||||
ERRCHECK(system->createSound("media/notes/C2.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/C2.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[9]));
|
||||
ERRCHECK(system->createSound("media/notes/D2.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/D2.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[10]));
|
||||
ERRCHECK(system->createSound("media/notes/E2.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/E2.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[11]));
|
||||
ERRCHECK(system->createSound("media/notes/F2.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/F2.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[12]));
|
||||
ERRCHECK(system->createSound("media/notes/G2.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/G2.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[13]));
|
||||
ERRCHECK(system->createSound("media/notes/A3.wav", FMOD_LOOP_OFF, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/A3.mp3", FMOD_LOOP_OFF, nullptr,
|
||||
&rawNotes[14]));
|
||||
for (int i = 0; i < 15; i += 1) {
|
||||
notes.push_back(std::unique_ptr<FMOD::Sound>(rawNotes[i]));
|
||||
|
@ -195,7 +198,7 @@ AudioEmitter::AudioEmitter() {
|
|||
}
|
||||
|
||||
FMOD::Sound *metronome_Sound;
|
||||
ERRCHECK(system->createSound("media/notes/A1.wav", FMOD_DEFAULT, nullptr,
|
||||
ERRCHECK(system->createSound("media/notes/A1.mp3", FMOD_DEFAULT, nullptr,
|
||||
&metronome_Sound));
|
||||
ERRCHECK(system->playSound(metronome_Sound, nullptr, true, &timer));
|
||||
ERRCHECK(timer->setVolume(0));
|
||||
|
@ -264,18 +267,6 @@ int AudioEmitter::nextNote(int currentNote) {
|
|||
return sampleIndex(markov_matrix_melody[currentNote]);
|
||||
}
|
||||
|
||||
int AudioEmitter::noteSecondaire(int note) {
|
||||
std::vector<int> notesPossibles = {note - 4, note - 3, note + 3, note + 4,
|
||||
note + 5};
|
||||
std::vector<double> proba = {0.05, 0.10, 0.60, 0.05, 0.2};
|
||||
for (int i = 0; i < proba.size(); i += 1) {
|
||||
if ((notesPossibles[i] < 0) || (notesPossibles[i] >= notes.size())) {
|
||||
proba[i] = 0;
|
||||
}
|
||||
}
|
||||
return randomWeightedChoice(notesPossibles, proba);
|
||||
}
|
||||
|
||||
/**
|
||||
* generate music
|
||||
*
|
||||
|
@ -299,7 +290,7 @@ std::vector<std::pair<float, int>> AudioEmitter::generateMusic() {
|
|||
for (int i = 1; i < 4; i += 1) {
|
||||
chordProgression[i] = nextChord(chordProgression[i - 1]);
|
||||
}
|
||||
int index_drums = rand() % 3;
|
||||
|
||||
for (int i = current_beat; i < current_beat + nbr_melo_max; i += 1) {
|
||||
// Chords
|
||||
FMOD::Channel *channelChords = nullptr;
|
||||
|
@ -313,14 +304,6 @@ std::vector<std::pair<float, int>> AudioEmitter::generateMusic() {
|
|||
ERRCHECK(channelChords->setPaused(false));
|
||||
|
||||
activeChannels.push_back(channelChords);
|
||||
// Drums
|
||||
FMOD::Channel *channelDrums = nullptr;
|
||||
ERRCHECK(system->playSound(drums[index_drums].get(), nullptr, true,
|
||||
&channelDrums));
|
||||
ERRCHECK(channelDrums->setDelay(delay, 0, true));
|
||||
ERRCHECK(channelDrums->setPaused(false));
|
||||
|
||||
activeChannels.push_back(channelDrums);
|
||||
// Mélodie
|
||||
std::vector<float> rythme_melodie = rythmes[rand() % rythmes.size()];
|
||||
for (float time : rythme_melodie) {
|
||||
|
@ -333,8 +316,8 @@ std::vector<std::pair<float, int>> AudioEmitter::generateMusic() {
|
|||
(unsigned long long)(note_start * sampleRate);
|
||||
ERRCHECK(channelNote->setDelay(delayNote, 0, true));
|
||||
ERRCHECK(channelNote->setPaused(false));
|
||||
index_note = nextNote(index_note);
|
||||
result.push_back(std::pair<float, int>(note_start, index_note));
|
||||
index_note = nextNote(index_note);
|
||||
activeChannels.push_back(channelNote);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue