Ejemplo n.º 1
0
def bellenModel(h, params, alg = ['rk4Neutral', 2], tref = [], pref = []) :
    
    h /= 10

    t0 = np.arange(-1., 0, h)
    X0 = np.zeros((len(t0), 1))  
    
    X0[:, 0] = 1-t0
      
    
    start = process_time() 

            
    t, p = dde.rk4Delay(t0, X0, 4., '../examples/bellen/bellen.c', params, alg = alg[0], interpOrder=alg[1]) 
    
    stop = process_time()
    
    p = p.reshape((len(p)))
        
    if (len(tref) > 0) :
        
        interp  = np.abs(p-np.interp(t, tref, pref))/max(abs(pref))

        return([h, max(interp), stop-start])
    
    else :
        return(t, p)
Ejemplo n.º 2
0
def stateArtModel(h, params, alg = 'rk4Neutral', tref = [], pref = []) :  
    
    h /= 44100
    
    t0 = np.arange(-1e-3, h, h)
    X0 = np.zeros((len(t0), 2*K+2))  
        
    for i in range(2*K+2) :
        
        if i % 2 == 0 :
            X0[:, i] = 1e-6*np.cos(2*np.pi*t0*omega1/3.5)
        else :
            X0[:, i] = -1e-6*np.sin(2*np.pi*t0*omega1/3.5)
       
    t0 *= omega1
    
    start = process_time() 
            
    t, X = dde.rk4Delay(t0, X0, omega1*0.4, '../examples/stateArt/stateArt.c', params, alg = alg[0], interpOrder=alg[1]) 
    
    stop = process_time()
    
    p = np.sum(X[:, ::2], axis = 1)
    
    if (len(tref) > 0) :
        
        
        interp  = np.abs(p-np.interp(t, tref, pref))/max(abs(pref))     
        
        return([omega1*h, max(interp), stop-start])
    
    else :
        return(t, p)
Ejemplo n.º 3
0
def bellen(TMax, h):

    t0 = np.arange(-1., 0, h)
    X0 = np.zeros((len(t0), 1))

    X0[:, 0] = 1 - t0

    # t, X = dde.rk4Delay(t0, X0, TMax, 'bellen.c', [], alg = 'rk4Neutral')

    # plt.plot(t, X, label="rk4")

    t, X = dde.rk4Delay(t0,
                        X0,
                        TMax,
                        'bellen.c', [],
                        alg='eulerNeutral',
                        interpOrder=3)

    plt.plot(t, X, label='euler order 3')

    t, X = dde.rk4Delay(t0,
                        X0,
                        TMax,
                        'bellen.c', [],
                        alg='eulerNeutral',
                        interpOrder=2)

    plt.plot(t, X, label='euler order 2')

    t, X = dde.rk4Delay(t0,
                        X0,
                        TMax,
                        'bellen.c', [],
                        alg='eulerNeutral',
                        interpOrder=1)

    plt.plot(t, X, label='euler order 1')

    # t, X = dde.rk4Delay(t0, X0, TMax, 'bellen.c', [], alg = 'eulerImpNeutral')

    # plt.plot(t, X, label='eulerImp')

    # t, X = dde.rk4Delay(t0, X0, TMax, 'bellen.c', [], alg = 'impTrNeutral')

    # plt.plot(t, X, label='impTrNeutral')

    plt.legend()
