рдкрд╛рдпрдерди, рдкрд┐рдЪ рдСрдлрд╕реЗрдЯ рдФрд░ рдкрд┐рдпрд╛рдиреЛрдкреНрдпреВрдЯрд░

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ:



рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрдкрдХреЛ рдкрдврд╝рд╛ рдЧрдпрд╛ рд▓реЗрдЦ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ 29 рдорд╛рд░реНрдЪ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рдерд╛ред рд▓реЗрдХрд┐рди рд░реЗрдбрд┐рдЯ рдкрд░ рдпрд╣ рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рд╣реА рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╡рд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдирд╣реАрдВ рдЦреЛрддреА рдереАред рдЗрд╕рдХреА рд░реБрдЪрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЗрдЦрдХ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рддреАрди рдмрдбрд╝реЗ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ: рд╕реБрдиреНрди, рдбрд░рд╛рд╡рдирд╛ рдФрд░ pygameред рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рджреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХреЛ "рд╕рд╛рдзрд╛рд░рдг" рдЬреАрд╡рди рдореЗрдВ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рди рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИред



рд▓реЗрдЦрдХ рдХрд╛ рдХреЛрдб рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрд╕реЗ PEP-8 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЗрд╕рдХреА рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдЬреНрдЮрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдПрдХ рддрд░реАрдХрд╛ рдпрд╛ рджреВрд╕рд░рд╛, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдХреЛрдб GitHub рдкрд░ рд╣реИ, рдЖрдкрдХреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдЧрд╛ред



рдзреНрд╡рдирд┐ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ, рдЯреЛрди рдХреЛ 50 рдмрд╛рд░ рдмрджрд▓реЗрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдзреНрд╡рдирд┐ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреАрдмреЛрд░реНрдб рдкрд░ рдПрдХ рдХреБрдВрдЬреА рджреЗрдВред рдпрд╣ Pianoputer рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛!







рдзреНрд╡рдирд┐ рдХреЛ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА (рдпрд╛ рд╕реВрдЪреА, рд╕реВрдЪреА ) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:







рдЗрд╕ рдзреНрд╡рдирд┐ рдХреЛ рджреЛ рдмрд╛рд░ рддреЗрдЬ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рджреВрд╕рд░реЗ рдорд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ:







рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рди рдХреЗрд╡рд▓ рдзреНрд╡рдирд┐ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдЖрдзрд╛ рдХрд░ рджрд┐рдпрд╛, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╕реНрд╡рд░ рдКрдВрдЪрд╛ рд╣реЛ рдЧрдпрд╛ред



рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдзреАрдореА рдзреНрд╡рдирд┐ рдорд┐рд▓реЗрдЧреА, рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдирд┐рдореНрди рд╕реНрд╡рд░:







рдпрд╣рд╛рдБ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рдпрдерди рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рд╕рдВрдЪрд░рд┐рдд рдЧреБрдгрд╛рдВрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдзреНрд╡рдирд┐ рдХреА рдЧрддрд┐ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ:



import numpy as np def speedx(sound_array, factor): """ Multiplies the sound's speed by some `factor` """ indices = np.round( np.arange(0, len(snd_array), factor) ) indices = indices[indices < len(snd_array)].astype(int) return sound_array[ indices.astype(int) ]
      
      







рдЯреЛрди рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ (рдзреНрд╡рдирд┐ рдХреЛ рдЦреАрдВрдЪрдирд╛), рдпрд╛ рдЕрд╡рдзрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп (рдЯреЛрди рд╢рд┐рдлреНрдЯ) рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред



рдзреНрд╡рдирд┐ рдореЗрдВ рдЦрд┐рдВрдЪрд╛рд╡





