Subject: bass&treble controls for snapper audio
To: netbsd-macppc <port-macppc@NetBSD.ORG>
From: Michael <macallan18@earthlink.net>
List: port-macppc
Date: 02/27/2005 19:19:04
--Signature=_Sun__27_Feb_2005_19_19_04_-0500_szqZT5O3679X4D3j
Content-Type: multipart/mixed;
 boundary="Multipart=_Sun__27_Feb_2005_19_19_04_-0500_y8YunTQrNR8JjRjk"


--Multipart=_Sun__27_Feb_2005_19_19_04_-0500_y8YunTQrNR8JjRjk
Content-Type: text/plain; charset=US-ASCII
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

Hello,

just because I found some documentation for the tas3004 audio chip ( Apple calls it snapper and used it in the iBook G4 and others ) - see http://macallan.homeunix.org:6704/stuff/Mac/tas3004.pdf - I had to add bass and treble controls. See attached patch :)
I'm not sure it does The Right Thing(tm) everywhere but it works for me. The chip supports adjustments between -18dB and +18dB in 0.5dB steps, for simplicity's sake I only use 1dB steps and -16,16 so setting monitor.treble to 128 gives 0dB, 0 gives -16dB, 255 gives +16dB. 

have fun
Michael

--Multipart=_Sun__27_Feb_2005_19_19_04_-0500_y8YunTQrNR8JjRjk
Content-Type: application/octet-stream;
 name="snapper.patch"
Content-Disposition: attachment;
 filename="snapper.patch"
Content-Transfer-Encoding: base64

