Toon posts:

Evaluatie: wat mis je in software voor producing doeleinden?

Pagina: 1
Acties:
  • 357 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
De titel kan niet langer, maar het gaat om het volgende.

Ik ben van plan om software te schrijven voor alle soorten audiodoeleinden.

Bijvoorbeeld: het genereren van geluiden, het bewerken van geluiden, verschillende sporen/3d, etc.

Voor veel van die dingen bestaat al (goede) software, maar voor het generen van geluiden volgens mij niet. In GoldWave heb je een beperkte expressie-evaluator waarmee je mooie biepjes en vreemde zoemmetjes maken maar dat vind ik toch iets te beperkt.

Ik heb zelf gezien dat hardware voor dit soort doeleinden vaak als beter word ervaren...

Wat missen jullie (ik denk dus vooral aan producers/DJ's/sonologen/etc) nou eigenlijk aan software ?

Daarnaast heb ik gelijk wat vragen:

Digitaal geluid werkt met een sampling rate en een resolutie heb ik gelezen. Stel ik heb 44100 Hz (zoiets d8 ik), en een resolutie van 32 bits. De waarde van die bits, is dat de frequentie ???

Dus als ik 44100x die bits als de hexadecimale waarde van 10000 instel, krijg ik dan een frequentie van 10000 Hz voor 1 seconde ???

Als dat zo is zou dat betekenen dat ik een frequentie 4294967295 Hz zou kunnen opgeven :+ :D !

Hoe kan ik in bijv. een wav-file die andere vage effecten genereren zoals bijv. water wat stroomt ? Zijn dat allemaal snel afwisselende frequenties ??

  • Chiron
  • Registratie: Januari 2001
  • Laatst online: 05-08 16:30

Chiron

Moderator Discord / TFV & AWM
voor het genereren van geluiden niet?

nooit van (VSTi) softsynths/instrumenten gehoord? :) (Absynth bijvoorbeeld, of Reaktor)

"Light thinks it travels faster than anything. It doesn't. For wherever light travels it finds darkness has got there first and is waiting for it."


  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

mwha..dat niet echt.. lijkt me meer wat ik mis is een duidelijk midi overzicht met de kanalen die ik kan gebruiken..dus als ik een knop wil assignen van buitenaf aan een bepaald midi commando..

verde rmis ik ook goeie dual-head opties, vaste vensters die je kan indelen en opslaan, het opslaan van bepaalde settings van je VST instrumenten bij een bepaalde song...

Ontwikkelaar van NPM library Gleamy


Verwijderd

Topicstarter
@Chiron:

Ja, een synth ja.

Ik heb het over écht geluid, alhoewel dat ook de monotone deuntjes van een synth kan zijn.

@Gitaarwerk
Wat niet echt :)?

1e deel begrijp ik niet echt, maar ik maak uit je post als geheel op dat de GUI te wensen over laat (Als je een beetje experimenteert is een paneel met knoppen immers wat directer en makkelijker te bedienen)

P.S.
Dit word gewoon een open source proggie voor BSD, ik ben geen professionele commerciele gast zoals je ziet ;)...

En nee ik heb er niet veel verstand van ofzo, ben gewoon geinteresseerd :)

  • TheLemon
  • Registratie: Augustus 2001
  • Laatst online: 01-07 13:56

TheLemon

daddy cool, crazy like a fool

Zonder je te willen afvallen denk ik dat je het echt uit je hoofd kan zetten om audiosoftware te gaan ontwikkelen als je niet eens de basis van digitaal (en analoog) geluid kent. Als ik je eerste post lees, begin er dan niet aan. De kans dat je met jouw huidige kennis iets kan maken wat nog niet al gemaakt is, is denk ik rond de 0%.

Waarom wil je eigenlijk een audio applicatie schrijven? Het lijkt me zinvoller als je zelf weet wat je wilt maken.
Neem me niet kwalijk als ik wat offensief klink, maar ik zie het echt somber in voor je in dit geval...


edit: Om toch nog een beetje constructief te zijn:

De resolutie in bits (bij Cd-audio 16 bits) geeft het volume van één sample weer, dus met 16-bits kun je per sample het volume in 65536 stappen aangeven.
De sample-frequentie (bij Cd-audio 44100 Hz) is het aantal samples per seconde dat wordt genomen van een (analoge) geluidsgolf. Dit proces wordt AD-conversie genoemd.
Oftewel, één seconde analoog geluid (mono) wordt digitaal bij 16bits/44.1KHz een bestand van 44100*16=705600 bits oftewel ruim 86kbyte.

Het onderste uit je post over water-effecten enzo begrijp ik niet helemaal... Als je meer wilt weten over digitale effecten en audio synthese moet je eens zoeken naar de term DSP (Digital Signal Processing). Over die hogere wiskunde zijn veel (dikke :D ) boeken geschreven.

[ Voor 42% gewijzigd door TheLemon op 07-01-2004 00:26 ]


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 16:05

voodooless

Sound is no voodoo!

Digitaal geluid werkt met een sampling rate en een resolutie heb ik gelezen. Stel ik heb 44100 Hz (zoiets d8 ik), en een resolutie van 32 bits. De waarde van die bits, is dat de frequentie ???
Als je nog niet eens weet hoe dat werkt, dan vrees ik dat je nog een heeeeeeeeeeeeeel lange weg te gaan hebt! Voordat je met dit soort ambitieuze projecten begint zou ik me eerst ff verdiepen in digitale audio. Weet eerst hoe het werkt. Dan heb je nog de werking van DSP's. Dat is dan weer een heel ander, nog gecompliceerder verhaal.

Maar op inet moet genoeg info te vinden zijn over al deze dingen, en met veel tijd en gedult zul je misschien wel tot je uiteindelijke doel komen.

Do diamonds shine on the dark side of the moon :?


  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
Idd als je dat nog niet weet ben je wel héééél slecht bezig.
Btw ik hoop dat je iets van numerieke wiskunde en zo afweet,
want als je met DSP wilt beginnen is dat wel een grote aanrader.
(Fourrier transformaties? Spectrumbepaling? Ring a bell?)
Een sterke wiskundige basis is in ieder geval vereist.

Btw een goeie website over DSP:
http://www.dspguru.com

Zoals iemand hiervoor trouwens al zei: er zijn echt wel al een hele hoop programma's voor de doeleinden die je opsomt hoor.
Reaktor is er een goed voorbeeld van (zie website van Native Instruments,
die mannen maken echt fantastisch goeie software),
en er zijn zeker nog véle andere. (Ben zelf niet zo into synth en zo)

[ Voor 31% gewijzigd door DieterVDW op 07-01-2004 00:38 ]


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 16:05

voodooless

Sound is no voodoo!

uit het profiel van de TS (Hobbies en interesses):
Programmeren (Assembly, OCaml), Kunstmatige Intelligentie, Patroonherkenning\andere complexe berekenbare zaken die je kunt programmeren, Security, Sonologie, Systeem\Architectuurontwikkeling, so on... :PProgrammeren (Assembly, OCaml), Kunstmatige Intelligentie, Patroonherkenning\andere complexe berekenbare zaken die je kunt programmeren, Security, Sonologie, Systeem\Architectuurontwikkeling, so on... :P
Als je al dingen als patroonherkenning gedaan hebt dan zul je bij DSP wel een beetje gelijkenis vinden denk ik. Je interesses liggen in ieder geval goed. Dus dat is alvast een + punt. Hoe oud ben je en wat voor studie geniet je? Als je geen HTS of Universteit (in de juiste richting) doet kan ik je sterk afraden om wat met DSP's te doen. In het laatste jaar van de HTS heb ik een DSP vak gehad, en ik kan je zeggen wat dat niet makkelijk was. Het was echter wel interessat, leuk en leerlaam. Als je bijvoorbeeld Matlab ter beschikking hebt, dan kun je daarmee ook al een heleboel dingen in elkaar knutselen. Erg leerzaam en leuk, maar het is veel redelijk zware theorie. Maar zoals gezegt. Krijg eerst de basis onder de knie, en dan de rest.

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Zonder je te willen afvallen denk ik dat je het echt uit je hoofd kan zetten om audiosoftware te gaan ontwikkelen als je niet eens de basis van digitaal (en analoog) geluid kent. Als ik je eerste post lees, begin er dan niet aan. De kans dat je met jouw huidige kennis iets kan maken wat nog niet al gemaakt is, is denk ik rond de 0%.
Dat moet ik alleen ff weten, dan draai ik wel iets in elkaar hoor, trust me :P

Ik heb (natuurlijk) op internet gezocht alleen daar vertellen ze alleen oppervlakkig hoe het nou werkt en dat was dus wat ik in de beginpost zei.

Ik heb totaal geen verplichtingen ("audiosoftware ontwikkelen"), gewoon een hobby progje om wat experimentjes mee te doen meer niet.
De resolutie in bits (bij Cd-audio 16 bits) geeft het volume van één sample weer, dus met 16-bits kun je per sample het volume in 65536 stappen aangeven.
De sample-frequentie (bij Cd-audio 44100 Hz) is het aantal samples per seconde dat wordt genomen van een (analoge) geluidsgolf. Dit proces wordt AD-conversie genoemd.
Oftewel, één seconde analoog geluid (mono) wordt digitaal bij 16bits/44.1KHz een bestand van 44100*16=705600 bits oftewel ruim 86kbyte.
Dat begreep ik al wel, ik snap als ik dit lees ook prima wat je zegt.

Alleen wat maakt geluid geluid ? Jij hebt het nu alleen over het volume en de sampling rate (theoretisch het 'detail' min of meer). Maar nu is er nog geen verschil in een misthoorn en een tank van vergelijkbaar volume. Als die resolutie niet de geluidsfrequentie bepaald, wat dan wel ? Ik weet wel wat een DSP is, maar die zet de digitale signalen om in werkelijk (analoog) geluid. Dat hoef ik niet (persé) te weten, ik wil wel weten welke bits en bytes je aan die DSP moet voeren om er verschillende geluiden uit te krijgen.
Het onderste uit je post over water-effecten enzo begrijp ik niet helemaal... Als je meer wilt weten over digitale effecten en audio synthese moet je eens zoeken naar de term DSP (Digital Signal Processing). Over die hogere wiskunde zijn veel (dikke ) boeken geschreven.
Ik heb vreemde hobbies, maar ook nog een leven daarnaast gelukkig ;)...

