Beverly-kross: lite krossning. 1 bit Arduino musik. (1 / 5 steg)
Steg 1: Hur jag gå om krossa ljudet och vissa backstory.
Inspiration
Efter att ha varit ett fan av sajter som instructables under lång tid och vid flera tillfällen såg att det fanns projekt inriktade genererar ljud eller musik från en mikrokontroller blev jag säker på att en dag jag kommer att få försöker denna coola grejer själv.
Jag har arbetat med ljud projekt tidigare men detta är första gången jag har gått ut i mitt sätt att skapa de verktyg som behövs för att göra det reproducerbara lätt.
Ett av mina tidigare projekt var att använda en billig DDS modul från Kina, ändra sin frekvens och sedan upptäcka den med en SDR (programvara definieras radio) på LSB (lägre sidband) och det spelade tetris musik. Hur som helst. Jag avvika lol.
Mestadels dessa projekt hade gemensamt att de krävde 8 utgångsstift och motstånd att bilda en DAC, vilket är ganska häftigt och låter ganska mysigt... Det fanns emellertid ett par projekt som handlade om 1-bitars ljud behöver endast 1 digital i/o pin att generera ljudet som det är i huvudsak en fyrkantsvåg. Jag blev kär i denna idé på grund av hur det låter eftersom när jag producerar musik jag tenderar att använda en hel del distorsion och det fyller mig med varma fuzzy känslor!
Här bestämmer vi vad vi vill uppnå, jag hoppades att uppnå en nedsampling av en ljudinspelning från 24-bitars till 1-bitars... Jag försökte hitta ett verktyg för att göra detta men kämpade och slutligen gav upp och började skriva mitt eget. Nu måste jag säga att för att förenkla denna process och eftersom jag var tvungen att skära upp ljud provet att få den del som jag faktiskt ville spela, jag använde audacity för att exportera en fil med följande parametrar:
- Osignerat 8 bitar
- RAW (huvud-mindre)
Naturligtvis redigerade jag också ut höger ljudkanal innan du exporterar eftersom jag bara var intresserade av att ta itu med ett mono ljud prov.
Analysera filen
Häftiga med detta exporterade filen är att det är mycket lätt att hantera som varje byte av filen representerar en hel urval av ljud, som i... Hur mycket energi eller hur högt det speciella ögonblicket av ljud är.
Ett 8-bitars eller 1-byte prov är egentligen bara ett värde av loudness mellan 0 och 255, vilket ger dig ett möjligt 256 värdeintervall.
Sedan minskar mitt program som ner från 256 möjliga värden ner till 2. På eller av.
Det enda förbehållet att vara som du har att fatta beslut, vad som utgör att vara på och vad är kasseras genom att släcka den.
Mitt beslut är att välja en plats som är ungefär i mitten av 256 värden. Låt oss säga för argument skull att vi väljer 128 som avskuren punkt, om ett ljud prov är inte högt nog för att nå minst 128 är det kasseras och anses vara avstängd och som lagras bort som 0.
Om provet har emellertid tillräcklig amplitud till topp ovanför 128 säga vi okej anser vi att vara på nog så vi avsatt en 1 värde.