Jump to content
Annons

Recommended Posts

Postat

Hej!

Jag skulle vilja se en funktion hos sequencerprogram där det från händelselistan med MIDI-data, går att importera och exportera MIDI-data som en textfil för redigering i en vanlig text editor.

Med vänlig hälsning!

Peter

Annons
Postat

Öhh...? Jag förstår inte poängen men det går ju att öppna en midifil med t.ex UltraEdit. Visserligen får man HEX data men den är fullt editerbar.... annars är det ju bara att döpa om från .MID till .TXT och ... 😲

Postat (redigerat)

lilypond är ett fritt och ytterst avancerat notationsprogram där man skriver in text.

programmet omvandlar sedan textfilen till noter eller midi.

midifilen går ju sen importera i ditt daw...

edit: http://lilypond.org/web/

Redigerat av spass
Postat

Poängen med detta är att jag vill kunna jobba med midi-data i en vanlig text editor, i ett läsbart filformat. Jag är väldigt intresserad av algoritmisk komposition, och det är lättare för mig att skriva en enkelt program som genererar en textfil än en midifil.

Lilypond är en programvara för att skapa notation, men den stödjer knappast midi i någon större ytsträckning (timing, velocity etc).

Dessutom är det flexibelt att kunna jobba med midi-data i vilken programvara man vill - även utanför sequencerprogrammets gränssnitt.

Med vänlig hälsning!

Peter

Postat
  PeterF sa:
Poängen med detta är att jag vill kunna jobba med midi-data i en vanlig text editor, i ett läsbart filformat. Jag är väldigt intresserad av algoritmisk komposition, och det är lättare för mig att skriva en enkelt program som genererar en textfil än en midifil.

Lilypond är en programvara för att skapa notation, men den stödjer knappast midi i någon större ytsträckning (timing, velocity etc).

Dessutom är det flexibelt att kunna jobba med midi-data i vilken programvara man vill - även utanför sequencerprogrammets gränssnitt.

Med vänlig hälsning!

Peter

Jag har gjort en midiparser om du är intresserad. Dock i flash, men det är AS3.0 så det går att porta till java eller c++ utan problem.

Postat

Ja, det finns en hel del midi kompilatorer för DOS-miljö (men ingen för grafiskt Windows), och jag har testat båda två. Men varför finns inte en sån funktion inbyggd i sequencer-programmen? Är det bara för att låsa fast användaren i programmets gränssnitt? Och varför finns inte kraftfulla macrospråk med motsvarande funktion i sequencers - som det gör i ordbehandlare?

Med vänlig hälsning!

Peter

Postat
  PeterF sa:
Ja, det finns en hel del midi kompilatorer för DOS-miljö (men ingen för grafiskt Windows), och jag har testat båda två. Men varför finns inte en sån funktion inbyggd i sequencer-programmen? Är det bara för att låsa fast användaren i programmets gränssnitt? Och varför finns inte kraftfulla macrospråk med motsvarande funktion i sequencers - som det gör i ordbehandlare?

Med vänlig hälsning!

Peter

I vilket programspråk kodar du? Det finns mängder med API/Frameworks för MIDI som är OpenSource. Och att skapa en midifil är inte speciellt krångligt annars. Googla lite så får du specar på strukturen, jag byggde en .mid-läsare på en dag (och det skulle gå smidigare att skapa en mid då man inte behöver ta hänsyn till dom olika formaten och all meta). Mitt tips är att du skippar textformat och istället använder dig av XML; skapar en XML-->MID (om det nu redan inte finns??? borde det göra) som du integrerar i din applikation. Sedan importerar du .mid-filen i valfri daw.

Postat

Jag vet inte vilket programspråk jag ska välja - helst ett rent objektorienterat språk med inbyggd minneshantering. Nackdelen med Java-program är dock att dessa är svårare att installera än en vanlig exe-fil i Windows.

Jag vet hur strukturen hos midifiler ser ut, och jag har vissa idéer om hur jag ska göra om det nu går så långt, så jag bestämmer mig för att göra ett eget klassbibliotek för detta. Jag funderar på att göra en klass "chunk" som i sin tur har en metod add_byte, som lägger till tecken till datablocket/strängen. Klasserna "header" och "track" ärver egenskaperna från "chunk", och klassen "track" har också metoder för att lägga till olika typer av midi-events. Sedan har jag också tänkt mig en klass "midifile", som är en vektor för datatypen "chunk". Klassen "midifile" har en metod, som skriver ut mididata till en fil.

