Как передвигать экран в pygame?

Есть код, который считывает амплитуды звука с микрофона и рисует по ним график.

import pyaudio
import numpy as np
import pygame as pg

class Camera:
    def __init__(self) -> None:
        self.rect = pg.rect.Rect(0, 0, W, H)
    
    def update(self, value) -> None:
        self.rect[0] += value


CHUNK = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
W, H = 1700, 800
FPS = RATE / CHUNK
sc = pg.display.set_mode((W, H))
prev = 0
sec = CHUNK / RATE * 150
clock = pg.time.Clock()


audio = pyaudio.PyAudio()

stream = audio.open(format=FORMAT, channels=CHANNELS,
                    rate=RATE, input=True,
                    frames_per_buffer=CHUNK)

print("Start...")

camera = Camera()

while True:
    for i in pg.event.get():
        if  i.type == pg.QUIT:
            exit()
    data = stream.read(CHUNK)
    np_data = np.frombuffer(data, dtype=np.int16)
    amplitude = np.abs(np_data).mean()

    print(sec, amplitude)

    pg.draw.line(sc, 'blue', (sec, H - prev * 15), (sec + CHUNK / RATE * 150, H - amplitude * 15))
    # pg.draw.line(sc, (0, 255, 0), (sec, j), (sec + CHUNK / RATE, j))

    '''if sec % W >= 6 * W / 7:
        camera.update(CHUNK / RATE * 150)'''
    
    # sc.blit()
    prev = amplitude
    sec += CHUNK / RATE * 150
    # print(amplitude)


    clock.tick(FPS)
    pg.display.flip()


"""stream.stop_stream()
stream.close()
audio.terminate()"""

Нужно чтобы когда значение sec достигало, скажем, 5W/6 двигать экран со скоростью отрисовки графика. Помогите пожалуйста


Ответы (0 шт):