Wenn Du mir den Oberheim Matrix 6 schenkst, könnte ich hier berichten ob Bitstream 3X damit funktioniert. :)helldriver schrieb:Also ich habe den auch den Bitstream 3X. Ich habe es aber nicht geschafft, damit den Oberheim Matrix 6 steuern, obwohl die Sysex Presets vorhanden sind. ... Ansonsten find ich ihn fast zu komplex. Gibt es einfache Tutorials wie man ihn benutzt? also speziell so Arpeggien und so sachen?
In der Bitstream 3X configuration software, bei Oberheim, unter 'Control value position 1 (V1)' da steht immer 5. Auch schon mit 6 dort probiert? Wäre einen Versuch wert. Testen, Ergebnis hier rückmelden. Danke.helldriver schrieb:Ich habe es aber nicht geschafft, damit den Oberheim Matrix 6 steuern, obwohl die Sysex Presets vorhanden sind.
/*
Example for Yamaha XG drum control on Bitstream 3X.
top row: coarse tune
second top row: volume
second bottom row: reverb send level
bottom row: low pass filter
faders: notes
Move the faders and turn the knobs above.
Generating valid Bitstream Pro files, *.bsl
File structure is as below, using K00..K48
On Bitstream 3X:
K00..31 are the 32 knobs, above
K32..39 are the 8 faders, below
K40..47 are the 8 mute buttons, on the right
K48 is the ribbon controller,
Be careful not getting messages as below if you have incompatible definitions:
Parameter check
Group 2 - Control 5
MIDI string length is out of range (1-21)
[MANUF].Yamaha.
[MODEL].RS7000.
[COMMENTS].Group A dedicated to tracks 1-8 / Group B dedicated to tracks 9-16 / Group C dedicated master effects.
[K00][G00].03.10.00.03.00.00.00.00.7F.B04A00.RS7K Cutof Tr 01.
[K00][G01].03.10.00.03.00.00.00.00.7F.B84A00.RS7K Cutof Tr 09.
[K00][G02].03.10.00.03.00.00.00.00.7F.B00000.RS7K .
or
[MANUF].All.
[MODEL].All that respond to CCs.
[COMMENTS].Default Library file.
[K00][G00].03.10.01.03.00.00.00.00.7F.BN00VV. CC # 000 .
[K00][G01].03.10.01.03.00.00.00.00.7F.B02800. CC # 040 .
[K00][G02].03.10.01.03.00.00.00.00.7F.B05000. CC # 080 .
or
[MANUF].All.
[MODEL].All that responds to NRPNs.
[COMMENTS].NRPNs and CCs.
[K00][G00].0B.10.00.07.00.00.00.00.7F.B0622063010600627F637F.NRPN CutOff Ch01.
[K00][G01].0B.10.00.07.00.00.00.00.7F.B0626363010600627F637F.NRPN Attack Ch01.
[K00][G02].0B.10.00.07.00.00.00.00.7F.B0626663010600627F637F.NRPN Releas Ch01.
or
[MANUF].Roland.
[MODEL].Juno 106.
[COMMENTS].SYSEXs and CCs.
[K00][G00].07.10.00.06.00.00.00.00.7F.F04132000000F7.J106 LFO Rat C01.
[K00][G01].07.10.00.06.00.00.00.00.7F.F04132080200F7.J106 LFO Mod C09.
[K00][G02].07.10.00.06.00.00.00.00.7F.F04132000500F7.J106 CutOff C01.
Pitchbend: E00000
CC#1 :Modulation: B00100
Note 36 :C2: 902400
Program Ch 1: C001
MMC Stop: F07F7F0601F7
MMC Play: F07F7F0602F7
MMC Deferred Play: F07F7F0603F7
MMC Fast Forward: F07F7F0604F7
MMC Rewind: F07F7F0605F7
MMC Rec Strobe: F07F7F0606F7
MMC Rec Exit: F07F7F0607F7
MMC Rec Ready: F07F7F0608F7
MMC Pause: F07F7F0609F7
MMC Eject: F07F7F060AF7
SYSEX
RPN
NRPN
*/
; setting general environment variables
#NoEnv
#SingleInstance force
#InstallKeybdHook
SendMode Input
SetTitleMatchMode, 2
DetectHiddenWindows, On
SetCapsLockState, AlwaysOff
Manufacture = [MANUF].Yamaha.
Model = [MODEL].Yamaha XG.
Comments = [COMMENTS].sequencer de.
SetFormat, Float, 02.0
; controls 00..48
i := 0 ; do mapping, then count i up to 49, if i > 48 break
i += 0.0
; groups, 0..20
g := 0
g += 0.0
Loop, 7
{
DeleteValue := A_Index - 1
FileDelete, %A_ScriptDir%\Bitstream%DeleteValue%.bsl
; header init
FileAppend,%Manufacture%`n, %A_ScriptDir%\Bitstream%DeleteValue%.bsl
FileAppend,%Model%`n, %A_ScriptDir%\Bitstream%DeleteValue%.bsl
FileAppend,%Comments%`n, %A_ScriptDir%\Bitstream%DeleteValue%.bsl
}
; knobs 00..48
Loop, 49
{
hexi := dec2hex(i)
StringReplace, hexi, hexi, 0x,,All
if (StrLen(hexi) == 1)
hexi := "0" . hexi
Loop, 21
{
count := Floor(g/3) ; splitting 21 groups into 7 files, each containing 3 groups
modg := "0" . mod(g,3)
; if (StrLen(g) == 1)
; g := "0" . g
;pitch := g*8 + 0..7
; if (modg == "00") ; notes on faders on group 00
; {
; MidiString = 90%hexi%00
; Group%modg% = [K%i%][G%modg%].03.10.01.03.00.00.00.00.7F.%MidiString%.%i% group %g% .
; }
; else if (modg == "01") ; drum reverb send level on faders on group 01
; {
; [K00][G00].07.10.01.07.00.00.00.00.7F.BN630E628D06VV.Surdo Mt Rev Snd.
; MidiString = BN630E62%hexi%06VV ; change N to 09 for midi channel 10
; MidiString = B9630E62%hexi%06VV
if (mod(i,8) == 0)
pitch := g*8 + 0
if (mod(i,8) == 1)
pitch := g*8 + 1
if (mod(i,8) == 2)
pitch := g*8 + 2
if (mod(i,8) == 3)
pitch := g*8 + 3
if (mod(i,8) == 4)
pitch := g*8 + 4
if (mod(i,8) == 5)
pitch := g*8 + 5
if (mod(i,8) == 6)
pitch := g*8 + 6
if (mod(i,8) == 7)
pitch := g*8 + 7
; highest row, 1A controls volume
if (i >= 0) && (i <= 7)
nrpnmsb := "18"
; second highest row, 14 controls low pass filter
if (i >= 8) && (i <= 15)
nrpnmsb := "1A"
; second lowest row, 18 controls coarse tune
if (i >= 16) && (i <= 23)
nrpnmsb := "1D"
; lowest row, 1D controls reverb send level
if (i >= 24) && (i <= 31)
nrpnmsb := "14"
; convert pitch to hex
hexpitch := dec2hex(pitch)
StringReplace, hexpitch, hexpitch, 0x,,All
if (StrLen(hexpitch) == 1)
hexpitch := "0" . hexpitch
MidiString = B963%nrpnmsb%B962%hexpitch%B906VV
Group%modg% = [K%i%][G%modg%].09.10.01.09.00.00.00.00.7F.%MidiString%.%i% group %g% .
; faders, generate note on events
if (i >= 32) && (i <= 39)
{
if (i == 32)
pitch := g*8 + 0
if (i == 33)
pitch := g*8 + 1
if (i == 34)
pitch := g*8 + 2
if (i == 35)
pitch := g*8 + 3
if (i == 36)
pitch := g*8 + 4
if (i == 37)
pitch := g*8 + 5
if (i == 38)
pitch := g*8 + 6
if (i == 39)
pitch := g*8 + 7
; convert pitch to hex
hexpitch := dec2hex(pitch)
StringReplace, hexpitch, hexpitch, 0x,,All
if (StrLen(hexpitch) == 1)
hexpitch := "0" . hexpitch
MidiString = 90%hexpitch%00
Group%modg% = [K%i%][G%modg%].03.10.01.03.00.00.00.00.7F.%MidiString%.%i% group %g% .
}
; 9 buttons generate notes
if (i >= 40) && (i <= 48)
{
if (i == 40)
pitch := g*8 + 0
if (i == 41)
pitch := g*8 + 1
if (i == 42)
pitch := g*8 + 2
if (i == 43)
pitch := g*8 + 3
if (i == 44)
pitch := g*8 + 4
if (i == 45)
pitch := g*8 + 5
if (i == 46)
pitch := g*8 + 6
if (i == 47)
pitch := g*8 + 7
if (i == 48)
pitch := g*8 + 8
; convert pitch to hex
hexpitch := dec2hex(pitch)
StringReplace, hexpitch, hexpitch, 0x,,All
if (StrLen(hexpitch) == 1)
hexpitch := "0" . hexpitch
MidiString = 90%hexpitch%00
Group%modg% = [K%i%][G%modg%].03.10.01.03.00.00.00.00.7F.%MidiString%.%i% group %g% .
}
Content := Group%modg%
; MsgBox, g:%g% modg:%modg% count:%count% --> Content:%Content%
FileAppend, %Content%`n, %A_ScriptDir%\Bitstream%count%.bsl
g++
g += 0.0
}
i++
i += 0.0
g := 0
}
ExitApp
dec2hex(n) {
oIF := A_FormatInteger
SetFormat,Integer, hex
n := StrLen(n+0) ? n+0 : n
SetFormat,Integer, % oIF
return n
}
hex2dec(n) {
x := ((substr(n,1,2)!="0x") ? "0x" : "") n
if ! StrLen(x+0)
return n
oIF := A_FormatInteger
SetFormat,Integer, d
x += 0
SetFormat,Integer, % oIF
return x
}
/*
Loading the generated 7 *.bsl files into Bitstream 3X via WaveIdea BS3X Configuration Software v1.5, for Windows
*/
; setting general environment variables
#NoEnv
#SingleInstance force
#InstallKeybdHook
SendMode Input
SetTitleMatchMode, 2
DetectHiddenWindows, On
SetCapsLockState, AlwaysOff
IfWinNotExist, WaveIdea BS3X Configuration software ahk_class wxWindowClassNR
{
MsgBox, Program WaveIdea BS3X Configuration software seems not to be running. Program will exit without doing anything.
ExitApp
}
else
{
;MsgBox, Ok WaveIdea config software exists, we can continue here.
i := 6
Loop,7
{
WinActivate, WaveIdea BS3X Configuration software ahk_class wxWindowClassNR
;MsgBox, config software should be active now.
Click, 567, 422 ; selecting Assign User & Mackie/Logic modes tab
; press alt-l,i for loading bitstream pro library file
Send, {altdown}l{altup}i
Sleep, 1100
File%i% = %A_ScriptDir%\Bitstream%i%.bsl
g := i * 3
; File6 = %A_ScriptDir%\Bitstream6.bsl
; File5 = %A_ScriptDir%\Bitstream5.bsl
; File4 = %A_ScriptDir%\Bitstream4.bsl
; File3 = %A_ScriptDir%\Bitstream3.bsl
; File2 = %A_ScriptDir%\Bitstream2.bsl
; File1 = %A_ScriptDir%\Bitstream1.bsl
; File0 = %A_ScriptDir%\Bitstream0.bsl
Target := File%i%
SplitPath, Target, name, dir, ext, name_no_ext, drive
;MsgBox, name_no_ext: %name_no_ext%
FileDelete, %A_ScriptDir%\%name_no_ext%.bs3
;MsgBox, File%i% is %Target% (from Target)
Send, %Target%{enter}
#IfWinActive, Parameter check
{
Send, {space}
}
Send, %name_no_ext%{enter}
; group is in ComboBox1
; what works, click twice, up/down for one step
if (i == 0)
break
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; group 0 copy paste
; go to group 0 = init
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {Home}
Loop, 1
{
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {up}
Sleep, 20
}
Sleep, 200
; copy group, alt-g,enter
WinActivate, WaveIdea BS3X Configuration software ahk_class wxWindowClassNR
Send, {altdown}g{altup}{enter}
Sleep, 200
; go to working group wg := g + 0
Click, 351, 61 ; group selection menu
Send, {Home}
wg := g + 0
Loop, %wg%
{
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {down}
Sleep, 20
}
Sleep, 200
; paste into working group wg, alt-g,p
WinActivate, WaveIdea BS3X Configuration software ahk_class wxWindowClassNR
Send, {altdown}g{altup}p
Sleep, 200
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; group 1 copy paste
; go to group 0 = init
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {Home}
Loop, 1
{
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {up}
Sleep, 20
}
; go to working group wg := g + 0
wg := 1
Loop, %wg%
{
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {down}
Sleep, 20
}
Sleep, 200
; copy group, alt-g,enter
WinActivate, WaveIdea BS3X Configuration software ahk_class wxWindowClassNR
Send, {altdown}g{altup}{enter}
Sleep, 200
; go to working group wg := g + 0
Click, 351, 61 ; group selection menu
Send, {Home}
wg := g + 1
Loop, %wg%
{
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {down}
Sleep, 20
}
Sleep, 200
; paste into working group wg, alt-g,p
WinActivate, WaveIdea BS3X Configuration software ahk_class wxWindowClassNR
Send, {altdown}g{altup}p
Sleep, 200
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; group 2 copy paste
; go to group 0 = init
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {Home}
Loop, 1
{
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {up}
Sleep, 20
}
; go to working group wg := g + 0
wg := 2
Loop, %wg%
{
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {down}
Sleep, 20
}
Sleep, 200
; copy group, alt-g,enter
WinActivate, WaveIdea BS3X Configuration software ahk_class wxWindowClassNR
Send, {altdown}g{altup}{enter}
Sleep, 200
; go to working group wg := g + 0
Click, 351, 61 ; group selection menu
Send, {Home}
wg := g + 2
Loop, %wg%
{
Click, 351, 61 ; group selection menu
Click, 351, 61 ; group selection menu
Send, {down}
Sleep, 20
}
Sleep, 200
; paste into working group wg, alt-g,p
WinActivate, WaveIdea BS3X Configuration software ahk_class wxWindowClassNR
Send, {altdown}g{altup}p
Sleep, 200
i--
}
ExitApp
}
TonE schrieb:Hier soll das ultimative Bitstream 3X Thread entstehen. :)
Sonnentiger schrieb:Danke für den Thread! Hab zwei von denen daheim, weil theoretisch verdammt mächtig, aber praktisch ist einfach die Software schleißig programmiert, wenn Du mich fragst.
roflcopta schrieb:https://github.com/waveidea/bs3x
![]()
Find ich auch gut! Kein modernes plastik in bonbon-farben...sturdy design
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.