Lees mijn reactie op de alinea hierboven en dan zou je toch wel moeten snappen wat ik bedoel.
ls je nog niet eens weet hoe dat werkt, dan vrees ik dat je nog een heeeeeeeeeeeeeel lange weg te gaan hebt! Voordat je met dit soort ambitieuze projecten begint zou ik me eerst ff verdiepen in digitale audio.
Was niks gedetailleerds over te vinden, dus daarom vraag ik het hier. Nogmaals het is geen "ambitieus project", gewoon een interesse.
Weet eerst hoe het werkt. Dan heb je nog de werking van DSP's. Dat is dan weer een heel ander, nog gecompliceerder verhaal.
Juist, daar was ik toch ook van overtuigd :?....
Idd als je dat nog niet weet ben je wel héééél slecht bezig.
Btw ik hoop dat je iets van numerieke wiskunde en zo afweet,
want als je met DSP wilt beginnen is dat wel een grote aanrader.
(Fourrier transformaties? Spectrumbepaling? Ring a bell?)
Een sterke wiskundige basis is in ieder geval vereist.
Haha die begrippen ken ik wel ja. Ik heb een technische vader die alles van dit soort zaken weet, hij krijgt regelmatig blaadjes binnen met van die schema's voor low-pass filters\etc, inclusief wiskundige onderbouwing, enz..

Maar als het goed is hoef ik dat niet perse te weten, maar als het moet verdiep ik me daar wel in hoor...
Zoals iemand hiervoor trouwens al zei: er zijn echt wel al een hele hoop programma's voor de doeleinden die je opsomt hoor.
Reaktor is er een goed voorbeeld van (zie website van Native Instruments,
die mannen maken echt fantastisch goeie software),
en er zijn zeker nog véle andere. (Ben zelf niet zo into synth en zo)
Zoals ik al zei denk ik dat een synth juist een monotoon iets is, gewoon een frequentie die langzaam veranderd (langzaam is soms relatief ja :P).
Als je al dingen als patroonherkenning gedaan hebt dan zul je bij DSP wel een beetje gelijkenis vinden denk ik. Je interesses liggen in ieder geval goed. Dus dat is alvast een + punt. Hoe oud ben je en wat voor studie geniet je? Als je geen HTS of Universteit (in de juiste richting) doet kan ik je sterk afraden om wat met DSP's te doen. In het laatste jaar van de HTS heb ik een DSP vak gehad, en ik kan je zeggen wat dat niet makkelijk was. Het was echter wel interessat, leuk en leerlaam. Als je bijvoorbeeld Matlab ter beschikking hebt, dan kun je daarmee ook al een heleboel dingen in elkaar knutselen. Erg leerzaam en leuk, maar het is veel redelijk zware theorie. Maar zoals gezegt. Krijg eerst de basis onder de knie, en dan de rest.
Haha, nou ik zit op een HIO opleiding en ga zsm naar de Universiteit, maar niet Technische Informatica oid :D...

Dat was juist mijn idee...
Ik laat een tool als MatLab dmv van formules etc bepaalde waarden uitvoeren, die ik door mijn prog haal die het omzet in simpel wav formaat.

  • Adion
  • Registratie: Januari 2001
  • Laatst online: 02-08 19:03
Geluid bestaat uit geluidsgolven, en elke sample bepaald naar welke positie je speaker zich moet verplaatsen.
Geluidsgolven zijn over het algemeen luchtdrukveranderingen, die dan door je oor opgevangen kunnen worden.
Een stilstaande speaker zorgt niet voor drukveranderingen, en produceert dus geen geluid.
Dus als je 44100 samples hetzelfde volume meegeeft gaat de speaker 1x naar die positie en blijft daar. Er is geen drukverandering en dus geen geluid.

De eenvoudigste golfvorm is de sinus, waar de luchtdruk aan een constant tempo groter en kleiner word en zo een trilling teweegbrengt.
Hoe sneller de trilling, hoe hoger de toon van het geluid.

De meeste geluiden bestaan niet uit slechts een sinus van 1 frequentie, maar bestaan uit de combinatie van verschillende frequenties.
Bij muziekinstrumenten is het vaak een grondtoon + tonen op hogere en lagere octaven van dezelfde noot.

Er zijn op internet zeker bronnen te vinden die je beter kunnen vertellen wat geluid is, hoe het opgebouwd is, en hoe je het zelf kan genereren.
Verder kan het ook handig zijn om wat te experimenteren met geluidsbewerkingsprogramma's zoals cool edit of sound forge, die je ook grafisch alle sample-waarden laten zien.
Je kan vaak ook een spectrum-analyse uitvoeren, en zo kan je ook wat meer te weten komen over het verband tussen de golfvormen en het geluid.

VirtualDJ 2026 - Fast Image Resizer - Instagram


Verwijderd

Topicstarter
Geluid bestaat uit geluidsgolven, en elke sample bepaald naar welke positie je speaker zich moet verplaatsen.
Geluidsgolven zijn over het algemeen luchtdrukveranderingen, die dan door je oor opgevangen kunnen worden.
Een stilstaande speaker zorgt niet voor drukveranderingen, en produceert dus geen geluid.
Dus als je 44100 samples hetzelfde volume meegeeft gaat de speaker 1x naar die positie en blijft daar. Er is geen drukverandering en dus geen geluid.
Aha ! Ik wist niet dat het zo low-level was.
De eenvoudigste golfvorm is de sinus, waar de luchtdruk aan een constant tempo groter en kleiner word en zo een trilling teweegbrengt.
Hoe sneller de trilling, hoe hoger de toon van het geluid.
Is er een maatstaf welke geluidsfrequentie ik met samplingrate-verschil kan opwekken ?
De meeste geluiden bestaan niet uit slechts een sinus van 1 frequentie, maar bestaan uit de combinatie van verschillende frequenties.
Dat vermoedde ik ook al...

Dus water is dan een hele hoop hoge en soms wat lagere frequenties waardoor je een kabbelend beekje hoort.
Bij muziekinstrumenten is het vaak een grondtoon + tonen op hogere en lagere octaven van dezelfde noot.
Idd, daarom vind ik de huidige muziekstudio's wat monotoon, want die doen weinig anders (ja natuurlijk ook wat simpel te berekenen truukjes als echo, pitch, mechanize, etc).
Er zijn op internet zeker bronnen te vinden die je beter kunnen vertellen wat geluid is, hoe het opgebouwd is, en hoe je het zelf kan genereren.
Exáct wat ik zoek ! :)
Verder kan het ook handig zijn om wat te experimenteren met geluidsbewerkingsprogramma's zoals cool edit of sound forge, die je ook grafisch alle sample-waarden laten zien.
Dat is wat ik nu doe, en wel met GoldWave (is minstens zo goed als SoundForge, probeer maar eens, alleen de GUI doet mogelijk wat ouderwets aan). Maar hier kon ik zelf weinig mee genereren of ik moest het dmv formules doen en die kennen ook zo hun beperkingen (in GoldWave wel iig).
Je kan vaak ook een spectrum-analyse uitvoeren, en zo kan je ook wat meer te weten komen over het verband tussen de golfvormen en het geluid.
Ja dan zie ik een plat grafisch iets met spikkels en tinten tussen paars en geel (moeilijk uit te leggen maar je weet wat ik bedoel), echter geen harde, exacte waarden. Maar ik snap wel dat dat ook op een of andere wijze mogelijk moet zijn.

^O^ Hartelijk bedankt voor je nuttige, to-the-point, en zelfs geheel van persoonlijke meningen vrij gebleven post ! ^O^

Verwijderd

Kijk eens op de site van mijn stagebegeleider:

http://www.ipo.tue.nl/homepages/dhermes/lectures/SD/

Dit is de informatie van een college Sound Design (over het maken van geluiden). Kijk ook eens bij hoofdstuk 5, daar staan matlab files voor o.a. rolgeluiden, stuitergeluiden, tikgeluiden.

Let wel op dat het maken van geluiden uit de natuur weinig gedaan wordt in de wereld, dus dat er weinig over te vinden is. Bij mijn weten is dit dan ook de enige site waar een 'redelijk klinkend' kunstmatig rolgeluid te vinden is. (Met de formules hoe je er aan komt). Het kabbelend water bijvoorbeeld is een vrij complex geluid wat niet alleen maar bestaat uit een paar hoog- en laagfrequente sinustoontjes.

Probeer eerst eens een sinustoon te maken zou ik zeggen. Gewoon 44100 samples uitrekenen van sin(2pi * 440 * t) met 0 <= t <= 1. Dat is dus 1 seconde een toon van 440 Hz (de A op een piano).

[ Voor 46% gewijzigd door Verwijderd op 07-01-2004 15:16 ]


Verwijderd

Topicstarter
Let wel op dat het maken van geluiden uit de natuur weinig gedaan wordt in de wereld, dus dat er weinig over te vinden is.
Juist :).

Ik denk dat de sleutelfactor voor het genereren van geluiden is dat men af moet stappen van het enkel gebruiken van formules, omdat dat te beperkend is. Er moet immers enige vorm van logica in zitten.

Soms is het resultaat van een formule interessanter, en dus meerderde formules of harde waarden achter elkaar plaatsen.

Verwijderd

Verwijderd schreef op 07 januari 2004 @ 15:23:
Ik denk dat de sleutelfactor voor het genereren van geluiden is dat men af moet stappen van het enkel gebruiken van formules, omdat dat te beperkend is. Er moet immers enige vorm van logica in zitten.

Soms is het resultaat van een formule interessanter, en dus meerderde formules of harde waarden achter elkaar plaatsen.
Hoe wil je afstappen van formules, maar nog wel logica behouden?
Mij lijkt dat je het geluid wat je maakt met parameters aan wilt kunnen passen, bijv. snelheid, timbre, toonhoogte enz. Dat gaat je (volgens mij) niet lukken door vaste waarden te gebruiken.

Over meerdere formules achter elkaar plaatsen ben ik het met je eens. Dat wordt ook al veelvuldig gedaan (zie ook hoofdstuk 5 van de site, het rolgeluid). Daar worden ook een aantal formules achter elkaar geplaatst, want met alleen het optellen van sinussen kom je er nooit.

Verwijderd

Topicstarter
Hoe wil je afstappen van formules, maar nog wel logica behouden?
De logica wil ik niet altijd behouden.
Mij lijkt dat je het geluid wat je maakt met parameters aan wilt kunnen passen, bijv. snelheid, timbre, toonhoogte enz. Dat gaat je (volgens mij) niet lukken door vaste waarden te gebruiken.
Dat kan toch, als het eenmaal als wav is weggeschreven ?
Over meerdere formules achter elkaar plaatsen ben ik het met je eens. Dat wordt ook al veelvuldig gedaan (zie ook hoofdstuk 5 van de site, het rolgeluid). Daar worden ook een aantal formules achter elkaar geplaatst, want met alleen het optellen van sinussen kom je er nooit.
Idd, is ook niks nieuws, maar er is bij mijn weten geen goed programma voor waar je ook direct het resultaat kan controleren, onder *BSD.

