Wav file clipping when playing audio file in MATLAB

3.3k views Asked by At

Here's my problem. I'm implementing high and low pass filers in the continuous time and discrete time domain, without using MATLAB built in functions or the Signal Processing Toolbox. I need to filter an uploaded wav file. I have the following code which implements the low pass continuous time filter. The main problem is that when I go to play the file, I get the following error:

Warning: Data clipped during write to file:flute_new In wavwrite>PCM_Quantize at 286

In wavwrite>write_wavedat at 302

In wavwrite at 139

In test2 at 23

I've been reading that a common solution to this problem is: signal = signal/max(abs(signal)), but that still doesn't fix the problem of clipping. I don't quite understand what produces this error, so any help would be appreciated. Thank you for reading. Code is as follows:

    [y,Fs,nbits]=wavread('flute.wav');
    m = length(y); %96375
    Fc = 500;               %% frequency cut
    nbits
    n = -(m-1)/2 : (m-1)/2;            %% kernel length / samples
    %Fs = Fs;    %22050      %% sample frequency / (nyquist - %2*m)
    Tc = 2*pi*(Fc/Fs);      %% theta c
    Hm = sin(Tc*n) ./ (pi*n);
        if (rem(m, 2) == 1)
          index = (m+1)/2;
          Hm(index) = Tc/pi;
        end

    [H w] = freqz(Hm, 1, 1024); % 1024 - Amount of Fourier Transform points


    %do playback
    sound(w,Fs);
    %save and playback the file
    wavwrite(w,'flute_new')
    

UPDATE: From what I understand, because my wav file is 16 bits, I can only have -1<=w<1. I updated my code as suggested in the comments, but when I check the w values, I still have a w=1 at the end. The suggested code did eliminate the clipping warning, but the playback of the audio file through the speakers still has clipping. Maybe I'm understanding the concept wrong. Sorry if that's the case.

Playback Code (updated):

%Write and play file
w = w./max(abs(w(:)))*(1-(2^-(nbits-1)));
w
%do playback
    sound(w,Fs);
    wavwrite(w,'flute_new');

Output from terminal:

>> test2

nbits =

    16


