strum Posted November 5, 2024 Posted November 5, 2024 Hello, I'm trying generate midi to play Amplesound guitars where each midi event is on a channel per string basis. 1st string is midi channel 1, 2nd string midi channel 2. I tried doing it the way I pasted below, but the midi ends up being 6 instruments rather than 1 instrument with notes on 6 channels. So that doesn't work. Is there a way to have articulations for notes, translate into a midi channel? Or any other ideas? (setf 1-string '(-h e4)) (setf 2-string '(-eq q c4 eq c4)) (setf 3-string '(-q h g3 q g3)) (setf 4-string '(-e qh e3 e e3)) (setf 5-string '(q. c3 f e c3 p h c3 f)) (setf 6-string '(-w)) (def-score chordio (:title "C Chord" :key-signature '(c major) :time-signature (get-time-signature 6-string :group :auto) :tempo 84) (6s :omn 6-string :channel 6) (5s :omn 5-string :channel 5) (4s :omn 4-string :channel 4) (3s :omn 3-string :channel 3) (2s :omn 2-string :channel 2) (1s :omn 1-string :channel 1) ) ;write to midi file (compile-score *last-score* :output :midi :file "/Users/me/desktop/foo.mid" ) Quote
strum Posted November 6, 2024 Author Posted November 6, 2024 so this generates a file of Standard MIDI data (format 1) using 7 tracks. Is it possible to generate (format 0) file ? Quote
opmo Posted November 6, 2024 Posted November 6, 2024 MIDI Type 1 is generally preferred for compositional work, especially in software environments or for complex arrangements. Its structure facilitates easier editing and clearer organisation of parts, which is valuable for both composers and performers who need to make adjustments. Consequently, there was no compelling reason for Opusmodus to implement support for MIDI Type 0 format. Quote
strum Posted November 7, 2024 Author Posted November 7, 2024 The problem with Midi Type 1 is that it is 1 midi channel per track. Modern midi like MPE use multiple midi channels per track. I have a Linnstrument and a Jamstik... Both of these instruments send out multiple channels of midi intended for 1 instrument or 1 track. Most software instruments these days can receive either MPE or multiple midi channels to one instrument, like Ampleguitars I mentioned earlier. I was writing out the midi file so I could import it into Cubase to be imported onto one track... I've figured out how to convert type 1 to type 0, so I can do it now, and not end up with 7 tracks when I import the midi. But my approach in Opusmodus to generate this midi for one instrument seems very convoluted and forced. I'm basically pretending 1 guitar instrument is 6 instruments. I'm hoping I can do this with articulations on the notes, rather than the convoluted approach above... if you see my other post, I ask about this. I want to do composition triggering these types of multi-channel instruments, where Opusmodus seems tied to one channel per instrument.. If I can't do this with Opusmodus, that is fine and I understand, but I would like to know one way or the other.. Quote
Stephane Boussuge Posted November 7, 2024 Posted November 7, 2024 May be you can try something like this: ;;;--------------------------------------------------------- ;;; Parameters ;; CH for Channel (add-program-attributes '(ch1) '(ch2) '(ch3) '(ch4) '(ch5) '(ch6) ) (setf melo '((q c4 ch1 d4 ch2 e4 ch3 f4 ch4)(q g4 ch5 h. a4 ch6))) (setf channel1 (filter-events 'ch1 melo)) (setf channel2 (filter-events 'ch2 melo)) (setf channel3 (filter-events 'ch3 melo)) (setf channel4 (filter-events 'ch4 melo)) (setf channel5 (filter-events 'ch5 melo)) (setf channel6 (filter-events 'ch6 melo)) ;;;--------------------------------------------------------- ;;; Score and Layout (def-score guitar (:title "Title" :composer "Composer Name" :copyright "Copyright © " :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 100 :octave-shift '(c3 c6) :layout (guitar-down8-layout '(guitar1 guitar2 guitar3 guitar4 guitar5 guitar6)) ) (guitar1 :omn channel1 :channel 1 :sound 'gm :program 'acoustic-guitar-steel :volume 100 :pan 64 :controllers (91 '(60)) ) (guitar2 :omn channel2 :channel 2 :sound 'gm :program 'acoustic-guitar-steel :volume 100 :pan 64 :controllers (91 '(60)) ) (guitar3 :omn channel3 :channel 3 :sound 'gm :program 'acoustic-guitar-steel :volume 100 :pan 64 :controllers (91 '(60)) ) (guitar4 :omn channel4 :channel 4 :sound 'gm :program 'acoustic-guitar-steel :volume 100 :pan 64 :controllers (91 '(60)) ) (guitar5 :omn channel5 :channel 5 :sound 'gm :program 'acoustic-guitar-steel :volume 100 :pan 64 :controllers (91 '(60)) ) (guitar6 :omn channel6 :channel 6 :sound 'gm :program 'acoustic-guitar-steel :volume 100 :pan 64 :controllers (91 '(60)) ) ) SB. Quote
strum Posted November 7, 2024 Author Posted November 7, 2024 Thanks! That is cool. One question with the articulation approach. In OMN, can multiple notes with different articulations occur at the same point in time? thanks again Quote
strum Posted November 7, 2024 Author Posted November 7, 2024 thanks Isn't that 2 articulations on the same note or chord at one moment in time? I meant if 2 notes sound at the same moment in time, can one of them have one articulation, and the other note have a different articulation? Quote
strum Posted November 12, 2024 Author Posted November 12, 2024 So I think my assumption is correct. You can't have different articulations on 2 notes that occur at the same time in OMN. The issue is that e4 exists in 5 places on a guitar, on different strings, and they all have a different timbre. So in OMN if you have the chord c4e4g4, how do I represent this is played on 4th string, 3rd string, and 2nd string. I think I have come up with a clumsy solution. The idea would be to create an articulation for every string combination st-1, st-2, etc, st-6, st-65, st-64, etc. st-432. I would need 63 articulations for a 6 string guitar. Then I would need to parse chords, based on the articulation, and send that note to the proper single note voice. c4e4g4 st-432 -> would end up c4 on the string 4 voice e4 on the string 3 voice g4 on the string 2 voice Does this sound like a good approach? Quote
Stephane Boussuge Posted November 12, 2024 Posted November 12, 2024 you can also separate your chords into elements and send them separately for each strings. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.