Verwijderd

Verwijderd schreef op 07 januari 2004 @ 16:06:
[...]

Dat kan toch, als het eenmaal als wav is weggeschreven ?
Ja, dat kan wel, maar dan wil je dus een vooraf opgenomen sample gaan manipuleren? Ik dacht dat je echt zelf geluid wilde maken.
[...]

Idd, is ook niks nieuws, maar er is bij mijn weten geen goed programma voor waar je ook direct het resultaat kan controleren, onder *BSD.
Het goed manipuleren van formules waarmee je geluid maakt is een hele lastige zaak. Neem bijv. een sinustoon van 400 Hz. Die klinkt anders dan twee bij elkaar opgetelde sinustonen van 400 en 800 Hz terwijl de toonhoogte hetzelfde is (de tweede klinkt ook als één toon). Neem je twee opgetelde sinustonen van 400 en 810 Hz dan klinkt dat echt als twee losse tonen. Dit is maar een simpel voorbeeldje, maar zo zijn er nog veel meer dingen die het geheel lastig maken. Misschien dat er daarom geen programma's waar dit mee kan en het controleerbaar houden.

Als je daarentegen een sample wilt manipuleren, daar zijn wel heel veel programma's voor aangezien dit al heel veel gebruikt wordt in de muziekindustrie, filmindustrie, gamesindustrie enz. Vooral in films als Star Wars worden geluiden gemaakt door het samenvoegen van samples, het bijdraaien van de pitch, snelheid enz. Maar dit is meestal meer een kwestie van proberen wat goed klinkt en een beetje ervaring dat je van tevoren weet hoe het gaat klinken als je wat verandert.

  • TheLemon
  • Registratie: Augustus 2001
  • Laatst online: 01-07 13:56

TheLemon

daddy cool, crazy like a fool

Toch bergijp ik nog net wat je precies wil. Wil je gesamplede signalen gaan bewerken met DSP of wil je dmv synthese vanuit wiskunde een bepaald geluid nabootsen? Dit zijn twee compleet verschillende ambachten namelijk.

En wat is precies de beperking waar je het over hebt die de huidige studio's en software hebben?

Dan toch maar weer even behulpzaam zijn: ;)

Om te zien hoe complex 'echte' geluiden zijn, moet je eens naar een golf ervan kijken. Je zult zien dat bijv. een 'simpele' toon van een gitaar al erg complex is, iets als:
Afbeeldingslocatie: http://home.zonnet.nl/klaasdieleman/golf1.jpg
(dit is slechts een voorbeeld, eigenlijk is het namelijk een stukje stereo muziek)

Je kunt dit kleine stukje geluid synthetisch opwekken door een flink aantal pure sinussen (met die vorm ben je bekend neem ik aan) met verschillende frequentie en amplitude (volume zeg maar) bij elkaar op te tellen.

Nu heb je alleen slechts een geluid zonder dynamische eigenschappen. Een toon heeft een zgn. 'Envelope', oftewel ontwikkeling van volume en klankkleur naarmate de tijd vordert. Deze envelope kun je opsplitsen in:
- Delay (de tijd die het duurt voor de initiatie van de toon tot je wat begint te horen)
- Attack + hold (de aanslag zeg maar, eerste paar milliseconden)
- Sustain + decay (De 'body' van de toon zeg maar, de eigenlijke toon)
- Release (het afsterven van de toon, of bij een piano het loslaten van de toets)

Als je nu ook nog weet dat een toon in bijv. de sustain-fase niet statisch hoeft te zijn, maar bijv. kan vibreren of moduleren (slechts twee voorbeelden, met een toon kan veel meer gebeuren, als je gitaarspeelt, kun je je wel een voorstelling maken), dan kun je misschien inschatten hoe complex geluidsynthese is.

Niet muzikale geluiden zijn doorgaans nog ingewikkelder om na te maken, omdat die vaak niet echt een duidelijke grondtoon met formanten hebben.

edit:
zo lang over mijn post gedaan dat DarthElvis ook al een hoop beantwoord heeft :D

[ Voor 5% gewijzigd door TheLemon op 07-01-2004 16:53 ]


Verwijderd

Topicstarter
Ja, dat kan wel, maar dan wil je dus een vooraf opgenomen sample gaan manipuleren? Ik dacht dat je echt zelf geluid wilde maken.
Ik wel, maar als je de snelheid, timbre, toonhoogte, enz nog wilt veranderen zoals jij zegt, dan heb je daar al prima editors voor. Ik ga het niet te uitgebreid maken want dat is onnodig en dan is het wél een eindeloos project :)...
Het goed manipuleren van formules waarmee je geluid maakt is een hele lastige zaak. Neem bijv. een sinustoon van 400 Hz. Die klinkt anders dan twee bij elkaar opgetelde sinustonen van 400 en 800 Hz terwijl de toonhoogte hetzelfde is (de tweede klinkt ook als één toon). Neem je twee opgetelde sinustonen van 400 en 810 Hz dan klinkt dat echt als twee losse tonen. Dit is maar een simpel voorbeeldje, maar zo zijn er nog veel meer dingen die het geheel lastig maken. Misschien dat er daarom geen programma's waar dit mee kan en het controleerbaar houden.
Dat kan wel ja, ik moet die tekst nog eens lezen van je docent.
Als je daarentegen een sample wilt manipuleren, daar zijn wel heel veel programma's voor aangezien dit al heel veel gebruikt wordt in de muziekindustrie, filmindustrie, gamesindustrie enz. Vooral in films als Star Wars worden geluiden gemaakt door het samenvoegen van samples, het bijdraaien van de pitch, snelheid enz. Maar dit is meestal meer een kwestie van proberen wat goed klinkt en een beetje ervaring dat je van tevoren weet hoe het gaat klinken als je wat verandert.
Ja, en daar heb ik heel wat ervaring mee :D....

Mijn stem in die van een Rotterdamse zware jongen veranderd en een maat laten schrikken :D...
Toch bergijp ik nog net wat je precies wil. Wil je gesamplede signalen gaan bewerken met DSP of wil je dmv synthese vanuit wiskunde een bepaald geluid nabootsen? Dit zijn twee compleet verschillende ambachten namelijk.
Ik denk dat dat laatste is waar ik op doel. Dat met die DSPs is idd nog complexer en iets heel anders, maar daar kwamen andere users mee.
Om te zien hoe complex 'echte' geluiden zijn, moet je eens naar een golf ervan kijken. Je zult zien dat bijv. een 'simpele' toon van een gitaar al erg complex is, iets als:
Ik zeg ook al dat ik dat zelf al dacht...

Met het verhaal over die speaker-trillingen in het achterhoofd: die lijn is in feite het nulpunt, die golven zijn het frequentieverschil tussen de samples, toch ?
Je kunt dit kleine stukje geluid synthetisch opwekken door een flink aantal pure sinussen (met die vorm ben je bekend neem ik aan) met verschillende frequentie en amplitude (volume zeg maar) bij elkaar op te tellen.
Dus zo'n golf kan ik dan in feite via vectoren (?) (oid, iig niet statisch dus als ik de sampling rate verhoog kan ik de extra samples interpoleren) opslaan als bewerkingsformaat en het later naar wav converten. Voor dat laatse zijn vast wel de nodige routines beschikbaar, maar de "geluidssynthese" zoals jij het noemt is iig al erg interessant en ik begrijp het steeds meer. (Als jullie het goed hebben dan :D)
Nu heb je alleen slechts een geluid zonder dynamische eigenschappen. Een toon heeft een zgn. 'Envelope', oftewel ontwikkeling van volume en klankkleur naarmate de tijd vordert. Deze envelope kun je opsplitsen in:
- Delay (de tijd die het duurt voor de initiatie van de toon tot je wat begint te horen)
- Attack + hold (de aanslag zeg maar, eerste paar milliseconden)
- Sustain + decay (De 'body' van de toon zeg maar, de eigenlijke toon)
- Release (het afsterven van de toon, of bij een piano het loslaten van de toets)
Ja ja, je wilt zeggen dat als ik een gitaarsnaar aansla dat die toon ook nog door de eigenschappen van de klankkast, de omgeving, etc beinvloed word...
Niet muzikale geluiden zijn doorgaans nog ingewikkelder om na te maken, omdat die vaak niet echt een duidelijke grondtoon met formanten hebben.
Wat de reden is waarom ik hier iets voor wil schrijven :).
Als je nu ook nog weet dat een toon in bijv. de sustain-fase niet statisch hoeft te zijn, maar bijv. kan vibreren of moduleren (slechts twee voorbeelden, met een toon kan veel meer gebeuren, als je gitaarspeelt, kun je je wel een voorstelling maken), dan kun je misschien inschatten hoe complex geluidsynthese is.
Wat je met dat bovenste bedoelt begrijp ik nog niet helemaal...

Als ik iets als wav wil wegschrijven is het in feite toch statisch ? Dus het volstaat toch om die envelope waarden eenmalig op te geven (en door mijn programma te laten processen) ?

  • TheLemon
  • Registratie: Augustus 2001
  • Laatst online: 01-07 13:56

TheLemon

daddy cool, crazy like a fool

Verwijderd schreef op 07 januari 2004 @ 18:06:
[...]
Met het verhaal over die speaker-trillingen in het achterhoofd: die lijn is in feite het nulpunt, die golven zijn het frequentieverschil tussen de samples, toch ?
Nee, je ziet het verkeerd. Die nullijn klopt, maar de golven zijn een grafiek met op de x-as de tijd (elk recht vlakje is een sample, analoog zou het een compleet vloeiende lijn zijn) en de y-as is de amplitude, oftewel volume van het geluid op dat moment. Elke sample heeft dus een waarde die de amplitude aangeeft, bijv. de eerste sample van links van de bovenste golf is zeg maar 10% van de maximale sterkte (ik schat maar wat). Als je nu met 16-bits sampled, dan kun je de amplitude in 65536 stapjes aangeven, deze sample zal dan dus een waarde hebben van 6554 (10% remember), dit wordt dat in twee bytes opgeslagen (8bits) en zo heb je één sample.

Met een samplefrequentie van 44100Hz, neem je dus 44100 van deze samples per seconde. Het stukje golf wat je hierboven ziet is dus maar een paar miliseconden lang ofzo. (tel de samples en je weet het precies)