w =

         0
    0.0010
    0.0020
    0.0029
    0.0039
    0.0049
    0.0059
    0.0068
    0.0078
    0.0088
    0.0098
    0.0108
    0.0117
    0.0127
    0.0137
    0.0147
    0.0156
    0.0166
    0.0176
    0.0186
    0.0195
    0.0205
    0.0215
    0.0225
    0.0235
    0.0244
    0.0254
    0.0264
    0.0274
    0.0283
    0.0293
    0.0303
    0.0313
    0.0323
    0.0332
    0.0342
    0.0352
    0.0362
    0.0371
    0.0381
    0.0391
    0.0401
    0.0411
    0.0420
    0.0430
    0.0440
    0.0450
    0.0459
    0.0469
    0.0479
    0.0489
    0.0499
    0.0508
    0.0518
    0.0528
    0.0538
    0.0547
    0.0557
    0.0567
    0.0577
    0.0586
    0.0596
    0.0606
    0.0616
    0.0626
    0.0635
    0.0645
    0.0655
    0.0665
    0.0674
    0.0684
    0.0694
    0.0704
    0.0714
    0.0723
    0.0733
    0.0743
    0.0753
    0.0762
    0.0772
    0.0782
    0.0792
    0.0802
    0.0811
    0.0821
    0.0831
    0.0841
    0.0850
    0.0860
    0.0870
    0.0880
    0.0890
    0.0899
    0.0909
    0.0919
    0.0929
    0.0938
    0.0948
    0.0958
    0.0968
    0.0977
    0.0987
    0.0997
    0.1007
    0.1017
    0.1026
    0.1036
    0.1046
    0.1056
    0.1065
    0.1075
    0.1085
    0.1095
    0.1105
    0.1114
    0.1124
    0.1134
    0.1144
    0.1153
    0.1163
    0.1173
    0.1183
    0.1193
    0.1202
    0.1212
    0.1222
    0.1232
    0.1241
    0.1251
    0.1261
    0.1271
    0.1281
    0.1290
    0.1300
    0.1310
    0.1320
    0.1329
    0.1339
    0.1349
    0.1359
    0.1368
    0.1378
    0.1388
    0.1398
    0.1408
    0.1417
    0.1427
    0.1437
    0.1447
    0.1456
    0.1466
    0.1476
    0.1486
    0.1496
    0.1505
    0.1515
    0.1525
    0.1535
    0.1544
    0.1554
    0.1564
    0.1574
    0.1584
    0.1593
    0.1603
    0.1613
    0.1623
    0.1632
    0.1642
    0.1652
    0.1662
    0.1672
    0.1681
    0.1691
    0.1701
    0.1711
    0.1720
    0.1730
    0.1740
    0.1750
    0.1759
    0.1769
    0.1779
    0.1789
    0.1799
    0.1808
    0.1818
    0.1828
    0.1838
    0.1847
    0.1857
    0.1867
    0.1877
    0.1887
    0.1896
    0.1906
    0.1916
    0.1926
    0.1935
    0.1945
    0.1955
    0.1965
    0.1975
    0.1984
    0.1994
    0.2004
    0.2014
    0.2023
    0.2033
    0.2043
    0.2053
    0.2062
    0.2072
    0.2082
    0.2092
    0.2102
    0.2111
    0.2121
    0.2131
    0.2141
    0.2150
    0.2160
    0.2170
    0.2180
    0.2190
    0.2199
    0.2209
    0.2219
    0.2229
    0.2238
    0.2248
    0.2258
    0.2268
    0.2278
    0.2287
    0.2297
    0.2307
    0.2317
    0.2326
    0.2336
    0.2346
    0.2356
    0.2366
    0.2375
    0.2385
    0.2395
    0.2405
    0.2414
    0.2424
    0.2434
    0.2444
    0.2453
    0.2463
    0.2473
    0.2483
    0.2493
    0.2502
    0.2512
    0.2522
    0.2532
    0.2541
    0.2551
    0.2561
    0.2571
    0.2581
    0.2590
    0.2600
    0.2610
    0.2620
    0.2629
    0.2639
    0.2649
    0.2659
    0.2669
    0.2678
    0.2688
    0.2698
    0.2708
    0.2717
    0.2727
    0.2737
    0.2747
    0.2757
    0.2766
    0.2776
    0.2786
    0.2796
    0.2805
    0.2815
    0.2825
    0.2835
    0.2844
    0.2854
    0.2864
    0.2874
    0.2884
    0.2893
    0.2903
    0.2913
    0.2923
    0.2932
    0.2942
    0.2952
    0.2962
    0.2972
    0.2981
    0.2991
    0.3001
    0.3011
    0.3020
    0.3030
    0.3040
    0.3050
    0.3060
    0.3069
    0.3079
    0.3089
    0.3099
    0.3108
    0.3118
    0.3128
    0.3138
    0.3148
    0.3157
    0.3167
    0.3177
    0.3187
    0.3196
    0.3206
    0.3216
    0.3226
    0.3235
    0.3245
    0.3255
    0.3265
    0.3275
    0.3284
    0.3294
    0.3304
    0.3314
    0.3323
    0.3333
    0.3343
    0.3353
    0.3363
    0.3372
    0.3382
    0.3392
    0.3402
    0.3411
    0.3421
    0.3431
    0.3441
    0.3451
    0.3460
    0.3470
    0.3480
    0.3490
    0.3499
    0.3509
    0.3519
    0.3529
    0.3539
    0.3548
    0.3558
    0.3568
    0.3578
    0.3587
    0.3597
    0.3607
    0.3617
    0.3626
    0.3636
    0.3646
    0.3656
    0.3666
    0.3675
    0.3685
    0.3695
    0.3705
    0.3714
    0.3724
    0.3734
    0.3744
    0.3754
    0.3763
    0.3773
    0.3783
    0.3793
    0.3802
    0.3812
    0.3822
    0.3832
    0.3842
    0.3851
    0.3861
    0.3871
    0.3881
    0.3890
    0.3900
    0.3910
    0.3920
    0.3929
    0.3939
    0.3949
    0.3959
    0.3969
    0.3978
    0.3988
    0.3998
    0.4008
    0.4017
    0.4027
    0.4037
    0.4047
    0.4057
    0.4066
    0.4076
    0.4086
    0.4096
    0.4105
    0.4115
    0.4125
    0.4135
    0.4145
    0.4154
    0.4164
    0.4174
    0.4184
    0.4193
    0.4203
    0.4213
    0.4223
    0.4233
    0.4242
    0.4252
    0.4262
    0.4272
    0.4281
    0.4291
    0.4301
    0.4311
    0.4320
    0.4330
    0.4340
    0.4350
    0.4360
    0.4369
    0.4379
    0.4389
    0.4399
    0.4408
    0.4418
    0.4428
    0.4438
    0.4448
    0.4457
    0.4467
    0.4477
    0.4487
    0.4496
    0.4506
    0.4516
    0.4526
    0.4536
    0.4545
    0.4555
    0.4565
    0.4575
    0.4584
    0.4594
    0.4604
    0.4614
    0.4624
    0.4633
    0.4643
    0.4653
    0.4663
    0.4672
    0.4682
    0.4692
    0.4702
    0.4711
    0.4721
    0.4731
    0.4741
    0.4751
    0.4760
    0.4770
    0.4780
    0.4790
    0.4799
    0.4809
    0.4819
    0.4829
    0.4839
    0.4848
    0.4858
    0.4868
    0.4878
    0.4887
    0.4897
    0.4907
    0.4917
    0.4927
    0.4936
    0.4946
    0.4956
    0.4966
    0.4975
    0.4985
    0.4995
    0.5005
    0.5015
    0.5024
    0.5034
    0.5044
    0.5054
    0.5063
    0.5073
    0.5083
    0.5093
    0.5102
    0.5112
    0.5122
    0.5132
    0.5142
    0.5151
    0.5161
    0.5171
    0.5181
    0.5190
    0.5200
    0.5210
    0.5220
    0.5230
    0.5239
    0.5249
    0.5259
    0.5269
    0.5278
    0.5288
    0.5298
    0.5308
    0.5318
    0.5327
    0.5337
    0.5347
    0.5357
    0.5366
    0.5376
    0.5386
    0.5396
    0.5406
    0.5415
    0.5425
    0.5435
    0.5445
    0.5454
    0.5464
    0.5474
    0.5484
    0.5493
    0.5503
    0.5513
    0.5523
    0.5533
    0.5542
    0.5552
    0.5562
    0.5572
    0.5581
    0.5591
    0.5601
    0.5611
    0.5621
    0.5630
    0.5640
    0.5650
    0.5660
    0.5669
    0.5679
    0.5689
    0.5699
    0.5709
    0.5718
    0.5728
    0.5738
    0.5748
    0.5757
    0.5767
    0.5777
    0.5787
    0.5796
    0.5806
    0.5816
    0.5826
    0.5836
    0.5845
    0.5855
    0.5865
    0.5875
    0.5884
    0.5894
    0.5904
    0.5914
    0.5924
    0.5933
    0.5943
    0.5953
    0.5963
    0.5972
    0.5982
    0.5992
    0.6002
    0.6012
    0.6021
    0.6031
    0.6041
    0.6051
    0.6060
    0.6070
    0.6080
    0.6090
    0.6100
    0.6109
    0.6119
    0.6129
    0.6139
    0.6148
    0.6158
    0.6168
    0.6178
    0.6187
    0.6197
    0.6207
    0.6217
    0.6227
    0.6236
    0.6246
    0.6256
    0.6266
    0.6275
    0.6285
    0.6295
    0.6305
    0.6315
    0.6324
    0.6334
    0.6344
    0.6354
    0.6363
    0.6373
    0.6383
    0.6393
    0.6403
    0.6412
    0.6422
    0.6432
    0.6442
    0.6451
    0.6461
    0.6471
    0.6481
    0.6491
    0.6500
    0.6510
    0.6520
    0.6530
    0.6539
    0.6549
    0.6559
    0.6569
    0.6578
    0.6588
    0.6598
    0.6608
    0.6618
    0.6627
    0.6637
    0.6647
    0.6657
    0.6666
    0.6676
    0.6686
    0.6696
    0.6706
    0.6715
    0.6725
    0.6735
    0.6745
    0.6754
    0.6764
    0.6774
    0.6784
    0.6794
    0.6803
    0.6813
    0.6823
    0.6833
    0.6842
    0.6852
    0.6862
    0.6872
    0.6882
    0.6891
    0.6901
    0.6911
    0.6921
    0.6930
    0.6940
    0.6950
    0.6960
    0.6969
    0.6979
    0.6989
    0.6999
    0.7009
    0.7018
    0.7028
    0.7038
    0.7048
    0.7057
    0.7067
    0.7077
    0.7087
    0.7097
    0.7106
    0.7116
    0.7126
    0.7136
    0.7145
    0.7155
    0.7165
    0.7175
    0.7185
    0.7194
    0.7204
    0.7214
    0.7224
    0.7233
    0.7243
    0.7253
    0.7263
    0.7273
    0.7282
    0.7292
    0.7302
    0.7312
    0.7321
    0.7331
    0.7341
    0.7351
    0.7360
    0.7370
    0.7380
    0.7390
    0.7400
    0.7409
    0.7419
    0.7429
    0.7439
    0.7448
    0.7458
    0.7468
    0.7478
    0.7488
    0.7497
    0.7507
    0.7517
    0.7527
    0.7536
    0.7546
    0.7556
    0.7566
    0.7576
    0.7585
    0.7595
    0.7605
    0.7615
    0.7624
    0.7634
    0.7644
    0.7654
    0.7664
    0.7673
    0.7683
    0.7693
    0.7703
    0.7712
    0.7722
    0.7732
    0.7742
    0.7751
    0.7761
    0.7771
    0.7781
    0.7791
    0.7800
    0.7810
    0.7820
    0.7830
    0.7839
    0.7849
    0.7859
    0.7869
    0.7879
    0.7888
    0.7898
    0.7908
    0.7918
    0.7927
    0.7937
    0.7947
    0.7957
    0.7967
    0.7976
    0.7986
    0.7996
    0.8006
    0.8015
    0.8025
    0.8035
    0.8045
    0.8054
    0.8064
    0.8074
    0.8084
    0.8094
    0.8103
    0.8113
    0.8123
    0.8133
    0.8142
    0.8152
    0.8162
    0.8172
    0.8182
    0.8191
    0.8201
    0.8211
    0.8221
    0.8230
    0.8240
    0.8250
    0.8260
    0.8270
    0.8279
    0.8289
    0.8299
    0.8309
    0.8318
    0.8328
    0.8338
    0.8348
    0.8358
    0.8367
    0.8377
    0.8387
    0.8397
    0.8406
    0.8416
    0.8426
    0.8436
    0.8445
    0.8455
    0.8465
    0.8475
    0.8485
    0.8494
    0.8504
    0.8514
    0.8524
    0.8533
    0.8543
    0.8553
    0.8563
    0.8573
    0.8582
    0.8592
    0.8602
    0.8612
    0.8621
    0.8631
    0.8641
    0.8651
    0.8661
    0.8670
    0.8680
    0.8690
    0.8700
    0.8709
    0.8719
    0.8729
    0.8739
    0.8749
    0.8758
    0.8768
    0.8778
    0.8788
    0.8797
    0.8807
    0.8817
    0.8827
    0.8836
    0.8846
    0.8856
    0.8866
    0.8876
    0.8885
    0.8895
    0.8905
    0.8915
    0.8924
    0.8934
    0.8944
    0.8954
    0.8964
    0.8973
    0.8983
    0.8993
    0.9003
    0.9012
    0.9022
    0.9032
    0.9042
    0.9052
    0.9061
    0.9071
    0.9081
    0.9091
    0.9100
    0.9110
    0.9120
    0.9130
    0.9140
    0.9149
    0.9159
    0.9169
    0.9179
    0.9188
    0.9198
    0.9208
    0.9218
    0.9227
    0.9237
    0.9247
    0.9257
    0.9267
    0.9276
    0.9286
    0.9296
    0.9306
    0.9315
    0.9325
    0.9335
    0.9345
    0.9355
    0.9364
    0.9374
    0.9384
    0.9394
    0.9403
    0.9413
    0.9423
    0.9433
    0.9443
    0.9452
    0.9462
    0.9472
    0.9482
    0.9491
    0.9501
    0.9511
    0.9521
    0.9531
    0.9540
    0.9550
    0.9560
    0.9570
    0.9579
    0.9589
    0.9599
    0.9609
    0.9618
    0.9628
    0.9638
    0.9648
    0.9658
    0.9667
    0.9677
    0.9687
    0.9697
    0.9706
    0.9716
    0.9726
    0.9736
    0.9746
    0.9755
    0.9765
    0.9775
    0.9785
    0.9794
    0.9804
    0.9814
    0.9824
    0.9834
    0.9843
    0.9853
    0.9863
    0.9873
    0.9882
    0.9892
    0.9902
    0.9912
    0.9921
    0.9931
    0.9941
    0.9951
    0.9961
    0.9970
    0.9980
    0.9990
    1.0000

    
1

There are 1 answers

4
lennon310 On BEST ANSWER

It's not an error, just a warning.

If you write a .wav-file with 32 bits resolution, the allowed data range is -1 <= w <= 1. But for 8, 16 or 24 bits, the limits are -1 <= w < 1, such that w==1 creates the clipping warning (1-bit short of '1', i.e., 1 - 1/32768 = 0.99996948242188 in 16-bit mode.), and it can not be written into file. You can ignore that, or :

format long
w = w./max(abs(w(:)))*(1-(2^-(nbits-1)));
wavwrite(w,'flute_new');