рдЖрдк рдХреНрд▓рд╛рд╕рд┐рдХ рдЪрд░рдг рд╡реЛрдХреЛрдбрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдзреНрд╡рдирд┐ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдзреНрд╡рдирд┐ рдХреЛ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЕрдзрд┐рдХ (рдзреНрд╡рдирд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдпрд╛ рдХрдо (рдЗрд╕реЗ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП), рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ рдореЗрдВ рд╣реИ:







рдпрд╣рд╛рдВ рдХрдард┐рдирд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдЯреБрдХрдбрд╝реЗ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣рд╛рдБ рдкрд╛рдЗрдерди рдХреЛрдб рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ :



 def stretch(sound_array, f, window_size, h): """ Stretches the sound by a factor `f` """ phase = np.zeros(window_size) hanning_window = np.hanning(window_size) result = np.zeros( len(sound_array) /f + window_size) for i in np.arange(0, len(sound_array)-(window_size+h), h*f): # two potentially overlapping subarrays a1 = sound_array[i: i + window_size] a2 = sound_array[i + h: i + window_size + h] # resynchronize the second array on the first s1 = np.fft.fft(hanning_window * a1) s2 = np.fft.fft(hanning_window * a2) phase = (phase + np.angle(s2/s1)) % 2*np.pi a2_rephased = np.fft.ifft(np.abs(s2)*np.exp(1j*phase)) # add to result i2 = int(i/f) result[i2 : i2 + window_size] += hanning_window*a2_rephased result = ((2**(16-4)) * result/result.max()) # normalize (16bit) return result.astype('int16')
      
      







рдЯреЛрди рдСрдлрд╕реЗрдЯ





рдзреНрд╡рдирд┐ рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдЯреЛрди рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдПрдХ рдЙрдЪреНрдЪ рд╕реНрд╡рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдзреНрд╡рдирд┐ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рд╕реНрд╡рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рддреЗрдЬреА рд▓рд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЕрдВрддрд┐рдо рдзреНрд╡рдирд┐ рдХреА рд▓рдВрдмрд╛рдИ рдореВрд▓ рдХреЗ рд╕рдорд╛рди рд╣реЛ, рд▓реЗрдХрд┐рди рдЧрддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдЙрдЪреНрдЪ рд╕реНрд╡рд░ред



рдзреНрд╡рдирд┐ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдиреЗ рд╕реЗ рдЯреЛрди рдПрдХ рдСрдХреНрдЯреЗрд╡, рдпрд╛ 12 рд╕реЗрдореАрдЯрд╛рдЙрди рдмрдврд╝реЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, n рдЖрдзреЗ рдЯрди рджреНрд╡рд╛рд░рд╛ рдЯреЛрди рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд┐рдЪ рдХреЛ 2 ^ (n / 12) рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:



 def pitchshift(snd_array, n, window_size=2**13, h=2**11): """ Changes the pitch of a sound by ``n`` semitones. """ factor = 2**(1.0 * n / 12.0) stretched = stretch(snd_array, 1.0/factor, window_size, h) return speedx(stretched[window_size:], factor)
      
      







рдЖрд╡реЗрджрди: Pianoputer





рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдирдП рдмреАрдХрди рдбрд┐рд╕рдкреНрд▓реЗрдЬрд╝рд░ рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдЯреЛрд░рд╛ рдХреЛ рдорд╛рд░реЗрдВ:







рдлрд┐рд░ рдмрд╣реБрдд рдХрдо рд╕реЗ рдмрд╣реБрдд рдКрдБрдЪреА 50 рд╡реНрдпреБрддреНрдкрдиреНрди рдзреНрд╡рдирд┐рдпрд╛рдБ рдмрдирд╛рдПрдБ:



 from scipy.io import wavfile fps, bowl_sound = wavfile.read("bowl.wav") tones = range(-25,25) transposed = [pitchshift(bowl_sound, n) for n in tones]
      
      







рд╣рдо рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рдХреАрдмреЛрд░реНрдб рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЛ рдПрдХ рдзреНрд╡рдирд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:







рдФрд░ рдпрд╣рд╛рдБ рдкрд╛рдпрдерди рдХреЛрдб рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдкрд┐рдпрд╛рдиреЛ ( рдкрд┐рдпрд╛рдиреЛрд╡рд╛рджрдХ ) рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ:



 import pygame pygame.mixer.init(fps, -16, 1, 512) # so flexible ;) screen = pygame.display.set_mode((640,480)) # for the focus # Get a list of the order of the keys of the keyboard in right order. # ``keys`` is like ['Q','W','E','R' ...] keys = open('typewriter.kb').read().split('\n') sounds = map(pygame.sndarray.make_sound, transposed) key_sound = dict( zip(keys, sounds) ) is_playing = {k: False for k in keys} while True: event = pygame.event.wait() if event.type in (pygame.KEYDOWN, pygame.KEYUP): key = pygame.key.name(event.key) if event.type == pygame.KEYDOWN: if (key in key_sound.keys()) and (not is_playing[key]): key_sound[key].play(fade_ms=50) is_playing[key] = True elif event.key == pygame.K_ESCAPE: pygame.quit() raise KeyboardInterrupt elif event.type == pygame.KEYUP and key in key_sound.keys(): key_sound[key].fadeout(50) # stops with 50ms fadeout is_playing[key] = False
      
      







рд╡рд╣ рд╕рдм рд╣реИ! рдФрд░ рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рддреБрд░реНрдХреА рдЧреАрдд рдмрдЬрд╛рдКрдВрдЧрд╛ ( рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рд▓рдЧрднрдЧред рдкреНрд░рддрд┐ред )!







рдпрджрд┐ рдЖрдк рдШрд░ рдкрд░ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рд╡реЗ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ HTML5 / JS / elm рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рдардХреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ Pianoputer рдХрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рдкрдХ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛред



рдЖрдорддреМрд░ рдкрд░, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдЧреАрдд рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрд╕рд▓реА рдкрд┐рдпрд╛рдиреЛ рдХреАрдмреЛрд░реНрдб рд▓реЗрдирд╛ рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд░рд╛ рдЧреМрд░ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдкрд╛рдпрдерди рдореЗрдВ рдирд┐рдпрдорд┐рдд рдмрд╛рдЙрд▓ рдФрд░ 60 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!



рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕рд╕реНрддреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рд╕рдВрдЧреАрдд рд╕реНрдЯреЗрд╢рди рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд┐рдпрдВрддреНрд░рдг рд╣реИрдВ: рдЖрдк рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдореЗрдВ рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╡реЗрдмрдХреИрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреАрдмреЛрд░реНрдб рд╕реЗ рдмрд╛рдХреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрддреНрдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд╕рд╛рдзрди, рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ ... рдХрд▓рд╛рддреНрдордХ рд╣реИрдХрд░реНрд╕, рдХреЛрдИ рднреА рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХрджрдо рдирд╣реАрдВ рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?



All Articles