Je moet je realiseren dat de samplefrequentie vast staat bij een bepaalde wav-file, dit heeft ook verder niets te maken met de inhoud van het stukje geluid dat je digitaliseert. Het heeft puur met de kwaliteit van je digitale geluid te maken, hoe meer samples (metingen) je per seconde van een analoge, perfect vloeiende golf maakt, hoe natuurgetrouwer je digitale versie van dat geluid zal klinken.
[...]
Ja ja, je wilt zeggen dat als ik een gitaarsnaar aansla dat die toon ook nog door de eigenschappen van de klankkast, de omgeving, etc beinvloed word...
[...]
Nou dat niet alleen, want dat zijn in principe ook redelijk statische gegevens. (er vanuitgaangde dat de gitaar niet van vorm verandert tijdens het spelen ofzo ;) ).

Ik bedoel eigenlijk: een gitaarsnaar (maar ook een trompet, trommel, en eigenlijk bijna alles) begint met een scherpe aanslag, en dan sterft hij langzaam af. Tijdens dat proces verandert de klankkleur ook. Je kunt dus niet zomaar één bepaald geluid afspelen en die hard laten beginnen en dan uitfaden ofzo.

Iets als een orgel ofzo heeft behalve zijn attack veel minder envelope, die blijft over de tijd redelijk constant.
[...]
Wat je met dat bovenste bedoelt begrijp ik nog niet helemaal...
[...]
Ik bedoel dat iemand die een gitaarsnaar heeft aangeslagen, hem terwijl de toon klinkt bijv. kan laten vibreren of opduwen naar een andere toon, dit maakt het weer complexer om te simuleren.


Als je werkelijk aan de slag wilt met digitaal opwekken van geluid, zou ik beginnen met te proberen een pure sinus als Wav weg te schrijven. Probeer dan of je met een input variabele de frequentie of volume in kan stellen. Dit lijkt mij al extreem moeilijk om te doen namelijk (terwijl ik best kan programmeren).
Vervolgens kun je dan twee verschillende sinussen gaan proberen op te tellen, dan hoor je wat er met de klank gebeurt. (is ook tricky, want twee sinussen die al maximale amplitude hebben optellen, je zit natuurlijk altijd tegen je bovengrens aan van de volle 16 bits, waarde 65536)

Als je dit bovenste in een handomdraai kan maken, dan kunnen we verder praten ;)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Misschien dat je hier iets aan hebt of ditte om het verschil tussen samplingrate, frequentie en amplitude uit elkaar te houden.

Maar als je die 3 basisbegrippen nog niet begrijpt, dan heb je een hele lange zware weg te gaan.

Effe in het kort en in mijn eigen woorden de basis (Jip en Janneke taal :P )
Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1203/Cybarite.gif

In dit plaatje zie je een geluidsgolf staan. De "hardheid" (in dB) wordt bepaald door de Amplitude. Hoe hoger de sinus naar boven, of hoe lager de sinus naar beneden uitslaat hoe "harder" het geluid.

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1203/Cybarite.gif

Dit geluid is dus zachter omdat de golf maar half zo hoog/laag is.

