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
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 :