صدا/ویو audio/wav
خواندن و نوشتن پروندههای ویو: پیسیام، اعشاری، ایلا و میولا.
واردسازی audio.wav
ویو قالبی است که وقتی نباید چیزی از دست برود به آن رو میآورید. ظرفی ریف است که تکه fmt در آن میگوید نمونهها چهاند و تکه data خودشان را نگه میدارد، و این بسته آن را بی هیچ کتابخانه بیرونی میخواند و مینویسد.
نمونههای صحیح در هشت، شانزده، بیست و چهار و سی و دو بیت همه پشتیبانی میشوند، همچنین نمونههای اعشاری آیتریپلای و دو روش فشردهسازی هشت بیتی تلفن، ایلا و میولا. بازکردن ویو و ذخیره ویو راه کوتاه ورودند؛ صدا.کدک کوتاهتر است وقتی هیچ نمیخواهید قالب را نام ببرید.
دانستنیها
- پیسیام هشت، شانزده و بیست و چهار بیتی رفت و برگشت از یک قطعه را دقیق پشت سر میگذارد. پرونده صحیح سی و دو بیتی هشت بیت کمارزش خود را از دست میدهد، چون قطعه اعشار سی و دو بیتی نگه میدارد؛ چنین پروندهای را با
کدگذاری ویو اعشاریبنویسید که هر بیت را نگه میدارد. کدگذاری ویوبا عمقی مینویسد که قطعه دربیت هابه یاد دارد، و شانزده بیت وقتی قطعه عمقی ندارد.کدگذاری ویو با بیتعمق را از شما میگیرد.- پرونده فشردهشده یک چهارم پیسیام بیست و چهار بیتی است و کمی از دست میدهد، بیشترش آنجا که صدا بلند است. نزدیک سکوت خطا از یک پله پیسیام شانزده بیتی کمتر است.
بررسی ویوتنها سرآیند را میخواند، پس فهرستی از هزار پرونده نیازی به کدگشایی هیچیک ندارد.تکههاوکتوری پس میدهد که باید آزادش کنید.یافتن تکههیچ نمیگیرد و همان است که کدگشا به کار میبرد.
گونهها
قالب Format
ساختار قالب| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| کدک | codec | صحیح = 0 | نمونهها کدام کدک را به کار میبرند، یکی از شمارههای کدک. |
| کانال ها | channels | صحیح = 0 | چند کانال. |
| نرخ | rate | صحیح = 0 | فریم در هر ثانیه. |
| بیت ها | bits | صحیح = 0 | بیت برای هر نمونه. |
| همترازی بلوک | block_align | صحیح = 0 | یک فریم چند بایت میگیرد. |
| نرخ بایت | byte_rate | صحیح = 0 | بایت در هر ثانیه صدا. |
واردسازی صدا
واردسازی صدا.ویو
واردسازی فشرده سازی
تابع ریشه:
ناپایا کلیپ := صدا.جدید(22050، 2، 100)
صدا.تنظیم نمونه(کلیپ، 7، 1، 0.5)
بافه := ویو.کدگذاری ویو با بیت(کلیپ، 24)
سرچاپ ویو.ویو است(بافه.data، بافه.len)، ویو.ویو است(بافه.data، 4)
ناپایا شکل := ویو.قالب {}
سرچاپ ویو.خواندن قالب(بافه.data، بافه.len، شکل)
سرچاپ شکل.کدک برابر ویو.کدک پیسیام، شکل.کانال ها، شکل.نرخ، شکل.بیت ها، شکل.همترازی بلوک، شکل.نرخ بایت
فهرست := ویو.تکهها(بافه.data، بافه.len)
سرچاپ فهرست.طول()
ناپایا یکتکه := ویو.تکه {}
سرچاپ ویو.یافتن تکه(بافه.data، بافه.len، ویو.برچسب("data")، یکتکه)، یکتکه.جابجایی، یکتکه.اندازه
ناپایا گم := ویو.تکه {}
سرچاپ ویو.یافتن تکه(بافه.data، بافه.len، ویو.برچسب("cue ")، گم)
ناپایا درستی := نادرست
آگاه := ویو.بررسی ویو(بافه.data، بافه.len، درستی)
سرچاپ درستی، آگاه.نرخ، آگاه.کانال ها، آگاه.بیت ها، آگاه.فریم ها، آگاه.بی اتلاف
ناپایا درستی۲ := نادرست
برگشته := ویو.کدگشایی ویو(بافه.data، بافه.len، درستی۲)
سرچاپ درستی۲، برگشته.فریم ها، برگشته.بیت ها، صدا.نمونه(برگشته، 7، 1)
فشرده سازی.آزادسازی بافر(بافه)
صدا.آزادسازی(کلیپ)
پایانتکه Chunk
ساختار تکه| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| برچسب | tag | صحیح = 0 | برچسب چهار حرفی بسته شده در یک عدد. برچسب یکی را از رشته میسازد. |
| جابجایی | offset | صحیح = 0 | بدنه از کجا آغاز میشود. |
| اندازه | size | صحیح = 0 | بدنه چند بایت دارد، هرگز بیش از پایان پرونده. |
نمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
پایاها و متغیرها
شمارههای کدک Codec…
| نام | انگلیسی | مقدار |
|---|---|---|
| کدک پیسیام | CodecPCM | 1 |
| کدک اعشاری | CodecFloat | 3 |
| کدک ایلا | CodecALaw | 6 |
| کدک میولا | CodecMuLaw | 7 |
| کدک گسترشپذیر | CodecExtensible | 65534 |
واردسازی صدا
واردسازی صدا.ویو
واردسازی فشرده سازی
واردسازی ریاضی
تابع ریشه:
سرچاپ صدا.پیسیام به میولا(0)، صدا.میولا به پیسیام(صدا.پیسیام به میولا(0))
سرچاپ صدا.پیسیام به میولا(16000)، صدا.میولا به پیسیام(144)
سرچاپ صدا.پیسیام به ایلا(16000)، صدا.ایلا به پیسیام(186)
سرچاپ صدا.پیسیام به ایلا(0)، صدا.ایلا به پیسیام(213)
ناپایا نزدیک := 0
ناپایا دورتر := 0
ناپایا مقدار := -32768
تا مقدار کوچکتر 32768:
فرق := ریاضی.قدرمطلق صحیح(صدا.میولا به پیسیام(صدا.پیسیام به میولا(مقدار)) - مقدار)
اگر ریاضی.قدرمطلق صحیح(مقدار) کوچکتربرابر 256:
اگر فرق بزرگتر نزدیک:
نزدیک = فرق
پایان
پایان
اگر فرق بزرگتر دورتر:
دورتر = فرق
پایان
مقدار += 7
پایان
سرچاپ نزدیک، دورتر
ناپایا کلیپ := صدا.جدید(8000، 2، 50)
صدا.تنظیم نمونه(کلیپ، 10، 0، 0.5)
میو := ویو.کدگذاری میولا(کلیپ)
ایل := ویو.کدگذاری ایلا(کلیپ)
سرچاپ فشرده سازی.طول بافر(میو)، فشرده سازی.طول بافر(ایل)، فشرده سازی.طول بافر(ویو.کدگذاری ویو با بیت(کلیپ، 16))
ناپایا درستی := نادرست
برگشته := ویو.کدگشایی ویو(میو.data، میو.len، درستی)
سرچاپ درستی، برگشته.فریم ها، برگشته.کانال ها، برگشته.بیت ها
سرچاپ ریاضی.قدرمطلق(صدا.نمونه(برگشته، 10، 0) - 0.5) کوچکتر 0.01
فشرده سازی.آزادسازی بافر(میو)
فشرده سازی.آزادسازی بافر(ایل)
صدا.آزادسازی(کلیپ)
پایانتابعها
کدگذاری ویو با بیت EncodeWAVBits
تابع کدگذاری ویو با بیت(c: audio.Clip، bits: صحیح): compress.ByteBufواردسازی صدا
واردسازی صدا.ویو
واردسازی فشرده سازی
واردسازی مسیر پرونده
واردسازی حافظه
واردسازی سیستم عامل
تابع ریشه:
ناپایا کلیپ := صدا.جدید(8000، 1، 100)
صدا.تنظیم نمونه(کلیپ، 0، 0، 0.5)
صدا.تنظیم نمونه(کلیپ، 1، 0، -0.25)
سرچاپ فشرده سازی.طول بافر(ویو.کدگذاری ویو با بیت(کلیپ، 8))، فشرده سازی.طول بافر(ویو.کدگذاری ویو با بیت(کلیپ، 16))
سرچاپ فشرده سازی.طول بافر(ویو.کدگذاری ویو با بیت(کلیپ، 24))، فشرده سازی.طول بافر(ویو.کدگذاری ویو با بیت(کلیپ، 32))
سرچاپ فشرده سازی.طول بافر(ویو.کدگذاری ویو اعشاری(کلیپ))
سرچاپ فشرده سازی.طول بافر(ویو.کدگذاری ویو(کلیپ))
کلیپ.بیت ها = 24
سرچاپ فشرده سازی.طول بافر(ویو.کدگذاری ویو(کلیپ))
سرچاپ فشرده سازی.طول بافر(ویو.کدگذاری ویو با بیت(کلیپ، 12))، فشرده سازی.طول بافر(ویو.کدگذاری ویو(صدا.قطعه {}))
نشانی := مسیر پرونده.پیوند(سیستم عامل.پوشه موقت()، "salam_wav_write.wav")
دیرکن حافظه.آزادسازی(نشانی برگردان تهی*)
سرچاپ ویو.ذخیره ویو با بیت(کلیپ، نشانی، 24)
ناپایا درستی := نادرست
دیسکی := ویو.بازکردن ویو(نشانی، درستی)
سرچاپ درستی، دیسکی.فریم ها، دیسکی.بیت ها، صدا.نمونه(دیسکی، 0، 0)، صدا.نمونه(دیسکی، 1، 0)
ناپایا درستی۲ := نادرست
آگاه := ویو.بررسی پرونده ویو(نشانی، درستی۲)
سرچاپ درستی۲، آگاه.فریم ها، آگاه.بیت ها
نشانیف := مسیر پرونده.پیوند(سیستم عامل.پوشه موقت()، "salam_wav_write_f32.wav")
دیرکن حافظه.آزادسازی(نشانیف برگردان تهی*)
سرچاپ ویو.ذخیره ویو اعشاری(کلیپ، نشانیف)
ناپایا درستی۳ := نادرست
دیسکف := ویو.بازکردن ویو(نشانیف، درستی۳)
سرچاپ درستی۳، دیسکف.بیت ها، صدا.نمونه(دیسکف، 1، 0)
ناپایا رفته := نادرست
نبود := مسیر پرونده.پیوند(سیستم عامل.پوشه موقت()، "salam_wav_nope.wav")
دیرکن حافظه.آزادسازی(نبود برگردان تهی*)
ویو.بازکردن ویو(نبود، رفته)
سرچاپ رفته
صدا.آزادسازی(کلیپ)
پایانکدگذاری ویو EncodeWAV
تابع کدگذاری ویو(c: audio.Clip): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Write.salam
کدگذاری ویو اعشاری EncodeWAVFloat
تابع کدگذاری ویو اعشاری(c: audio.Clip): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Write.salam
کدگذاری میولا EncodeMuLaw
تابع کدگذاری میولا(c: audio.Clip): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Law.salam
کدگذاری ایلا EncodeALaw
تابع کدگذاری ایلا(c: audio.Clip): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Law.salam
ذخیره ویو با بیت SaveWAVBits
تابع ذخیره ویو با بیت(c: audio.Clip، path: رشته، bits: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: wav-Write.salam
ذخیره ویو SaveWAV
تابع ذخیره ویو(c: audio.Clip، path: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: wav-Write.salam
ذخیره ویو اعشاری SaveWAVFloat
تابع ذخیره ویو اعشاری(c: audio.Clip، path: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: wav-Write.salam
برچسب Tag
تابع برچسب(s: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
ویو است IsWAV
تابع ویو است(p: تهی*، n: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
تکهها Chunks
تابع تکهها(p: تهی*، n: صحیح): وکتور<تکه>نمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
یافتن تکه FindChunk
تابع یافتن تکه(p: تهی*، n: صحیح، tag: صحیح، out &: تکه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
خواندن قالب ReadFormat
تابع خواندن قالب(p: تهی*، n: صحیح، out &: قالب): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
بررسی ویو ProbeWAV
تابع بررسی ویو(p: تهی*، n: صحیح، ok &: منطقی): audio.Infoنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
کدگشایی ویو DecodeWAV
تابع کدگشایی ویو(p: تهی*، n: صحیح، ok &: منطقی): audio.Clipنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
بازکردن ویو OpenWAV
تابع بازکردن ویو(path: رشته، ok &: منطقی): audio.Clipنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam
بررسی پرونده ویو ProbeFileWAV
تابع بررسی پرونده ویو(path: رشته، ok &: منطقی): audio.Infoنمونهی این مورد همراه با موارد بالاتر آمده است: wav-Read.salam