De lengte van de golf (hoe lang de golf nodig heeft om "op en neer" de nullijn te kruisen bepaalt de frequentie. Hoe korter de golf, hoe hoger de frequentie (Hz).

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1203/Cybarite.gif

Deze toon is dus hoger omdat de tijd waarin hij de nullijn kruist is gehalveerd, maar wel even hard als de eerste omdat het amplitude (de uitslag van de golf) even groot is gebleven. Op de Y as hebben we dus het amplitude, op de x as de tijd. Nu gaan we samplen:

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1203/Cybarite3.gif

Omdat een computer niet overweg kan met analoge data gaan we dus de "mooie ronde golf" samplen. Dat wil zeggen dat we per tijdseenheid gaan kijken wat het amplitude op dat moment is. Doen we dit 15 x per seconde, dan komen we uit om een samplerate van 15Hz. Gaan we de golf dan weer reconstrueren (naar de speaker sturen) dan kunnen we 15 gegevens per seconde sturen en dus een relatief slecht geluid reproduceren.

In dit voorbeeld zie je dus dat de golf maar heel slecht gereproduceerd kan worden. Zo je die meting nu i.p.v. 15 x p/sec 44.100 x p/sec uitvoeren dan zie je dus dat je de golf veel preciezer kunt reproduceren.

Gaan we diezelfde golf 44.100 x per seconde "meten" dan kunnen we dus 44.100 x per seconde een waarde naar de speakers sturen en dus een "cd-quality" geluid reproduceren.

Maar die hoogte van de golf (amplitude) dan? Nou, dat is de resolutie in bits. Hebben we een resolutie van 8 bits, dan kunnen we het amplitude dus in 256 stapjes verdelen. We meten dus het amplitude redelijk grof. Nemen we 16 of zelfs 32 bits dan kun je het amplitude in 65.536 of zelfs meer waardes uittdukken: veel preciezer dus. Zoe je 3 bits gebruiken dan kun je dus eigenlijk alleen maar zeggen: Stil, "Normaal" en "Hard" (positieve en negatieve uitslag dus van het amplitude)


Daarom gebruikt met voor CD's dus bijvoorbeeld 44.1kHz en 16 bits. Omdat het menselijk oor maar tot ongeveer 20Khz kan horen is 44.1 meestal ruim voldoende. En 16 bits zodat de dynamiek mooi behouden blijft.

[ Voor 118% gewijzigd door RobIII op 07-01-2004 19:38 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Nee, je ziet het verkeerd. Die nullijn klopt, maar de golven zijn een grafiek met op de x-as de tijd (elk recht vlakje is een sample, analoog zou het een compleet vloeiende lijn zijn) en de y-as is de amplitude, oftewel volume van het geluid op dat moment. Elke sample heeft dus een waarde die de amplitude aangeeft, bijv. de eerste sample van links van de bovenste golf is zeg maar 10% van de maximale sterkte (ik schat maar wat). Als je nu met 16-bits sampled, dan kun je de amplitude in 65536 stapjes aangeven, deze sample zal dan dus een waarde hebben van 6554 (10% remember), dit wordt dat in twee bytes opgeslagen (8bits) en zo heb je één sample.

Met een samplefrequentie van 44100Hz, neem je dus 44100 van deze samples per seconde. Het stukje golf wat je hierboven ziet is dus maar een paar miliseconden lang ofzo. (tel de samples en je weet het precies)

Je moet je realiseren dat de samplefrequentie vast staat bij een bepaalde wav-file, dit heeft ook verder niets te maken met de inhoud van het stukje geluid dat je digitaliseert. Het heeft puur met de kwaliteit van je digitale geluid te maken, hoe meer samples (metingen) je per seconde van een analoge, perfect vloeiende golf maakt, hoe natuurgetrouwer je digitale versie van dat geluid zal klinken.
Alles wat je hier zegt snap ik en wist ik al, maar hoe word een toon van bijv. 100 Hz dan wel gerepresenteerd als wat zei (waar je op reageerde) niet klopt ?
Ik bedoel eigenlijk: een gitaarsnaar (maar ook een trompet, trommel, en eigenlijk bijna alles) begint met een scherpe aanslag, en dan sterft hij langzaam af. Tijdens dat proces verandert de klankkleur ook. Je kunt dus niet zomaar één bepaald geluid afspelen en die hard laten beginnen en dan uitfaden ofzo.
Ah. Da's idd logisch. Een geluid is in de realiteit niet absoluut, het is een momentopname van wanneer een mens vind dat het is gestart en afgelopen, en alleen de klanken die 'bij dat geluid horen' dus niet de achtergrond.
Als je werkelijk aan de slag wilt met digitaal opwekken van geluid, zou ik beginnen met te proberen een pure sinus als Wav weg te schrijven. Probeer dan of je met een input variabele de frequentie of volume in kan stellen. Dit lijkt mij al extreem moeilijk om te doen namelijk (terwijl ik best kan programmeren).
Ik zal niet zeggen dat dat simpel is, maar het is iig zo te doen en daar zijn al theorieen en code samples over te vinden hoor.

In GoldWave kan ik precies doen wat jij bedoelt, ook met die variabelen, in de Expressie-evaluator.
Als je dit bovenste in een handomdraai kan maken, dan kunnen we verder praten
Haha, tis echt niet zo moelijk hoor, wat zou er dan moelijk aan zijn ? Het wav formaat is uncompressed en er zijn zat libraries waarin je bijv direct files kan laten maken van een bepaalde sin() uitkomst.
Maar als je die 3 basisbegrippen nog niet begrijpt, dan heb je een hele lange zware weg te gaan.
Ik denk dat ik het verschil tussen die dingen prima begrijp, alleen wat nu de frequentie is en niet de amplitude is mij onduidelijk (is dat dan niet effectief hetzelfde als TheLemon gelijk heeft ?)

------Dit is dus de update:-------

De bovenstaande user heeft al heel goed de basisbegrippen uitgelegd aan me _O_.

Dat snapte ik nu ik het lees ook wel, natuurkunde van de middelbare school :).

Maar ik hoef me zo iig niet bezig te houden met die speaker-trillingen, dat doet de DSP wel (althans, die converteert het naar een analoog signaal waarmee mijn speakers/koptelefoon gemakkelijk dmv elektromagnetisme trillingen creeert).

[ Voor 8% gewijzigd door Verwijderd op 07-01-2004 19:57 . Reden: Update ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 07 januari 2004 @ 19:48:
[...]
Alles wat je hier zegt snap ik en wist ik al, maar hoe word een toon van bijv. 100 Hz dan wel gerepresenteerd als wat zei (waar je op reageerde) niet klopt ?
[...]
Ah. Da's idd logisch. Een geluid is in de realiteit niet absoluut, het is een momentopname van wanneer een mens vind dat het is gestart en afgelopen, en alleen de klanken die 'bij dat geluid horen' dus niet de achtergrond.
[...]
Ik zal niet zeggen dat dat simpel is, maar het is iig zo te doen en daar zijn al theorieen en code samples over te vinden hoor.

In GoldWave kan ik precies doen wat jij bedoelt, ook met die variabelen, in de Expressie-evaluator.
[...]
Haha, tis echt niet zo moelijk hoor, wat zou er dan moelijk aan zijn ? Het wav formaat is uncompressed en er zijn zat libraries waarin je bijv direct files kan laten maken van een bepaalde sin() uitkomst.
[...]
Ik denk dat ik het verschil tussen die dingen prima begrijp, alleen wat nu de frequentie is en niet de amplitude is mij onduidelijk (is dat dan niet effectief hetzelfde als TheLemon gelijk heeft ?)

------Dit is dus de update:-------

De bovenstaande user heeft al heel goed de basisbegrippen uitgelegd aan me _O_.

Dat snapte ik nu ik het lees ook wel, natuurkunde van de middelbare school :).

Maar ik hoef me zo iig niet bezig te houden met die speaker-trillingen, dat doet de DSP wel (althans, die converteert het naar een analoog signaal waarmee mijn speakers/koptelefoon gemakkelijk dmv elektromagnetisme trillingen creeert).
Luister, zonder al te flauw of bot te willen zijn: Neem van mij aan, gezien wat je hier laat zien over je kennis van dit gebeuren, denk ik dat je zwaar onderschat wat je te wachten staat.

Ja, wav-files zijn (meestal!) uncompressed. En ja, je kunt daar zoals je zegt "een bepaalde sin() uitkomst" in gooien ofzo. Maar behalve een zuivere toon heb je aan alleen een sin() niet genoeg. Het geluid van een instrument als een viool of een kabbelend beekje is werkelijk zo complex dat je het niet in een formule kan gooien al had je het graag. Ja, een synth weet enkele geluiden aardig te benaderen, maar je blijft horen dat het een synth is.

Ik heb, voor de gein, even een willekeurig stukje geluid (kan dus ook een kabbelend beekje zijn) voor je gepakt:

Dit is EXACT 1 seconde (stereo) geluid, dus 44.100 samples weergegeven:

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1203/geluid1.gif

Nu pak ik daar weer de helft van, dus 0.5 sec. en hebben we dus nog 22.050 samples:

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1203/geluid2.gif

...en weer de helft (11.025 samples):

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1203/geluid3.gif

...en zo "zoomen" we als het ware in totdat we 0.01 seconde geluid over houden:

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1203/geluid4.gif

Zie je nu dat je helemaal niks aan je sinus (of welke formule dan ook) hebt? Je kijkt in dit laatste figuur naar 441 samples (44100/100=441), maar kun je daar ook maar enigszins regelmaat in ontdekken? Dit is het resultaat van zoveel frequenties en amplitudes door elkaar dat je het origineel alleen maar kunt proberen te benaderen, maar je zult het "nooit" bereiken (zeg nooit nooit :P ).

Al heb je 40 jaar wiskunde geleerd, dit is niet iets wat je zomaar uit je mouw schudt...trust me!

Een filtertje bouwen dat je op "bestaand" geluid los laat is al makkelijker, maar ook dat is nog een zware dobber. Met de kennis die je hebt uit mijn vorige post zou je een volumeregeling kunnen maken (immers hoef je alleen het amplitude hoger of lager te maken), maar bijvoorbeeld een filter die alles tussen 1.000 en 2.000 Hz eruit filtert is al aardig moeilijk te schrijven. Laat staan transformaties op de data zodanig dat deze bijvoorbeeld echo't of galmt en bijvoorbeeld van ruis wordt ontdaan.

Laatste (wanhoops :P ) poging: Je moet van goed huize komen om dit (zeker in je uppie) op te willen pakken. Het is een vak op zich!

Overigens rijkt mijn kennis ook niet veel verder dan wat ik je hier allemaal vertel. Ik heb eens wat gestoeid met FFT's (Fast Fourier Transforms) maar dan heb je het gehad. Ik weet toevallig (t.o.v. een "non-nerd" ofzo) dan misschien wel iets van geluid, samples, DAC's en ADC's etc maar ik beschouw mezelf zeker niet als expert of uberhaupt gevorderd. Maar ik weet wel dat er heel wat bij komt kijken.

[ Voor 16% gewijzigd door RobIII op 08-01-2004 00:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 16:05

voodooless

Sound is no voodoo!

Alles wat je hier zegt snap ik en wist ik al, maar hoe word een toon van bijv. 100 Hz dan wel gerepresenteerd als wat zei (waar je op reageerde) niet klopt ?
Je denk nog steeds in het frequentiedomein. Waar wij het steeds over hebben is dan echt het tijdsdomein. Een 100 Hz toon word in het tijdsdomein gewoon (zoals al enkle keren uitgelegd) gerepresenteerd door een sinus van 100 Hz. Teken een sinus en zet op vaste afstanden puntjes neer (niet te weinig). Nu heb je samples gemaakt. Ieder sample heeft nu een amplitude, en die wordt opgeslagen. Niet's meer niets minder. Jij denkt zelf zeg maar op z'n mp3's ;). In bijvoorbeeld mp3 worden idd de frequentiecomponenten + volume opgelagen (met natuurlijk een heleboel agoritmes en compressie). Deze kun je door middel van (fast)fourier transformatie's omzetten in het echte geluidssignaal (tijdsdomein). Maar ook andersom werkt het. Je kunt dus ook vanuit je wav, via FFT naar het frequentiesdomein komen (voor bijvoorbeel mp3 encoding). Het frequentiedomein moet je zien (zoals ook al eerder aangegeven) als een heleboel bij elkaar opgetelde sinusgolfjes van verschillende frequenties en ampitudes. Met matlab kun je redelijk eenvoudig op en neer tussen freqentie en tijds domein.
Een filtertje bouwen dat je op "bestaand" geluid los laat is al makkelijker, maar ook dat is nog een zware dobber. Met de kennis die je hebt uit mijn vorige post zou je een volumeregeling kunnen maken (immers hoef je alleen het amplitude hoger of lager te maken), maar bijvoorbeeld een filter die alles tussen 1.000 en 2.000 Hz eruit filtert is al aardig moeilijk te schrijven. Laat staan transformaties op de data zodanig dat deze bijvoorbeeld echo't of galmt en bijvoorbeeld van ruis wordt ontdaan.
Een filter is eigenlijk redelijk eenvoudig (in matlab dan). Echter zit je dan weer in de hoek van de DSP's te kijken, en je moet (zoals ik al eerder zei) toch echt wel vertand van zaken hebben. echo en galm is idd weer een heel stuk lastiger. DSP heeft btw niets te maken met het naar analoog omzetten van het geluids (dat beweerde je eerder).

Zonder matlab zijn filters en FFT ook mogelijk, maar het wordt al heel snel lastig om bepaalde dingen snel genoeg te laten gaan (lees real time). Het is echt een heel apparte (en vaak letterlijk complexe) tak van wiskunde sport.

Ik vrees dat ik me toch ook moet aansluiten bij de mening van RobIII hierboven... Maar misschien hebben we wel allemaal ongelijk... surpise us ;)

[ Voor 15% gewijzigd door voodooless op 08-01-2004 10:10 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Om je op weg te helpen:

Bekijk deze sinus.c maar eens. (soundio.c wordt gebruikt voor het schrijven van een geluidsfile).

In sinus.c worden 10 sinustonen met verschillende frequenties gemaakt. Tussen de sinustonen zitten pauzes. Dit wordt weggeschreven naar een file sinus.wav
(Als je op een *nix systeem werkt moet je de #ifdef in soundio.c op big-endian zetten, hopelijk weet je waarom...)

sinus.c
soundio.c

Je hoort aan het begin en aan het einde van iedere sinustoon een klikje. Dat komt omdat de toon heel abrupt begint en ook heel abrupt eindigt. Dit heeft met het 'op gang brengen' van je oor te maken. Om dit te verhelpen zul je het geluid moeten infaden en uitfaden, liefst met een exponentiele envelope. Dit heeft een vorige poster ook al opgemerkt, maar zo kun je zelf horen wat er gebeurt wanneer je dit niet doet.

Succes.

Verwijderd

Topicstarter
Als FreeBSD 5.2 uit is ga ik beginnen, en ik geef maar geen commentaar meer op jullie reacties anders ben ik heel lang bezig :P.

Het komt er op neer dat ik dus weldegelijk begrijp wat jullie bedoelen maar dat ik het even bevestigd wilde zien. Veel 'vragen' poste ik en die zijn net daarvoor al beantwoord, maar dat staat ook in mijn update, als jullie goed lezen ;)...

Dat met die 'organische' geluiden (erg complex etc) zie ik ook wel in en ik streef er ook niet naar om die zomaar na te kunnen maken maar wel om een proggie te schrijven om daar mee te kunnen experimenteren.

I'll keep you posted :). Ik ben al die links aant bestuderen en de eerste resultaten post ik als ik iets in elkaar gedraaid heb.

Verwijderd

Ik ben benieuwd naar je resultaten. Misschien heb ik er nog wat aan voor mijn stage. (Ik ben bezig met het realtime berekenen van rolgeluiden op een 8-weg speakersysteem).

Topic staat gebookmarked :-)

[ Voor 51% gewijzigd door Verwijderd op 08-01-2004 14:18 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 08 januari 2004 @ 14:07:
...en ik geef maar geen commentaar meer op jullie reacties anders ben ik heel lang bezig :P.
Maar we moeten wel tijd in jou steken door je vragen te beantwoorden? Mooi hoor... :/ Daar zit ik dan een half uur voor te photosjoppen en nog eens 2x een half uur replies te typen.
Verwijderd schreef op 08 januari 2004 @ 14:17:
Ik ben benieuwd naar je resultaten. Misschien heb ik er nog wat aan voor mijn stage. (Ik ben bezig met het realtime berekenen van rolgeluiden op een 8-weg speakersysteem).

Topic staat gebookmarked :-)
Ik weet even niet wat je met rolgeluiden bedoelt, maar als je bedoelt dat je van speaker a naar b naar c "rolt" dan zit je met dit topic verkeerd. Maar correct me if i'm wrong ;)

[ Voor 54% gewijzigd door RobIII op 08-01-2004 16:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 16:05

voodooless

Sound is no voodoo!

RobIII schreef op 08 januari 2004 @ 15:57:
[...]


Maar we moeten wel tijd in jou steken door je vragen te beantwoorden? Mooi hoor... :/ Daar zit ik dan een half uur voor te photosjoppen en nog eens 2x een half uur replies te typen.
En het is wel zo leerzaam voor jezelf!

Do diamonds shine on the dark side of the moon :?


  • djazete
  • Registratie: Juli 1999
  • Laatst online: 07-02-2020

djazete

steel

zoek op google eens maar music-dsp
da's een maillinglist waar de meeste dsp guru's wel opzitten...
daarnaast the art of digital audio van john watkinson is een leuk boek over digitale audio en hun perikelen
deze meneer: http://www.hku.nl/~pieter/ weet ook vrij veel over dsp en programmeren.
een sinus van 100hz genereren is opzich volgens mij wel te doen,
je weet namelijk dat 100hz = 100 trillingen per seconden. 1 periode van de sinus duurt dus 1 100e van een seconde, 10 miliseconden.
met een samplerate (sr) van 44100 samples per seconde is 1 miliseconde dus 44,1 samples
dus 1 periode van de sinus is dan 10msx44,1 samples: 441samples, waartussen de sinus zijn ding doet...
althans, misschien maak ik nou ook een denkfout want ik vind het altijd ingewikkeld om het te vertalen naar mensen taal... maar een goede test om te kijken of ik het zelf wel snap.. (dus wie legt het me uit als ik het fout doe?)
echter, een sinus is niet echt heel interrsant om naar te luisteren, complexe geluiden synthetiseren is dus ook veel moeilijker, maar het bovenstaande legt wel uit hoe dat zit met de luister frequentie in relatie tot de samplerate geloof ik..

wat je zegt over dat synthetiseren van geluid en dat dat saaie en vlakke geluiden oplevert, da's natuurlijk niet helemaal waar, maar voor een deel wel.
(Synthesizers kunnen geweldig interresante klanken maken.) Maar om interresante complexe geluiden te maken is er altijd logica en wiskunde voor nodig, maar met bv FM synthese kan je op een best te snappen manier natuurklanken nabootsen...
dus da's wel leuk om mee te beginnen, volgens mij ook vrij simpel te implementeren (eenvoudige FM synthese dan)

deze link: http://www.hku.nl/~jorrit/ is ook leuk omte kijken
die eerste (pieter) is een software docent op school en jorrit een klankontwerp docent, dus het komt op die manier wel aardig samen met wat je wilt misschien...

succes!
(oja en filters maken enzo is weer heel andere shit, en veel ingewikkelder.. zeker om muzikaal goed klinkende filters te maken heb je behoorlijke skillz nodig en is er veel meer nodig dan inzicht in de wiskunde!)

nog even 1 ding (edit voor de 2e keer nu)
de woordlengte (of resolutie zoals het hierboven wordt gezegd) bepaald dus de luidheid van het geluid...
waarbij 1bit = 6dbfs is.
dus een cd heeft een dynamiek van 96db (16x6). echter rekenen met db's is weer een heel ander verhaal...
maar daarover staat volgens mij ook wel het een en het ander in de faq van dit forum.
maar iig, als je de sinus maakt stel hem dan niet te hard in maar maak hem bv op -30dbfs dan zit je wel safe)
dus met een amplitude van 66dbfs = 11bits
maar misschien doe ik het nu wel weer fout...
het moet bij mij atlijd even landen, dit soort dingen :+

[ Voor 54% gewijzigd door djazete op 08-01-2004 17:04 ]


Verwijderd

Topicstarter
Hahaha nou ik zeg niet dat ik geen zin heb maar jullie legden dingen uit die ik allang begreep alleen dat kwam niet over vermoed ik. Maar ok ik zal het eea verduidelijken:
Reactie op http://gathering.tweakers.net/forum/view_message/19676889

Ja dat zei ik zelf ook al dat het gewoon heel veel sinussen achter elkaar zijn. Ook zie ik wel in dat dergelijke geluiden zeer complex zijn, en bijna onmogelijk na te bootsen.
Zie je nu dat je helemaal niks aan je sinus (of welke formule dan ook) hebt?
Dat zeg ik zelf dus ook al, lees maar terug :P.
Je denk nog steeds in het frequentiedomein. Waar wij het steeds over hebben is dan echt het tijdsdomein. Een 100 Hz toon word in het tijdsdomein gewoon (zoals al enkle keren uitgelegd) gerepresenteerd door een sinus van 100 Hz. Teken een sinus en zet op vaste afstanden puntjes neer (niet te weinig). Nu heb je samples gemaakt. Ieder sample heeft nu een amplitude, en die wordt opgeslagen. Niet's meer niets minder. Jij denkt zelf zeg maar op z'n mp3's . In bijvoorbeeld mp3 worden idd de frequentiecomponenten + volume opgelagen (met natuurlijk een heleboel agoritmes en compressie). Deze kun je door middel van (fast)fourier transformatie's omzetten in het echte geluidssignaal (tijdsdomein). Maar ook andersom werkt het. Je kunt dus ook vanuit je wav, via FFT naar het frequentiesdomein komen (voor bijvoorbeel mp3 encoding). Het frequentiedomein moet je zien (zoals ook al eerder aangegeven) als een heleboel bij elkaar opgetelde sinusgolfjes van verschillende frequenties en ampitudes. Met matlab kun je redelijk eenvoudig op en neer tussen freqentie en tijds domein.
Wow, shit voor je maar dat was dus een oude vraag die reeds beantwoord was :o... Zie de update die ik had geplaatst in mijn post met oa die vraag. Ik zie nu het verschil, ff mijn geheugen opfrissen meer niet :D...
Een filter is eigenlijk redelijk eenvoudig (in matlab dan). Echter zit je dan weer in de hoek van de DSP's te kijken, en je moet (zoals ik al eerder zei) toch echt wel vertand van zaken hebben. echo en galm is idd weer een heel stuk lastiger. DSP heeft btw niets te maken met het naar analoog omzetten van het geluids (dat beweerde je eerder).
MatLab ga ik zeker aanschaffen, al was het maar om die voorbeelden van die TUE docent uit te kunnen voeren.

Ja ok, dat doet een DAC, het is iig hardware en ik zei zelf al dat dat volgens mij niks met mijn vraag te maken had maar anderen kwamen daar mee...
(Als je op een *nix systeem werkt moet je de #ifdef in soundio.c op big-endian zetten, hopelijk weet je waarom...)
Ehm x86 gebruikt toch gewoon Little Endians :? ? Waarom zou dat in Unix anders zijn ?

  • TheLemon
  • Registratie: Augustus 2001
  • Laatst online: 01-07 13:56

TheLemon

daddy cool, crazy like a fool

djazete schreef op 08 januari 2004 @ 16:57:
een sinus van 100hz genereren is opzich volgens mij wel te doen,
je weet namelijk dat 100hz = 100 trillingen per seconden. 1 periode van de sinus duurt dus 1 100e van een seconde, 10 miliseconden.
met een samplerate (sr) van 44100 samples per seconde is 1 miliseconde dus 44,1 samples
dus 1 periode van de sinus is dan 10msx44,1 samples: 441samples, waartussen de sinus zijn ding doet...
althans, misschien maak ik nou ook een denkfout want ik vind het altijd ingewikkeld om het te vertalen naar mensen taal... maar een goede test om te kijken of ik het zelf wel snap.. (dus wie legt het me uit als ik het fout doe?)
Helemal goed uitgelegd. Het (relatief) moeilijke hieraan lijkt me alleen om de waarde van die samples te bepalen. Het is wel te doen natuurlijk, je moet dan inderdaad met een beetje goniometrie aan de gang en dan nog de vertaalstap van decimaal naar binair(of hex). Wat ook wel tricky is, is dat een analoge sinus om de 0 heen slingert met - en + waarden en je met PCM audio unsigned moet werken, dus de analoge 0 is waarschijnlijk binair '1000000000000000' (uitgaande van 16 bits resolutie). De maximale top van je sinus is dan '11111111111111111' en het absolute dal is '0000000000000000'.

[ Voor 43% gewijzigd door TheLemon op 08-01-2004 17:10 ]


  • djazete
  • Registratie: Juli 1999
  • Laatst online: 07-02-2020

djazete

steel

ow dat weet ik niet maar dat hangt van het formaat af lijkt me... die 0bias offset is dat geloof ik
nou ja in principe hoeft ie trouwens helemaal niet door de 0 lijn heen te gaan zit ik me te bedenken
die drukgolf maakt ie toch wel natuurlijk..
in elk geval heeft C++ een math.h die een sin() functie kent..
als je daar nou iets mee doet....
dan ben je een heel eind :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
TheLemon schreef op 08 januari 2004 @ 17:07:
[...]

Helemal goed uitgelegd. Het (relatief) moeilijke hieraan lijkt me alleen om de waarde van die samples te bepalen. Het is wel te doen natuurlijk, je moet dan inderdaad met een beetje goniometrie aan de gang en dan nog de vertaalstap van decimaal naar binair(of hex). Wat ook wel tricky is, is dat een analoge sinus om de 0 heen slingert met - en + waarden en je met PCM audio unsigned moet werken, dus de analoge 0 is waarschijnlijk binair '1000000000000000' (uitgaande van 16 bits resolutie). De maximale top van je sinus is dan '11111111111111111' en het absolute dal is '0000000000000000'.
Ik snap nou nooit waarom iemand als het over programmeren heeft opeens met bits gaat gooien. Je hoeft niet in 1-en en 0-en te tellen om 5+5 op te laten tellen door een pc hoor! Hoezo zou je naar hex of bin moeten omrekenen als je in een decimaal stelsel ook kan rekenen? Je compiler/interpreter whatever vreet gewoon decimail/hex/octaal/binair whatever en ook die bekommert zich niet echt om een "conversie" naar 0-en en 1-en...

De sample waarde 74 kun je dus ook gewoon als 74 opslaan. Dat het uiteindelijk op je HD of in je geheugen een bult enen en nullen is ok, maar daar hoef je zelf niks voor te doen hoor...

Of begrijp ik je post nou verkeerd (zeg me dat het zo is... :P )

Overigens, als we toch binair gaan praten, dan is de afspraak dat de meest linkse bit (MSB = Most Significant Bit) aangeeft of het getal positief is of negatief mits je uberhaupt een signed type gebruikt, anders kun je niet eens aangeven of een getal positief of negatief is...

[ Voor 43% gewijzigd door RobIII op 31-08-2004 10:26 . Reden: Least significant veranderd in Most significatnt natuurlijk! 8)7 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • djazete
  • Registratie: Juli 1999
  • Laatst online: 07-02-2020

djazete

steel

oja, grappig:
http://musicdsp.org/archive.php?classid=1#161
(sinus generator C++ code, en vele andere voorbeelden!)[quote]RobIII schreef op 08 januari 2004 @ 17:17:
[...]

Ik snap nou nooit waarom iemand als het over programmeren heeft opeens met bits gaat gooien. Je hoeft niet in 1-en en 0-en te tellen om 5+5 op te laten tellen door een pc hoor! [/qupte]
Dat komt omdat we het over DSP hebben en dan is het soms heel begrijpelijk om het zo te vertalen..om het te doorgronden!

[ Voor 64% gewijzigd door djazete op 08-01-2004 17:24 ]


  • djazete
  • Registratie: Juli 1999
  • Laatst online: 07-02-2020

djazete

steel

oja, grappig:
http://musicdsp.org/archive.php?classid=1#161
(sinus generator C++ code, en vele andere voorbeelden!)
RobIII schreef op 08 januari 2004 @ 17:17:
[...]

Ik snap nou nooit waarom iemand als het over programmeren heeft opeens met bits gaat gooien. Je hoeft niet in 1-en en 0-en te tellen om 5+5 op te laten tellen door een pc hoor!
Dat komt omdat we het over DSP hebben en dan is het soms heel begrijpelijk om het zo te vertalen..om het te doorgronden!

[ Voor 10% gewijzigd door djazete op 08-01-2004 17:26 ]


  • Mike Jarod
  • Registratie: Januari 2002
  • Niet online
Ik heb niet dit hele topic doorgenomen maar ik zie veel technische posts over hoe geluid wiskundig gezien in elkaar zit. Dat was volgens mij niet echt de vraag van de TS.

@TS: op zich mis ik niks in de software die ik gebruik (Cubase SX + plugins), maar als je dan toch aan de slag wilt gaan, waarom maak je geen VST synthesizer? Ik wil daar best wel patches voor maken, mijn kennis van analoge synthese is best redelijk en dan leer ik ook weer wat. Het technische deel laat ik maar aan jou over ;).

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
djazete schreef op 08 januari 2004 @ 17:24:
Dat komt omdat we het over DSP hebben en dan is het soms heel begrijpelijk om het zo te vertalen..om het te doorgronden!
Wat heeft dat er nou weer mee te maken? Dat de DSP (en een CPU en je geheugen en whatever) uiteindelijk een bult nullen en enen opslaat is wiedes, maar waarom zou je in 0101011 gaan zitten rekenen voor een DSP? Je software gaat toch niet zitten "omrekenen"? Dat is nergens voor nodig, want het ZIJN al nullen en enen...Alleen in je source niet, om het leesbaarder te houden voor mensen.

en op de keeper beschouwd is je source natuurlijk ook een bult nullen en enen :)
Mike Jarod schreef op 08 januari 2004 @ 17:28:
Ik heb niet dit hele topic doorgenomen maar ik zie veel technische posts over hoe geluid wiskundig gezien in elkaar zit. Dat was volgens mij niet echt de vraag van de TS.
Indirect was de vraag hoe geluid in elkaar zit ja, want TS had (volgens zeggen :) ) een geheugenopfrissertje nodig over wat resolutie, frequentie, amplitude etc zijn. En vervolgens wil TS geluid gaan genereren in zelf te schrijven software en dan komt er dus wel degelijk een bult wiskunde bij kijken.