SW5kZXg6IHNuYXBwZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2Fy
Y2gvbWFjcHBjL2Rldi9zbmFwcGVyLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC11
IC13IC1yMS41IHNuYXBwZXIuYwotLS0gc25hcHBlci5jCTI1IEphbiAyMDA1IDE5OjA1OjIyIC0w
MDAwCTEuNQorKysgc25hcHBlci5jCTI3IEZlYiAyMDA1IDIzOjUyOjI5IC0wMDAwCkBAIC03NCw2
ICs3NCw4IEBACiAKIAl1X2ludCBzY192b2xfbDsKIAl1X2ludCBzY192b2xfcjsKKwl1X2ludCBz
Y190cmVibGU7CisJdV9pbnQgc2NfYmFzczsKIAogCWRiZG1hX3JlZ21hcF90ICpzY19vZG1hOwog
CWRiZG1hX3JlZ21hcF90ICpzY19pZG1hOwpAQCAtMTA2LDYgKzEwOCw4IEBACiAgICAgdm9pZCAq
LCBjb25zdCBhdWRpb19wYXJhbXNfdCAqKTsKIHZvaWQgc25hcHBlcl9zZXRfdm9sdW1lKHN0cnVj
dCBzbmFwcGVyX3NvZnRjICosIGludCwgaW50KTsKIGludCBzbmFwcGVyX3NldF9yYXRlKHN0cnVj
dCBzbmFwcGVyX3NvZnRjICosIHVfaW50KTsKK3ZvaWQgc25hcHBlcl9zZXRfdHJlYmxlKHN0cnVj
dCBzbmFwcGVyX3NvZnRjICosIGludCk7Cit2b2lkIHNuYXBwZXJfc2V0X2Jhc3Moc3RydWN0IHNu
YXBwZXJfc29mdGMgKiwgaW50KTsKIAogaW50IHRhczMwMDRfd3JpdGUoc3RydWN0IHNuYXBwZXJf
c29mdGMgKiwgdV9pbnQsIGNvbnN0IHZvaWQgKik7CiBzdGF0aWMgaW50IGdwaW9fcmVhZChjaGFy
ICopOwpAQCAtMTYzLDYgKzE2Nyw0NiBAQAogCSJzbmFwcGVyIgogfTsKIAorY29uc3QgdWludDhf
dCBzbmFwcGVyX2Jhc3N0YWJbXSA9IHsKKwkweDk2LAkvKiAtMThkQiAqLworCTB4OTQsCS8qIC0x
N2RCICovCisJMHg5MiwJLyogLTE2ZEIgKi8KKwkweDkwLAkvKiAtMTVkQiAqLworCTB4OGUsCS8q
IC0xNGRCICovCisJMHg4YywJLyogLTEzZEIgKi8KKwkweDhhLAkvKiAtMTJkQiAqLworCTB4ODgs
CS8qIC0xMWRCICovCisJMHg4NiwJLyogLTEwZEIgKi8KKwkweDg0LAkvKiAtOWRCICovCisJMHg4
MiwJLyogLThkQiAqLworCTB4ODAsCS8qIC03ZEIgKi8KKwkweDdlLAkvKiAtNmRCICovCisJMHg3
YywJLyogLTVkQiAqLworCTB4N2EsCS8qIC00ZEIgKi8KKwkweDc4LAkvKiAtM2RCICovCisJMHg3
NiwJLyogLTJkQiAqLworCTB4NzQsCS8qIC0xZEIgKi8KKwkweDcyLAkvKiAwZEIgKi8KKwkweDZm
LAkvKiAxZEIgKi8KKwkweDZkLAkvKiAyZEIgKi8KKwkweDZhLAkvKiAzZEIgKi8KKwkweDY3LAkv
KiA0ZEIgKi8KKwkweDY1LAkvKiA1ZEIgKi8KKwkweDYyLAkvKiA2ZEIgKi8KKwkweDVmLAkvKiA3
ZEIgKi8KKwkweDViLAkvKiA4ZEIgKi8KKwkweDU1LAkvKiA5ZEIgKi8KKwkweDRmLAkvKiAxMGRC
ICovCisJMHg0OSwJLyogMTFkQiAqLworCTB4NDMsCS8qIDEyZEIgKi8KKwkweDNiLAkvKiAxM2RC
ICovCisJMHgzMywJLyogMTRkQiAqLworCTB4MjksCS8qIDE1ZEIgKi8KKwkweDFlLAkvKiAxNmRC
ICovCisJMHgxMSwJLyogMTdkQiAqLworCTB4MDEsCS8qIDE4ZEIgKi8KK307CisKICNkZWZpbmUg
U05BUFBFUl9ORk9STUFUUwkxCiBzdGF0aWMgY29uc3Qgc3RydWN0IGF1ZGlvX2Zvcm1hdCBzbmFw
cGVyX2Zvcm1hdHNbU05BUFBFUl9ORk9STUFUU10gPSB7CiAJe05VTEwsIEFVTU9ERV9QTEFZIHwg
QVVNT0RFX1JFQ09SRCwgQVVESU9fRU5DT0RJTkdfU0xJTkVBUl9CRSwgMTYsIDE2LApAQCAtNTc1
LDYgKzYyNiw4IEBACiAJU05BUFBFUl9WT0xfT1VUUFVULAogCVNOQVBQRVJfSU5QVVRfU0VMRUNU
LAogCVNOQVBQRVJfVk9MX0lOUFVULAorCVNOQVBQRVJfVFJFQkxFLAorCVNOQVBQRVJfQkFTUywK
IAlTTkFQUEVSX0VOVU1fTEFTVAogfTsKIApAQCAtNjI4LDggKzY4MSwxNCBAQAogCWNhc2UgU05B
UFBFUl9WT0xfSU5QVVQ6CiAJCS8qIFhYWCBUTyBCRSBET05FICovCiAJCXJldHVybiAwOwotCX0K
IAorCWNhc2UgU05BUFBFUl9CQVNTOgorCQlzbmFwcGVyX3NldF9iYXNzKHNjLGwpOworCQlyZXR1
cm4gMDsKKwljYXNlIFNOQVBQRVJfVFJFQkxFOgorCQlzbmFwcGVyX3NldF90cmVibGUoc2MsbCk7
CisJCXJldHVybiAwOworCX0JCiAJcmV0dXJuIEVOWElPOwogfQogCkBAIC02NTksNiArNzE4LDEy
IEBACiAJCW1jLT51bi52YWx1ZS5sZXZlbFtBVURJT19NSVhFUl9MRVZFTF9MRUZUXSA9IDA7CiAJ
CW1jLT51bi52YWx1ZS5sZXZlbFtBVURJT19NSVhFUl9MRVZFTF9SSUdIVF0gPSAwOwogCQlyZXR1
cm4gMDsKKwljYXNlIFNOQVBQRVJfVFJFQkxFOgorCQltYy0+dW4udmFsdWUubGV2ZWxbQVVESU9f
TUlYRVJfTEVWRUxfTU9OT109c2MtPnNjX3RyZWJsZTsKKwkJcmV0dXJuIDA7CisJY2FzZSBTTkFQ
UEVSX0JBU1M6CisJCW1jLT51bi52YWx1ZS5sZXZlbFtBVURJT19NSVhFUl9MRVZFTF9NT05PXT1z
Yy0+c2NfYmFzczsKKwkJcmV0dXJuIDA7CiAKIAlkZWZhdWx0OgogCQlyZXR1cm4gRU5YSU87CkBA
IC03MzYsNiArODAxLDIyIEBACiAJCWRpcC0+dHlwZSA9IEFVRElPX01JWEVSX0NMQVNTOwogCQlk
aXAtPm5leHQgPSBkaXAtPnByZXYgPSBBVURJT19NSVhFUl9MQVNUOwogCQlyZXR1cm4gMDsKKwor
CWNhc2UgU05BUFBFUl9UUkVCTEU6CisJCWRpcC0+bWl4ZXJfY2xhc3MgPSBTTkFQUEVSX01PTklU
T1JfQ0xBU1M7CisJCXN0cmNweShkaXAtPmxhYmVsLm5hbWUsIEF1ZGlvTnRyZWJsZSk7CisJCWRp
cC0+dHlwZSA9IEFVRElPX01JWEVSX1ZBTFVFOworCQlkaXAtPnByZXYgPSBkaXAtPm5leHQgPSBB
VURJT19NSVhFUl9MQVNUOworCQlkaXAtPnVuLnYubnVtX2NoYW5uZWxzID0gMTsKKwkJcmV0dXJu
IDA7CisKKwljYXNlIFNOQVBQRVJfQkFTUzoKKwkJZGlwLT5taXhlcl9jbGFzcyA9IFNOQVBQRVJf
TU9OSVRPUl9DTEFTUzsKKwkJc3RyY3B5KGRpcC0+bGFiZWwubmFtZSwgQXVkaW9OYmFzcyk7CisJ
CWRpcC0+dHlwZSA9IEFVRElPX01JWEVSX1ZBTFVFOworCQlkaXAtPnByZXYgPSBkaXAtPm5leHQg
PSBBVURJT19NSVhFUl9MQVNUOworCQlkaXAtPnVuLnYubnVtX2NoYW5uZWxzID0gMTsKKwkJcmV0
dXJuIDA7CiAJfQogCiAJcmV0dXJuIEVOWElPOwpAQCAtODQ2LDYgKzkyNywyNiBAQAogCXRhczMw
MDRfd3JpdGUoc2MsIERFUV9WT0xVTUUsIHZvbCk7CiB9CiAKK3ZvaWQgc25hcHBlcl9zZXRfdHJl
YmxlKHN0cnVjdCBzbmFwcGVyX3NvZnRjICpzYywgaW50IHN0dWZmKQoreworCXVpbnQ4X3QgcmVn
OworCWlmKChzdHVmZj49MCkgJiYgKHN0dWZmPD0yNTUpICYmIChzYy0+c2NfdHJlYmxlIT1zdHVm
ZikpIHsKKwkJcmVnPXNuYXBwZXJfYmFzc3RhYlsoc3R1ZmY+PjMpKzJdOworCQlzYy0+c2NfdHJl
YmxlPXN0dWZmOworCQl0YXMzMDA0X3dyaXRlKHNjLCBERVFfVFJFQkxFLCZyZWcpOworCX0KK30K
Kwordm9pZCBzbmFwcGVyX3NldF9iYXNzKHN0cnVjdCBzbmFwcGVyX3NvZnRjICpzYywgaW50IHN0
dWZmKQoreworCXVpbnQ4X3QgcmVnOworCWlmKChzdHVmZj49MCkgJiYgKHN0dWZmPD0yNTUpICYm
IChzdHVmZiE9c2MtPnNjX2Jhc3MpKSB7CisJCXJlZz1zbmFwcGVyX2Jhc3N0YWJbKHN0dWZmPj4z
KSsyXTsKKwkJc2MtPnNjX2Jhc3M9c3R1ZmY7CisJCXRhczMwMDRfd3JpdGUoc2MsIERFUV9CQVNT
LCZyZWcpOworCX0KK30KKwogI2RlZmluZSBDTEtTUkNfNDlNSHoJMHg4MDAwMDAwMAkvKiBVc2Ug
NDkxNTIwMDBIeiBPc2MuICovCiAjZGVmaW5lIENMS1NSQ180NU1IegkweDQwMDAwMDAwCS8qIFVz
ZSA0NTE1ODQwMEh6IE9zYy4gKi8KICNkZWZpbmUgQ0xLU1JDXzE4TUh6CTB4MDAwMDAwMDAJLyog
VXNlIDE4NDMyMDAwSHogT3NjLiAqLwpAQCAtMTAzNCw2ICsxMTM1LDEwIEBACiAJc2l6ZSA9IHRh
czMwMDRfcmVnc2l6ZVtyZWddOwogCUtBU1NFUlQoc2l6ZSA+IDApOwogCisjaWZkZWYgREVCVUdf
U05BUFBFUgorCXByaW50ZigicmVnOiAleCwgJWQgJWRcbiIscmVnLHNpemUsKChjaGFyKilkYXRh
KVswXSk7CisjZW5kaWYKKwogCWlmIChraTJjX3dyaXRlKHNjLT5zY19pMmMsIERFUWFkZHIsIHJl
ZywgZGF0YSwgc2l6ZSkpCiAJCXJldHVybiAtMTsKIApAQCAtMTI3NCw0ICsxMzc5LDYgQEAKIAlz
bmFwcGVyX2NpbnQoc2MpOwogCiAJc25hcHBlcl9zZXRfdm9sdW1lKHNjLCA4MCwgODApOworCXNj
LT5zY19iYXNzPTEyODsKKwlzYy0+c2NfdHJlYmxlPTEyODsKIH0K

