View Single Post
Old 14th December 2011, 16:57   #17  |  Link
Jenyok
Warm and fuzzy
 
Join Date: Apr 2010
Location: Moscow, Russia
Posts: 201
This is a simple Pseudo Stereo Algorythm for mono audio track.
Based on physic's laws.
For you usage...
It works fine (for me)...
.
Code:
#
# Pseudo Stereo algorythm
# Based on physic's laws
#

audio               = BassAudioSource("...your sound file...")

audio               = GetChannel(audio, 1)                   # Get MONO signal Left channel -> Получаем левый канал, звук "МОНО"
audio               = ConvertToMono(audio)
left_channel        = audio
right_channel       = DelayAudio(audio, 0.0121)              # t=0.0121 sec (v=331 m/sec) ~4 m between sound source L and R in room -> 0.0121 сек (331 м/сек) ~ 4 м между источниками звука L и R
left_channel        = Normalize(left_channel, 0.99)
right_channel       = Normalize(right_channel, 0.99)
left_channel_delay  = DelayAudio(left_channel, 0.000755)     # t=0.000775 sec (v=331 m/sec) ~0.25 m between ears -> 0.000755 сек (331 м/сек) ~ 0.25 м (25 см) среднее расстояние между "ушами"
right_channel_delay = DelayAudio(right_channel, -0.000755)   # t=0.000775 sec (v=331 m/sec) ~0.25 m between ears -> 0.000755 сек (331 м/сек) ~ 0.25 м (25 см) среднее расстояние между "ушами"
left_channel        = MixAudio(left_channel, right_channel_delay, 0.6, 0.4)
right_channel       = MixAudio(right_channel, left_channel_delay, 0.6, 0.4)
left_channel        = Normalize(left_channel, 0.99)
right_channel       = Normalize(right_channel, 0.99)
stereo              = MergeChannels(left_channel, right_channel)
stereo              = Normalize(stereo, 0.99)
.
This is a New Pseudo Stereo Algorythm for mono audio track.
Algorythm is described in Russian magazine "Radio" №7 1982 year.
For you usage...
It works fine (for me)...
.
Code:
#
# New pseudo Stereo algorythm
# Radio Magazine 07-1982, page 47-50
#
#
# Plugins:
#
# SoxFilter()
#



LoadPlugin("C:\PROGRAM FILES\AVISYNTH 2.5\PLUGINS\SOXFILTER_11\soxfilter.dll")



# Constants
#
K2       = 0.5           # K2 = [0.00 .. 1.00]
FNCH     = 300.00        # Low Pass Filter (ФНЧ) = [150 .. 500] Hz (Гц)
SLevel   = 1.00          # Sound Volume Level (Уровень звука) = [0.75 .. 1.00]

# Constants
# ! Do not change this constants !
#
Kf1      = 0.17          # ! Do not change this constant !
Kf2      = 0.83          # ! Do not change this constant !
Kf3      = 1.83          # ! Do not change this constant !
Kf4      = 2.00          # ! Do not change this constant !
KLevel   = 0.85          # ! Do not change this constant !   # Требует небольшой подстройки под конктретный звук
SQRT2    = 1.414         # Square root 2 (Корень из 2)

# Constants
#
LChannel = 1             # Get Left Channel (Левый канал)
LowPass  = "lowpass "    # Low Pass Filter (ФНЧ)
HighPass = "highpass "   # High Pass Filter (ФВЧ)
VLevel   = "vol "        # Volume Level normalization

# Constants
#
SLevel2  = 2.00          # Sound Volume Level (Уровень звука) = [1.00 .. 3.00]   # First Sound Volume Level normalization
SLevel3  = 10.0          # Final Sound Volume Level normalization


# Variables
#
# RightChannel
# LeftChannel
# LeftChannel2           # Mono signal (Моно сигнал), work variable...
# Afnch
# Bfvch
# Stereo
#
# EqC1                   # Variable
# EqC2                   # Variable
# EqC3                   # Variable
# EqC4                   # Variable
#
# EqZL                   # Variable
# EqZR                   # Variable



K2           = (K2 < 0.00) ? 0.00 : (K2 > 1.00) ? 1.00 : K2
FNCH         = (FNCH < 150.00) ? 150.00 : (FNCH > 500.00) ? 500.00 : FNCH
SLevel       = (SLevel < 0.75) ? 0.75 : (SLevel > 1.00) ? 1.00 : SLevel
SLevel2      = (SLevel2 < 1.00) ? 1.00 : (SLevel2 > 3.00) ? 3.00 : SLevel2