[ Voor 30% gewijzigd door RobIII op 08-01-2004 17:31 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ik snap nou nooit waarom iemand als het over programmeren heeft opeens met bits gaat gooien. Je hoeft niet in 1-en en 0-en te tellen om 5+5 op te laten tellen door een pc hoor! Hoezo zou je naar hex of bin moeten omrekenen als je in een decimaal stelsen ook kan rekenen? Je compiler/interpreter whatever vreet gewoon decimail/hex/octaal/binair whatever en ook die bekommert zich niet echt om een "conversie" naar 0-en en 1-en...
Wat dacht je van bit-shifts ?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 08 januari 2004 @ 17:30:
[...]
Wat dacht je van bit-shifts ?
Ja, moet ik nou ook nog gaan uitleggen wat programmeren in houdt?

Je kunt 74 gewoon bitshiften hoor! Dat het intern door je CPU uiteindelijk wordt begrepen en die bits gaat shiften wil niet zeggen dat je als programmeur in 1-en en nullen moet gaan zitten rekenen.

Overigens een voorbeeld:

Pseudo code: BSL(74,1) Bit Shift Left, 1 bit naar links schuiven

geeft gewoon: 148.

Waarom?

74 = 01001010 en dan 1 naar links geeft: 10010100 = 148.

Maar als programmeur kan ik dus gewoon de parameter 74 geven.

Ga ik binnen een byte de waarde 74 2 bits naar links schuiven dan krijg ik: 40. Waarom?

74 = 01001010 en dan 2 naar links geeft: 00101000 = 40. De meest linkse bit valt er dus af omdat 'ie niet meer past in diezelfde byte. Ga ik diezelfde waarde schuiven binnen een word dan krijg ik:

74 = 0000000001001010 en dan 2 naar links geeft: 0000000100101000 = 296.

Maar nogmaals, die enen en nullen hoef ik als programmeur dus nooit te zien. Ik zou als programmeur gewoon de code: BSL(74,1) of BSL(74,2) opgeven...

Maar da's way offtopic :P

[ Voor 37% gewijzigd door RobIII op 08-01-2004 17:39 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Natuurlijk hoef je me dat niet uit te leggen. Je hebt gelijk dat de compiler alles voor je doet, maar enig begrip is toch wel gewenst bij complexe zaken als deze...

Het kan ja, maar hoe wil je zonder naar het bit-niveau te kijken kunnen bepalen of en zo ja wat voor shifts ed je uit gaat voeren ?

  • djazete
  • Registratie: Juli 1999
  • Laatst online: 07-02-2020

djazete

steel

ja maar om efficiente dsp code te maken en omdat digitaal geluid erg moeilijk te bevatting is als getal heeft het soms zin om terug te rekenen naar bits en bytes!
je kunt dat uiteraard ook gewoon weer loslaten maar aangezien we het het hier hebben over de basis van digitale audio hebben we het dus wél over bits en bytes en was de opmerking van thelemon zo gek nog niet...
omdat je namelijk wil weten waar de 0 lijn van de sinus loopt, die is niet 0 in decimale waarde maar misschien wel 30 of 16 en wat dat dan in bits is.. ach..

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 08 januari 2004 @ 17:38:
Het kan ja, maar hoe wil je zonder naar het bit-niveau te kijken kunnen bepalen of en zo ja wat voor shifts ed je uit gaat voeren ?
Heb je enige programmeerervaring? Hoe "diep" is je kennis?

Wil ik weten of de meest rechtse bit is geset, dan AND ik die waarde met 1. Wil ik weten of de 4e bit van rechts is gezet dan AND ik die waarde met 8. En wil ik weten of bits 2 en 5 van rechts zijn gezet dan AND ik met 18. En uiteraard moet de "uitkomst" dan gelijk zijn aan het getal waarmee ik heb ge-AND.
djazete schreef op 08 januari 2004 @ 17:40:
omdat je namelijk wil weten waar de 0 lijn van de sinus loopt, die is niet 0 in decimale waarde maar misschien wel 30 of 16 en wat dat dan in bits is.. ach..
En voor jou dezelfde vragen als voor Cybarite: Heb je enige programmeerervaring? Hoe "diep" is je kennis?

Ja de 0-lijn loopt wel degelijk op 0. Als je met signed-types werkt loopt je byte van -128 tot +127 (en dus niet van 0-255!!!) en zit je nullijn dus wel degelijk op de waarde 0. Werk je met een word dan lopen de "meetwaarden" dus uiteen van -32768 tot +32767 (en dus niet van 0-65535). Dus weer ligt de nullijn op 0.

Maar, nogmaals, we gaan way offtopic.

[ Voor 64% gewijzigd door RobIII op 08-01-2004 17:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • djazete
  • Registratie: Juli 1999
  • Laatst online: 07-02-2020

djazete

steel

ja jij zegt dat nou wel dat die 0 lijn van de sinus op 0 ligt, maar dat hoeft dus niet zo te zijn....want digitale audio heeft geen negatieve waarden...
dus, hoe vertaal je dan de sinus grafiek uit je natuurkunde boek naar digitale audio... (waarbij de 0 lijn neutraal is en alles beneden de 0 lijn negatief)
(ow en ja ik heb wel enig eprogarmmeer ervaring... niet super veelin C++ maar kehb wel eens wat plugins geschreven (vst plugins, dsp & c++ maar daar benik niet goed in) dus ik weet wel wat signed en unsigned is natuurlijk....)

[ Voor 78% gewijzigd door djazete op 08-01-2004 17:49 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
djazete schreef op 08 januari 2004 @ 17:46:
ja jij zegt dat nou wel dat die 0 lijn van de sinus op 0 ligt, maar dat hoeft dus niet zo te zijn....
Zucht... Ik geef het op....

De nullijn van de sinus kan inderdaad op een ander punt liggen, maar dan heeft 'ie dus gewoon een offset/bias whatever... En daar gaat het nu al helemaal niet over...

Echt, ik kap hiermee. Kunnen we weer on-topic?

[ Voor 4% gewijzigd door RobIII op 08-01-2004 17:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ik heb natuurlijk programmeerervaring, in diverse talen, waaronder assembly.

Dat AND'en is in feite al berekenen. Ik heb het over shifts, dus SHR en SHL. Natuurlijk kan je de decimale waarde van bijv. ECX dmv een calculator SHR'en met bijv. EDX, maar dan gebruik je al hulpmiddelen.

Als je gewoon begrip wilt hebben van waar je mee bezig bent, lijkt het mij evident dat je de nodige kennis van binaire getallen moet hebben.

Maar in normale situaties en bij high-level talen als C is dat over het algemeen niet nodig nee, maar ik bepleit ook niet dat dat van groot belang is oid.

Was gewoon een opmerking om je duidelijk te maken dat decimaal rekenen ook niet altijd afdoende en perfect is, wat je wel min of meer suggereerde.

Maar nu weer ontopic idd :).

Ik raad iedereen aan om op de TUE-docent page die iemand al eerder noemde te kijken als je deze interessante discussie wilt volgen :).

  • djazete
  • Registratie: Juli 1999
  • Laatst online: 07-02-2020

djazete

steel

RobIII schreef op 08 januari 2004 @ 17:47:
[...]

Zucht... Ik geef het op....

De nullijn van de sinus kan inderdaad op een ander punt liggen, maar dan heeft 'ie dus gewoon een offset/bias whatever... En daar gaat het nu al helemaal niet over...

Echt, ik kap hiermee. Kunnen we weer on-topic?
err, daar ging het dus WEL over...
alleen dat wilde jij niet weten omdat je zoiets hebt van, "hej bits en programmeren: onzin want het nivo van je prog taal denkt hoger dus is er geen reden om in bits te denken..."
dát vond ik wat kort door de bocht en ik probeer dus uit te leggen dat voor DSP díe vertaalslag soms wél handig is en ik probeer dus duidelijk te maken dat de dc offset/bias dus op een decimaal ander punt ligt in die 16bits dan op de absolute 0...blub!

[ Voor 3% gewijzigd door djazete op 08-01-2004 18:03 ]


Verwijderd

Topicstarter
Dat is nu wel duidelijk djazete, er was een beetje een misverstand : jij wil zeggen dat bits wel degelijk van belang zijn, en RobIII dat dat tegenwoordig in de praktijk niet meer nodig is.

Het gaat niet om het einde van de wereld hoor, aub niet discussieren over triviale aspecten aan het hedendaagse programmeren.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 16:05

voodooless

Sound is no voodoo!

Gezellig een avondje moddergooien zeg :P

Ik ga ook dan maar ff medoen. Helaas (of niet) moet ik RobIII toch ondersteunen met zijn mening. Als je DSP programmeerd, of whatever met geluid doet, heb je echt niet zo veel bitmanipulaties nodig. Tuurlijk is het handig als je ervan af weet, maar nodig zul je ze niet persee hebben. Docenten op de uni bij mij hebben er zelf een grote hekele ;). Ze vinden het lelijk, tja, en als ex HBO'er ben je het gewoon gewend ;). Zelf vind ik het af en toe toch nog wel handig om te gebruiken btw.

Nog ff over signed, unsigned, bias en andere bit shit. Jongen (en meisjes)... waar maken jullie je zo druk over? Doe wat je zelf leuk vind. Als je het uiteindelijk maar weer omgezet krijgt in een fomaat dat je kunt afspelen. Vaak worden ook floats gebruikt bijvoorbeeld, en als je veel rekend naar voorkeur 64 bit's, zodat je niet te veel rekenonnaukeurigheden meesleept.

Do diamonds shine on the dark side of the moon :?


  • TheLemon
  • Registratie: Augustus 2001
  • Laatst online: 01-07 13:56

TheLemon

daddy cool, crazy like a fool

Lol wat een discussie. Ik (for one) heb in ieder geval niet heel veel programmeerervaring om Rob maar ff voor te zijn ;)

Als ik lekker aan het rekenen ben in één of ander progsel hoef ik gelukkig niet alles met Boleaanse logica te doen nee.
Waarom ik de bits erbij haalde is om het feit dat mensen uit de audio-wereld (zoals Djazete) in het beginsel weinig met pc's te maken hebben en dus niet automatisch omrekenen naar hex of signed/unsigned of wat je maar wil.
Digitale audio (bijv. CDDA) schrijft data in Words en niet in Bytes. En als je digitale audio als bestand wilt wegschrijven is het wel handig als je je aan standaards houdt die in de audiowereld gelden. Het maakt dus wel degelijk uit hoe je je Wav wegschrijft.
Tuurlijk, als je je eigen formaat maakt en daar ook een speler bij bouwt mag je doen wat je wilt, maar om te voorkomen dat anderen met jouw Wav alleen maar een bak digitale clipping om zijn oren krijgen is het handig om uit te zoeken hoe de standaard precies gedefinieerd is. En deze discussie is op zich best ontopic, want ik neem aan dat de ts iets wil bouwen waar anderen misschien ook iets mee kunnen.

En aan de TS: dat je al die relatief simpele dingen als een sinus genereren met variabele frequentie en amplitude wel al kan met Goldwave of weet ik wat, tsja...dat begrijpen we, dat konden ze 100 jaar geleden al wel met een kristal en wat buizen. Maar ik dacht dat je zelf wat wilde schrijven, from scratch dus.

Verwijderd

Topicstarter
@deepspace:
Gelukkig zeg ik dat ook niet, en volgens mij djazete ook niet :).