Ejemplo n.º 4
0
Archivo: toy.py Proyecto: Maugeais/dde
def toyModel(TMax, h):

    omega1 = 2764.

    t0 = np.arange(-5, 0, h)
    X0 = np.zeros((len(t0), 4))

    X0[:, 0] = 1e-1 + 0 * np.cos(100 * np.pi * t0)
    X0[:, 1] = 0 * np.cos(3 * np.pi / 2 * t0)

    T = TMax * omega1

    t, X = dde.rk4Delay(t0, X0, T, 'toy.c', [30, T])

    p = X[:, 0] + X[:, 2]

    #plt.plot(t, p)

    # Calcul les fréquences
    w_len = 1024 * 4
    w_step = 256 * 4
    f0_min = 0.05
    f0_max = 3
    harmo_thresh = 0.85

    sr = int(1 / (t[1] - t[0]))
    pitches, harmonic_rates, argmins, times = yin.compute_yin(
        p[len(t0):], sr, None, w_len, w_step, f0_min, f0_max, harmo_thresh)
    pitches = np.array(pitches)
    times = np.array(times)

    # Changements de signes
    """ Calcul bourrin
    I = np.where(p[1:]*p[:-1] < 0)[0]
    F = t[I]
    
    treal = 0.1+(T/2-abs(t[I[2:]]-T/2))*30/T
    Freal = omega1/(F[2:]-F[:-2])
    plt.plot(treal[:len(treal)//2], Freal[:len(treal)//2])
    plt.plot(treal[len(treal)//2:], Freal[len(Freal)//2:])"""

    tau = 0.1 + (T / 2 - abs(times - T / 2)) * 30 / T
    #print(times[-1], t[-1])
    plt.plot(tau[:len(tau) // 2], omega1 * np.array(pitches[:len(tau) // 2]))
    #plt.plot(tau[len(tau)//2:], omega1*np.array(pitches[len(tau)//2:]))

    from scipy.io.wavfile import write
    scaled = np.int16(p / np.max(np.abs(p)) * 32767)
    write('test.wav', int(sr * omega1), scaled)
Ejemplo n.º 5
0
Archivo: ode.py Proyecto: Maugeais/dde
def bellen(TMax, h):

    t0 = np.arange(-1., 0, h)
    X0 = np.zeros((len(t0), 1))

    X0[:, 0] = 1 - t0

    t, X = dde.rk4Delay(t0, X0, TMax, 'ode.c', [], alg='rk4Neutral')

    plt.plot(t, X, label="rk4")

    t, X = dde.rk4Delay(t0, X0, TMax, 'ode.c', [], alg='eulerNeutral')

    plt.plot(t, X, label='euler')

    t, X = dde.rk4Delay(t0, X0, TMax, 'ode.c', [], alg='eulerImpNeutral')

    plt.plot(t, X, label='eulerImp')

    t, X = dde.rk4Delay(t0, X0, TMax, 'ode.c', [], alg='impTrNeutral')

    plt.plot(t, X, label='impTrNeutral')

    plt.legend()
Ejemplo n.º 6
0
def stateArtModel(TMax, h, params, alg='rk4Neutral', interpOrder=2):

    t0 = np.arange(-1e-2, h, h)
    X0 = np.zeros((len(t0), 2 * K + 2))

    label = 'h= ' + str(h) + ', ' + alg  #str(h) + ', ' + str(params) +

    for i in range(2 * K + 2):

        if i % 2 == 0:
            X0[:, i] = 1e-6 * np.cos(2 * np.pi * t0 * omega1 / 3.5)
        else:
            X0[:, i] = -1e-6 * np.sin(2 * np.pi * t0 * omega1 / 3.5)

    t0 *= omega1
    T = TMax * omega1

    t, X = dde.rk4Delay(t0,
                        X0,
                        T,
                        'stateArt.c',
                        params,
                        alg=alg,
                        interpOrder=interpOrder)

    p = np.sum(X[:, ::2], axis=1)

    # plt.figure("Wave")
    # plt.plot(t/omega1, p, label=label)
    # plt.legend()

    # Calcul les fréquences
    w_len = 1024 * 8
    w_step = 256 // 2

    f0_min = 200
    f0_max = 2500
    harmo_thresh = 0.6

    sr = int(omega1 / (t[1] - t[0]))

    pitches, harmonic_rates, argmins, times = yin.compute_yin(
        p[len(t0):], sr, None, w_len, w_step, f0_min, f0_max, harmo_thresh)
    pitches = np.array(pitches)
    times = np.array(times)

    Pm = params[0] + (TMax / 2 - abs(times - TMax / 2)) / TMax * (params[1] -
                                                                  params[0])

    plt.figure("Yin")
    ax = plt.gca()

    color = next(ax._get_lines.prop_cycler)['color']
    plt.plot(Pm[:len(Pm) // 2],
             np.array(pitches[:len(Pm) // 2]),
             '-',
             c=color,
             label=label)
    plt.plot(Pm[len(Pm) // 2:], np.array(pitches[len(Pm) // 2:]), ':', c=color)

    plt.legend()

    from scipy.io.wavfile import write
    scaled = np.int16(p / np.max(np.abs(p)) * 32767)
    write('test' + '.'.join(str(e) for e in params) + '.wav', int(sr), scaled)