Det som kan vara krångligt med midi-strukturen är data för chunk_length och deltatime, och att koda hanteringen av detta riktigt. Divisionen för att räkna ut tempot kan säkert också strula på grund av avrundningsfel/datatypfel.

Till detta måste också läggas en klass för sortering av midi-data som sorterar indata med avseende på time och gör om detta och note_duration till note_on och note_off-meddelanden.

Om XML ska användas behövs också ett färdigt klassbibliotek/gränssnitt som hanterar detta (SAX eller DOM).

Vi får se om jag gör detta eller om jag hittar en bättre/enklare lösning ...

Med vänlig hälsning!

Peter

Postat
  PeterF sa:
Jag vet inte vilket programspråk jag ska välja - helst ett rent objektorienterat språk med inbyggd minneshantering. Nackdelen med Java-program är dock att dessa är svårare att installera än en vanlig exe-fil i Windows.

Jag vet hur strukturen hos midifiler ser ut, och jag har vissa idéer om hur jag ska göra om det nu går så långt, så jag bestämmer mig för att göra ett eget klassbibliotek för detta. Jag funderar på att göra en klass "chunk" som i sin tur har en metod add_byte, som lägger till tecken till datablocket/strängen. Klasserna "header" och "track" ärver egenskaperna från "chunk", och klassen "track" har också metoder för att lägga till olika typer av midi-events. Sedan har jag också tänkt mig en klass "midifile", som är en vektor för datatypen "chunk". Klassen "midifile" har en metod, som skriver ut mididata till en fil.

Det som kan vara krångligt med midi-strukturen är data för chunk_length och deltatime, och att koda hanteringen av detta riktigt. Divisionen för att räkna ut tempot kan säkert också strula på grund av avrundningsfel/datatypfel.

Till detta måste också läggas en klass för sortering av midi-data som sorterar indata med avseende på time och gör om detta och note_duration till note_on och note_off-meddelanden.

Om XML ska användas behövs också ett färdigt klassbibliotek/gränssnitt som hanterar detta (SAX eller DOM).

Vi får se om jag gör detta eller om jag hittar en bättre/enklare lösning ...

Med vänlig hälsning!

Peter

Detdär med division och deltatime är ju bara att följa strukturen. Bestäm dig för ett synkformat och kör på det, moderna daws brukar jobba lika många ticks per sekund som ljudkortets samplerate så det blir helt i synk med resten av ljudmotorn. Tänk i bits och bytes istället för short, int och long. Du kommer få meka en hel del med logiska operationer och bitshifts och sånt där men det är ju bara skoj 🙂

Har du nån nytta av min midiparser så skicka ett PM, du får gärna titta på koden där och även om den tvärt om vad du ska göra så borde det gå relativt smidigt att vända på allt och göra baklänges.

Avrundningsproblem kommer du alltid få oavsett, det enda som är viktigt är att du beräknar positioner från en fast punkt hela tiden. Har du 44100 ticks per sekund kommer det inte spela så stor roll om den avrundar ett tick fel.

Postat

Jag har faktiskt aldrig använt bitoperatorerna tidigare - och visst ska jag jobba med datatypen byte. Hela klassen "chunk" som jag beskrivit tidigare består ju av en vektor med datatypen byte.

Tack så mycket för hjälpen!

Med vänlig hälsning!

Peter

Bli medlem (kostnadsfritt) eller logga in för att kommentera

Du behöver vara medlem för att delta i communityn

Bli medlem (kostnadsfritt)

Bli medlem kostnadsfritt i vår community genom att registrera dig. Det är enkelt och kostar inget!

Bli medlem nu (kostnadsfritt)

Logga in

Har du redan en inloggning?
Logga in här.

Logga in nu
×
×
  • Skapa ny...

Viktig information om kakor (cookies)

Vi har placerat några kakor på din enhet för att du bättre ska kunna använda den här sajten. Läs vår kakpolicy och om hur du kan ändra inställningar. Annars utgår vi från att du är bekväm med att fortsätta.