RobIII wekte de discussie op door te zeggen dat hij niet begreep waarom djazete nu weer over bits begon.

Natuurlijk zit daar een kern van waarheid in, maar het is idd wat kort door de bocht om te stellen dat dat onzin is (wat RobIII overigens vast niet doet).

Het beste lijkt het mij iig om daar nu over op te houden. Wat jij nu vertelt is een herhaling van zetten, we kennen de argumenten nu wel.

Over je laatste alinea: heb je gelijk in, dat vertroebeld de discussie alleen maar en is DSP stuff die offtopic is (voorlopig).

Over de titel: de conclusie is eigenlijk dat mensen als DJ's liever met hardware werken omdat ze dat makkelijker real-time kunnen bedienen (ipv al die knopjes op een scherm in software), en omdat software soms nog last heeft van latencies/instabiliteit/etc, alhoewel dat tegenwoordig natuurlijk steeds verder verbeterd word.

De titel dekt momenteel niet echt meer de lading, zoals je nu wel kunt zien, maar deze conclusie is ff om het een beetje on-topic te houden zodat we iig de orginele vraagstelling al (gedeeltelijk) hebben beantwoord en dit topic (mede door mijn schuld natuurlijk...) niet een eigen leven gaat leiden.

Dan kunnen we nu weer terug naar waar we uiteindelijk op zijn gekomen: de wetenschappelijke naam is dus audiosynthese, wat precies is wat ik bedoel.

