OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
pattern.cpp
Go to the documentation of this file.
1
#include "
pattern.h
"
2
3
#include <stdexcept>
4
5
using namespace
Dx8
;
6
7
Pattern::PartRef::PartRef
(
Riff
&input) {
8
if
(!input.
is
(
"LIST"
) || !input.
isListId
(
"pref"
))
9
throw
std::runtime_error(
"not a partref"
);
10
input.
read
([
this
](
Riff
& input){
11
if
(input.
is
(
"prfc"
))
12
input.
read
(&
io
,
sizeof
(
io
));
13
else
if
(input.
is
(
"LIST"
) && input.
isListId
(
"UNFO"
))
14
unfo
=
Unfo
(input);
15
});
16
}
17
18
Pattern::Pattern
(
Riff
& input) {
19
input.
read
([
this
](
Riff
& c){
20
implRead(c);
21
});
22
}
23
24
uint32_t
Pattern::timeLength
(
double
tempo)
const
{
25
const
uint32_t PulsesPerQuarterNote = uint32_t(600*(100.0/tempo));
26
uint32_t mul = (
header
.
timeSig
.
bBeatsPerMeasure
*PulsesPerQuarterNote*4)/
header
.
timeSig
.
bBeat
;
27
return
header
.
wNbrMeasures
* mul;
28
}
29
30
void
Pattern::implRead(
Riff
&input) {
31
if
(input.
is
(
"ptnh"
))
32
input.
read
(&
header
,
sizeof
(
header
));
33
else
if
(input.
is
(
"LIST"
)){
34
if
(input.
isListId
(
"pref"
))
35
partref
.emplace_back(input);
36
else
if
(input.
isListId
(
"UNFO"
))
37
info
=
Unfo
(input);
38
}
39
}
40
Dx8::Pattern::partref
std::vector< PartRef > partref
Definition
pattern.h:21
Dx8::Pattern::header
DMUS_IO_PATTERN header
Definition
pattern.h:19
Dx8::Pattern::timeLength
uint32_t timeLength(double tempo) const
Definition
pattern.cpp:24
Dx8::Pattern::info
Unfo info
Definition
pattern.h:20
Dx8::Pattern::Pattern
Pattern(Riff &riff)
Definition
pattern.cpp:18
Dx8::Riff
Definition
riff.h:12
Dx8::Riff::is
bool is(const char *idx) const
Definition
riff.h:19
Dx8::Riff::read
void read(std::u16string &str)
Definition
riff.cpp:29
Dx8::Riff::isListId
bool isListId(const char *id)
Definition
riff.cpp:24
Dx8::Unfo
Definition
info.h:18
Dx8
Definition
band.h:10
pattern.h
Dx8::DMUS_IO_PATTERN::timeSig
DMUS_IO_TIMESIG timeSig
Definition
structs.h:105
Dx8::DMUS_IO_PATTERN::wNbrMeasures
uint16_t wNbrMeasures
Definition
structs.h:109
Dx8::DMUS_IO_TIMESIG::bBeat
uint8_t bBeat
Definition
structs.h:84
Dx8::DMUS_IO_TIMESIG::bBeatsPerMeasure
uint8_t bBeatsPerMeasure
Definition
structs.h:83
Dx8::Pattern::PartRef::PartRef
PartRef(Riff &input)
Definition
pattern.cpp:7
Dx8::Pattern::PartRef::io
DMUS_IO_PARTREF io
Definition
pattern.h:15
Dx8::Pattern::PartRef::unfo
Unfo unfo
Definition
pattern.h:16
game
dmusic
pattern.cpp
Generated by
1.9.8