OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
music.cpp
Go to the documentation of this file.
1#include "music.h"
2
3using namespace Dx8;
4
5Music::Internal::Internal(const Music::Internal& other)
6 :pptn(other.pptn), groove(other.groove) {
7 volume = other.volume.load();
8 }
9
10void Music::addPattern(const PatternList& list) {
11 for(size_t i=0;i<list.size();++i)
12 addPattern(list,i);
13 }
14
15void Music::addPattern(const PatternList& list, size_t id) {
16 auto ptr = std::shared_ptr<PatternList::PatternInternal>(list.intern,&list.intern->pptn[id]);
17 if(impl.use_count()>1) {
18 impl = std::make_shared<Internal>(*impl);
19 }
20 impl->pptn.push_back(ptr);
21 impl->groove = list.intern->groove;
22
23 impl->timeTotal += ptr->timeTotal;
24 }
25
26void Music::setVolume(float v) {
27 impl->volume.store(v);
28 }
29
void addPattern(const PatternList &list)
Definition music.cpp:10
void setVolume(float v)
Definition music.cpp:26
size_t size() const
Definition band.h:10