Kort samengevat : "Het creeren van *niet* artificieel lijkende geluiden (dus niet sine waves ed, synthesizers, muziek/drumloops, enz enz) ookwel organische geluiden genoemd, door middel van een programma dat deze generereert door wiskunde berekeningen en user input."

@TheLemon:
Ja, ik maak iets waar anderen ook wat aan hebben, en ik verwacht echt niks ofzo hoor ! Mensen kunnen mij meehelpen, wat de reden is dat ik dit topic voor wil blijven zetten. Ik kan proggen wat ik wil, maar ik wil graag jullie mening over bepaalde fenomenen horen die ik (mogelijk) tegenkom tijdens het ontwikkelen van het programmaatje.

[ Voor 10% gewijzigd door Verwijderd op 08-01-2004 19:48 . Reden: typo's/update ]


  • djazete
  • Registratie: Juli 1999
  • Laatst online: 07-02-2020

djazete

steel

wat wel leuk is is een goeie simpele granulaire synthesizer.. die zijn er ook alvast maar ik ben nog niks tegen gekomen die ik echt eenvoudig en koel vind om mee te spelen...
audioease had er eens eentje, kweet niet of ze die nu nog hebben, maar die had maar een paar knoppen maar leverde veel plezier op...
dát vind ik wel leuk...
ik vind sowieso dat je iets moet maken waar bij je niet voor elke parameter een knop moet hebben als gebruiker, maar dat het intuitief, als instrument of creatieve tool, makkelijk te bedienen is..
als je zoiets bouwt in een VST jasje dan zijn er vast veel mensen die dat leuk vinden...
(ik neem aan dat je google wel kent en daar je weg wel weet te vinden om uit te zoeken wat granulaire synthese nou precies is :p)

Verwijderd

Topicstarter
Darthelvis ik heb je c file ff bekeken en het is een nogal ondoorzichtige loop maar als je teruggaat naar de essentie is het toch niet moelijk ?

Ik ben echt benieuwd welke zaken jou precies (super-)moeilijk lijken in deze, en ben vooral geinteresseerd in wat jij (of een ander) zei over dat bepaalde frequenties niet altijd logisch gedrag vertonen, als je bijv. 2 sinustonen laat horen naast elkaar oid...

de c file maar dan wat leesbaarder:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <math.h>
#include <stdio.h>

#define TWO_PI 6.28318530718
#define SRATE 44100

#include "soundio.c"

#define PEAKMAX 6000
#define FILENAME "sinus2"

void main()
{
    long i, j, k, m;
    double temp;
    double freqs[10] = {500, 490, 480, 470, 460, 450, 440, 430, 420, 410};
    short data[512];

    soundOpen(FILENAME);
    for (i = 0; i < 10; i++)  
    {
        m = 0;

        for (j = 0; j < 200; j++)     
        {
            for (k = 0; k < 256; k++, m++)   
        {
                temp = sin(m * TWO_PI * freqs[i] / SRATE);
                data[k] = 16000 * temp;
            }
            soundBuff(256, data);
        }

        for (k = 0; k < 256; k++)  
      {
            data[k] = 0;
        }

        for (j = 0; j < 16; j++)
            soundBuff(256, data);
    }
    soundClose();

    exit(0);
}

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 16:05

voodooless

Sound is no voodoo!

Ik zou zeggen ga zelf luisteren... Pas het proggie aan zodat je meerder sinusen door elkaar hoort, i.p.v achter elkaar. Dat is toch al wat interessanter. Dat doe je door gewoon de dingen op te tellen. In ieder geval kun je met je huidige proggie een telefoonnummer draaien als je dat wil. Verder kun je natuurlijk ook nog ff een amplitude regeling inbouwen (sinus met constante vermenigvuldigen).

[ Voor 41% gewijzigd door voodooless op 08-01-2004 22:09 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Ik moet eerst GCC hebben (ja kan ook onder Windoze, maar daar ga ik niet aan beginnen, is zo vervuild) -edit- Ik ben aan het wachten op FreeBSD 5.2 want mijn BSD sys ligt in puin momenteel dus ik moet nog een clean install doen.

Maar ik ben in een file al die code aan aant passen ik zie immers wat ik kan doen, hoef ik niet voor te testen voorlopig.

Ik ben ff alle stof van http://www.hku.nl/~jorrit/ aan het doorlezen :P...

Maar natuurlijk gaat dit lang duren he, niemand stampt al die stuff binnen een week in z'n hoofd.

[ Voor 14% gewijzigd door Verwijderd op 08-01-2004 22:41 ]


Verwijderd

Verwijderd schreef op 08 januari 2004 @ 21:59:
Darthelvis ik heb je c file ff bekeken en het is een nogal ondoorzichtige loop maar als je teruggaat naar de essentie is het toch niet moelijk ?

Ik ben echt benieuwd welke zaken jou precies (super-)moeilijk lijken in deze, en ben vooral geinteresseerd in wat jij (of een ander) zei over dat bepaalde frequenties niet altijd logisch gedrag vertonen, als je bijv. 2 sinustonen laat horen naast elkaar oid...

de c file maar dan wat leesbaarder:
[.....]
Nou, die C file heb ik ook maar uit een boek hoor... En daar staan niet echt moeilijke dingen in, maar dan heb je vast een simpel voorbeeld hoe je een sinus sampled en dat wegschrijft naar een wave-file. Hier kun je dus alle geluiden die je wil mee wegschrijven, maar dan moet je ze wel eerst zelf maken.

De file maakt 10 tonen (frequenties staan in de array 'freqs'). Probeer bijv. bij iedere toon een sinus van 450Hz op te tellen en luister wat er gebeurt.
Het is lastig uit te leggen, het is het makkelijkste om het te horen.

[ Voor 4% gewijzigd door Verwijderd op 09-01-2004 12:06 ]


Verwijderd

Topicstarter
Ik heb me bedacht dat ik maar in Knoppix ga werken, kan ik ook cc doen toch ?
FreeBSD 5.2 rockt maar ja dat komt nog "ergens" in Januari uit...

Ik heb ondertussen al heel wat theorie geleerd :P

Project pending :)
LOL as we speak word FreeBSD 5.2 gereleased :D :D

[ Voor 14% gewijzigd door Verwijderd op 10-01-2004 22:12 ]

Pagina: 1