euidong / SheetMusic

SheetMusic to RealMusic
4 stars 3 forks source link

Bug: 오픈소스 note.py 샾, 플랫 정상적으로 계산될까? #10

Open wjlee0908 opened 5 years ago

wjlee0908 commented 5 years ago

코드는 있으나 샘플 악보에 샾, 플랫이 없음

wjlee0908 commented 5 years ago

note_defs = {
     -4 : ("g5", 79),
     -3 : ("f5", 77),
     -2 : ("e5", 76),
     -1 : ("d5", 74),
      0 : ("c5", 72),
      1 : ("b4", 71),
      2 : ("a4", 69),
      3 : ("g4", 67),
      4 : ("f4", 65),
      5 : ("e4", 64),
      6 : ("d4", 62),
      7 : ("c4", 60),
      8 : ("b3", 59),
      9 : ("a3", 57),
     10 : ("g3", 55),
     11 : ("f3", 53),
     12 : ("e3", 52),
     13 : ("d3", 50),
     14 : ("c3", 48),
     15 : ("b2", 47),
     16 : ("a2", 45),
     17 : ("f2", 53),
}


        self.note = note_def[0]    # 음정 string
        self.pitch = note_def[1]   # 음정 midi에 들어가는 int
        if any(n for n in sharp_notes if n.note[0] == self.note[0]):
            self.note += "#"
            self.pitch += 1
        if any(n for n in flat_notes if n.note[0] == self.note[0]):
            self.note += "b"
            self.pitch -= 1

.note가 'b3'처럼 string인데 .note[0] 만 비교하면 8:'b3'랑 15:'b2'랑 같은 걸로 인식해서 샾이랑 음표 다른 자리에 있는데 같은 위치에 있는 걸로 인식해버리지 않을까

euidong commented 5 years ago

줄에서 # , b 다른 것도 있던 데 이거는 제한할까요? (fire.jpg)

wjlee0908 commented 5 years ago

다시 확인해 보니 샾이나 플랫을 찾으면 그거랑 일치하는 모든 음표의 pitch를 +1함. 조표(악보 첫 부분의 #,b) 만 있으면 잘 작동하나, 악보 바로 뒤에 붙어있는 b,#을 모든 음표에 적용해 버리는 문제가 있음