2017-05-30 97 views
0

我試圖建立一個基本上是6弦吉他的替代調音數據庫的網站。我真正想要做的第一件事是獲得調音列表。如何在java中生成列表?

我的常數:

1)六根弦

2)最低的筆記可能是一個完美的四從標準調整(低E變成AB下來,一個字符串變成一個電子,d字符串變成股份公司等)。

3.)上部音符(現在)是主要的第三個以上標準調整(低e成爲g#,字符串變成c#,d字符串變成f#等)。

4.),這意味着每個串有一系列的10個可能的音符,其中的一些將在一圈(例如,低e和一個字符串之間:E,F,F#,G,G#)

所以給出的信息,我試圖構建一個列表全部可能的排列。

我試過使用Python的itertools,但我的筆記本電腦沒有很好地處理計算。所以我想也許java會有一些內置的,會更有用。

任何人都可以幫助我嗎?我是一個非常業餘的編碼器,所以任何幫助都會很棒。

感謝

編輯:這裏是我到目前爲止的代碼:

import java.util.Arrays; 
import java.util.List; 
import java.util.ArrayList; 
import java.util.Iterator; 

public class TuningList{ 
    public static void main(String[] args){ 

    List<String> string6 = Arrays.asList("B1", "C2", "C#2/Db2", "D2", "D#2/Eb2", "E2", "F2", "F#2/Gb2", "G2", "G#2/Ab2"); 
    List<String> string5 = Arrays.asList("E2", "F2", "F#2/Gb2", "G2", "G#2/Ab2", "A2", "A#2/Bb2", "B2", "C3", "C#3/Db3"); 
    List<String> string4 = Arrays.asList("A2", "A#2/Bb2", "B2", "C3", "C#3/Db3", "D3", "D#3/Eb3", "E3", "F3", "F#3/Gb3"); 
    List<String> string3 = Arrays.asList("D3", "D#3/Eb3", "E3", "F3", "F#3/Gb3", "G3", "G#3/Ab3", "A3", "A#3/Bb3", "B3"); 
    List<String> string2 = Arrays.asList("F#3/Gb3", "G3", "G#3/Ab3", "A3", "A#3/Bb3", "B3", "C4", "C#4/Db4", "D4", "D#4/Eb4"); 
    List<String> string1 = Arrays.asList("B3", "C4", "C#4/Db4", "D4", "D#4/Eb4", "E4", "F4", "F#4/Gb4", "G4", "G#4/Ab4"); 
} 
+2

所有可能的排列組合?這是要求很多不和諧。 –

+1

「構建了所有可能的排列列表」是一個常見的新手陷阱。對任何事物進行所有可能的排列並不是一個好主意,並且在實際上想要這樣做的情況下,根據需求生成排列幾乎總是比預先構建整個列表更好。 – user2357112

+0

「所有可能的排列?這是要求很多不和諧」是的,我知道!這就是點哈哈! 「一個常見的新手陷阱」我不懷疑它。但有可能嗎? –

回答

0

如果我正確理解你想調整標準從-4色調轉移到+3音調。

這是一個Javascript示例。

$ cat /tmp/strings.js 

var notes = [ 'a', 'a#', 'b', 'c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#' ]; 
var standardTuning = [ 'e', 'b', 'g', 'd', 'a', 'e' ]; 

for (var i = -7; i < 5; i++) { 
    var shiftedTuning = []; 

    standardTuning.forEach(function (e) { 
    var idx = notes.indexOf(e); 
    idx = (notes.length + idx + i) % notes.length; 
    shiftedTuning.push(notes [idx ]); 
    }) 
    console.log(shiftedTuning); 
} 

$ node /tmp/strings.js 

[ 'a', 'e', 'c', 'g', 'd', 'a' ] 
[ 'a#', 'f', 'c#', 'g#', 'd#', 'a#' ] 
[ 'b', 'f#', 'd', 'a', 'e', 'b' ] 
[ 'c', 'g', 'd#', 'a#', 'f', 'c' ] 
[ 'c#', 'g#', 'e', 'b', 'f#', 'c#' ] 
[ 'd', 'a', 'f', 'c', 'g', 'd' ] 
[ 'd#', 'a#', 'f#', 'c#', 'g#', 'd#' ] 
[ 'e', 'b', 'g', 'd', 'a', 'e' ] 
[ 'f', 'c', 'g#', 'd#', 'a#', 'f' ] 
[ 'f#', 'c#', 'a', 'e', 'b', 'f#' ] 
[ 'g', 'd', 'a#', 'f', 'c', 'g' ] 
[ 'g#', 'd#', 'b', 'f#', 'c#', 'g#' ] 
+0

我更新了我的帖子,以顯示一些代碼,如果有幫助。 –