BlankClip(length=72250, width=768, height=576, audio_rate=44100, fps=25.0)   # Only for test

Left=WAVSource("C:\Z_DISK_C\PICTURE\JENYOK\SCHOOL_47_KURGAN\VIDEO\DVD 25YEARS DISK6 ФИЛЬМ УЧИТЕЛЬ V1_00 (OLD, +AVI, +AVS)\ZAVS\teacher t01 2_0ch 256kbps 44.1khz.wav")


LeftChannel2 = Left.KillVideo()                 # Get Audio Channel, kill Video content
#LeftChannel2 = GetChannel(LeftChannel2, LChannel).KillVideo()                 # Get Audio Channel, kill Video content
LeftChannel2 = ConvertToMono(LeftChannel2)
LeftChannel2 = SoxFilter(LeftChannel2, VLevel+String(SLevel2))  # Normalize sound Volume Level = SLevel2


#
# Afnch = LowPass_Filter(LeftChannel2, FNCH)
#
#
# Bfvch = LeftChannel2 - Afnch
#
# Bfvch = HighPass_Filter(Bfvch, FNCH)
#
#
# LeftChannel  = SQRT(2) * (Afnch - 2 * K2 * Afnch + 1.83 * K2 * LeftChannel2 - 0.83 * K2 * K2 * LeftChannel2)
#
# RightChannel = SQRT(2) * (Bfvch + 2 * K2 * Afnch - 0.17 * K2 * LeftChannel2 - 0.83 * K2 * K2 * LeftChannel2)
#


Afnch        = SoxFilter(LeftChannel2, LowPass+String(FNCH))    # 300 Hz (Гц) Low Pass Filter (ФНЧ 300 Гц)
Afnch        = SoxFilter(Afnch, VLevel+String(SLevel))          # Normalize sound Volume Level = SLevel

Bfvch        = MixAudio(LeftChannel2, Afnch, 1.0, -1.0)         # 
Bfvch        = SoxFilter(Bfvch, VLevel+String(SLevel*KLevel))   # Normalize sound Volume Level = SLevel*KLevel
Bfvch        = SoxFilter(Bfvch, HighPass+String(FNCH))          # 300 Hz (Гц) High Pass Filter (ФВЧ 300 Гц)
Bfvch        = SoxFilter(Bfvch, VLevel+String(SLevel))          # Normalize sound Volume Level = SLevel

EqC1         = SoxFilter(Afnch, VLevel+String(Kf4 * K2))
EqC2         = SoxFilter(LeftChannel2, VLevel+String(Kf3 * K2))
EqC3         = SoxFilter(LeftChannel2, VLevel+String(Kf2 * K2 * K2))
EqC4         = SoxFilter(LeftChannel2, VLevel+String(Kf1 * K2))


EqZL         = MixAudio(Afnch, EqC1, 1.0, -1.0)
EqZL         = SoxFilter(EqZL, VLevel+String(SLevel))           # Normalize sound Volume Level = SLevel
EqZL         = MixAudio(EqZL, EqC2, 0.5, 0.5)
EqZL         = SoxFilter(EqZL, VLevel+String(SLevel))           # Normalize sound Volume Level = SLevel
EqZL         = MixAudio(EqZL, EqC3, 1.0, -1.0)
EqZL         = SoxFilter(EqZL, VLevel+String(SLevel))           # Normalize sound Volume Level = SLevel

EqZR         = MixAudio(Bfvch, EqC1, 0.5, 0.5)
EqZR         = SoxFilter(EqZR, VLevel+String(SLevel))           # Normalize sound Volume Level = SLevel
EqZR         = MixAudio(EqZR, EqC4, 1.0, -1.0)
EqZR         = SoxFilter(EqZR, VLevel+String(SLevel))           # Normalize sound Volume Level = SLevel
EqZR         = MixAudio(EqZR, EqC3, 1.0, -1.0)
EqZR         = SoxFilter(EqZR, VLevel+String(SLevel))           # Normalize sound Volume Level = SLevel


LeftChannel  = SoxFilter(EqZL, VLevel+String(SQRT2))
RightChannel = SoxFilter(EqZR, VLevel+String(SQRT2))
	

Stereo       = MergeChannels(LeftChannel, RightChannel)
Stereo       = SoxFilter(Stereo, VLevel+String(SLevel3))        # Normalize sound Volume Level = SLevel3
Stereo       = ConvertAudioTo16bit(Stereo)

AudioDub(last, Stereo)

ConvertToYUY2()

Last edited by Jenyok; 15th December 2011 at 20:40.
Jenyok is offline   Reply With Quote