--Multipart=_Sun__27_Feb_2005_19_19_04_-0500_y8YunTQrNR8JjRjk--

--Signature=_Sun__27_Feb_2005_19_19_04_-0500_szqZT5O3679X4D3j
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (NetBSD)

iQEVAwUBQiJjgMpnzkX8Yg2nAQIwcAf8DMqW/hIWK/eMKhFoGS6nqQj0f96cSpuQ
lpibQn7Jh+u7QJIv4ZDHiYH6DRv7iuhVl7ZlLntpwGJGRlX4HN58D3Pcr8zLMUFI
gSVO5XfMWdW3T1HT6IjuGQHvV1zswfNBYuD2r/VKMZWleQh9rKihU6lRB9ZyGSU9
uS7jkQOVg4eb4X7G+pBr1cihWOwVezV+PfHXVm21BmFrZr8ONOG2RkYHU6QWdRZX
BbsZCaE8+iKtgSlr4JX40OHDzBAictKmzpRAfao2ptOJHU3fWJo1CvyPLW33UIb/
FJXSX6OJ7CgFjdSlpTgwAcqKKh5NU7YdA667w5gzhcAMWpj4fBBxeA==
=nVfG
-----END PGP SIGNATURE-----

--Signature=_Sun__27_Feb_2005_19_19_04_-0500_szqZT5O3679X4D3j--